From deb378c818cfd7019884047f4f673d4d2136449b Mon Sep 17 00:00:00 2001
From: BaiRiDreamer <12110415@mail.sustech.edu.cn>
Date: Wed, 8 Oct 2025 09:40:05 +0000
Subject: [PATCH] feat: add initial sk2decompile framework
Implementation details to be completed
---
sk2decompile/LLaMA-Factory/.dockerignore | 15 +
sk2decompile/LLaMA-Factory/.env.local | 42 +
sk2decompile/LLaMA-Factory/.gitattributes | 2 +
.../LLaMA-Factory/.github/CODE_OF_CONDUCT.md | 128 +
.../LLaMA-Factory/.github/CONTRIBUTING.md | 67 +
.../.github/ISSUE_TEMPLATE/1-bug-report.yml | 61 +
.../ISSUE_TEMPLATE/2-feature-request.yml | 41 +
.../.github/ISSUE_TEMPLATE/config.yml | 8 +
.../.github/PULL_REQUEST_TEMPLATE.md | 8 +
.../LLaMA-Factory/.github/SECURITY.md | 7 +
.../.github/workflows/docker.yml | 108 +
.../.github/workflows/label_issue.yml | 32 +
.../.github/workflows/publish.yml | 36 +
.../LLaMA-Factory/.github/workflows/tests.yml | 107 +
sk2decompile/LLaMA-Factory/.gitignore | 179 +
.../LLaMA-Factory/.pre-commit-config.yaml | 28 +
sk2decompile/LLaMA-Factory/README.md | 1 +
.../data/norm2code-examples.jsonl | 20 +
.../data/pseudo2norm-examples.jsonl | 20 +
.../SK2DECOMPILE/train/norm2code-example.yaml | 39 +
.../train/pseudo2norm-example.yaml | 39 +
sk2decompile/Preprocess/format.py | 99 +
sk2decompile/Preprocess/inf_type.py | 144 +
.../Preprocess/normalize_src_basedonpseudo.py | 212 +
sk2decompile/Preprocess/standard_c.txt | 1 +
sk2decompile/README.md | 195 +
.../data/humaneval_normsrcpseudo.json | 9641 +++
.../evaluation/data/mbpp_normsrcpseudo.json | 51138 ++++++++++++++++
sk2decompile/evaluation/evaluate_exe.py | 70 +
sk2decompile/evaluation/evaluate_r2i.py | 83 +
sk2decompile/evaluation/gpt_judge.py | 209 +
sk2decompile/evaluation/inf_type.py | 170 +
.../evaluation/metrics/cal_execute_rate.py | 102 +
sk2decompile/evaluation/stack.yaml | 66 +
sk2decompile/evaluation/template.txt | 74 +
sk2decompile/verl/.gemini/config.yaml | 10 +
sk2decompile/verl/.github/CODEOWNERS | 18 +
.../verl/.github/PULL_REQUEST_TEMPLATE.md | 40 +
sk2decompile/verl/.github/dependabot.yml | 9 +
sk2decompile/verl/.github/workflows/README.md | 68 +
.../verl/.github/workflows/check-pr-title.yml | 58 +
.../workflows/checkpoint_converter.yml | 136 +
.../verl/.github/workflows/cpu_unit_tests.yml | 83 +
.../.github/workflows/disabled/e2e_prime.yml | 66 +
sk2decompile/verl/.github/workflows/doc.yml | 100 +
.../verl/.github/workflows/e2e_ascend.yml | 142 +
.../verl/.github/workflows/e2e_dapo.yml | 112 +
.../.github/workflows/e2e_eval_aime24.yml | 146 +
.../.github/workflows/e2e_genrm_remote.yml | 105 +
.../.github/workflows/e2e_ppo_trainer.yml | 424 +
.../e2e_ppo_trainer_megatron_sglang.yml | 365 +
.../e2e_ppo_trainer_megatron_vllm.yml | 367 +
.../verl/.github/workflows/e2e_sft.yml | 148 +
.../verl/.github/workflows/e2e_spin.yml | 89 +
.../verl/.github/workflows/e2e_sppo.yml | 87 +
.../verl/.github/workflows/gpu_unit_tests.yml | 100 +
sk2decompile/verl/.github/workflows/model.yml | 144 +
.../.github/workflows/pre-commit-full.yml | 30 +
.../verl/.github/workflows/pre-commit.yml | 33 +
.../verl/.github/workflows/sanity.yml | 97 +
.../verl/.github/workflows/scorecard.yml | 66 +
.../verl/.github/workflows/secrets_scan.yml | 22 +
sk2decompile/verl/.github/workflows/sgl.yml | 142 +
.../.github/workflows/type-coverage-check.yml | 29 +
sk2decompile/verl/.github/workflows/vllm.yml | 124 +
sk2decompile/verl/.gitignore | 126 +
sk2decompile/verl/.pre-commit-config.yaml | 8 +
sk2decompile/verl/.readthedocs.yaml | 19 +
sk2decompile/verl/README.md | 1 +
.../data/sk2decompile-rl-examples.jsonl | 100 +
70 files changed, 66806 insertions(+)
create mode 100644 sk2decompile/LLaMA-Factory/.dockerignore
create mode 100644 sk2decompile/LLaMA-Factory/.env.local
create mode 100644 sk2decompile/LLaMA-Factory/.gitattributes
create mode 100644 sk2decompile/LLaMA-Factory/.github/CODE_OF_CONDUCT.md
create mode 100644 sk2decompile/LLaMA-Factory/.github/CONTRIBUTING.md
create mode 100644 sk2decompile/LLaMA-Factory/.github/ISSUE_TEMPLATE/1-bug-report.yml
create mode 100644 sk2decompile/LLaMA-Factory/.github/ISSUE_TEMPLATE/2-feature-request.yml
create mode 100644 sk2decompile/LLaMA-Factory/.github/ISSUE_TEMPLATE/config.yml
create mode 100644 sk2decompile/LLaMA-Factory/.github/PULL_REQUEST_TEMPLATE.md
create mode 100644 sk2decompile/LLaMA-Factory/.github/SECURITY.md
create mode 100644 sk2decompile/LLaMA-Factory/.github/workflows/docker.yml
create mode 100644 sk2decompile/LLaMA-Factory/.github/workflows/label_issue.yml
create mode 100644 sk2decompile/LLaMA-Factory/.github/workflows/publish.yml
create mode 100644 sk2decompile/LLaMA-Factory/.github/workflows/tests.yml
create mode 100644 sk2decompile/LLaMA-Factory/.gitignore
create mode 100644 sk2decompile/LLaMA-Factory/.pre-commit-config.yaml
create mode 100644 sk2decompile/LLaMA-Factory/README.md
create mode 100644 sk2decompile/LLaMA-Factory/SK2DECOMPILE/data/norm2code-examples.jsonl
create mode 100644 sk2decompile/LLaMA-Factory/SK2DECOMPILE/data/pseudo2norm-examples.jsonl
create mode 100644 sk2decompile/LLaMA-Factory/SK2DECOMPILE/train/norm2code-example.yaml
create mode 100644 sk2decompile/LLaMA-Factory/SK2DECOMPILE/train/pseudo2norm-example.yaml
create mode 100644 sk2decompile/Preprocess/format.py
create mode 100644 sk2decompile/Preprocess/inf_type.py
create mode 100644 sk2decompile/Preprocess/normalize_src_basedonpseudo.py
create mode 100644 sk2decompile/Preprocess/standard_c.txt
create mode 100644 sk2decompile/README.md
create mode 100644 sk2decompile/evaluation/data/humaneval_normsrcpseudo.json
create mode 100644 sk2decompile/evaluation/data/mbpp_normsrcpseudo.json
create mode 100644 sk2decompile/evaluation/evaluate_exe.py
create mode 100644 sk2decompile/evaluation/evaluate_r2i.py
create mode 100644 sk2decompile/evaluation/gpt_judge.py
create mode 100644 sk2decompile/evaluation/inf_type.py
create mode 100644 sk2decompile/evaluation/metrics/cal_execute_rate.py
create mode 100644 sk2decompile/evaluation/stack.yaml
create mode 100644 sk2decompile/evaluation/template.txt
create mode 100644 sk2decompile/verl/.gemini/config.yaml
create mode 100644 sk2decompile/verl/.github/CODEOWNERS
create mode 100644 sk2decompile/verl/.github/PULL_REQUEST_TEMPLATE.md
create mode 100644 sk2decompile/verl/.github/dependabot.yml
create mode 100644 sk2decompile/verl/.github/workflows/README.md
create mode 100644 sk2decompile/verl/.github/workflows/check-pr-title.yml
create mode 100644 sk2decompile/verl/.github/workflows/checkpoint_converter.yml
create mode 100644 sk2decompile/verl/.github/workflows/cpu_unit_tests.yml
create mode 100644 sk2decompile/verl/.github/workflows/disabled/e2e_prime.yml
create mode 100644 sk2decompile/verl/.github/workflows/doc.yml
create mode 100644 sk2decompile/verl/.github/workflows/e2e_ascend.yml
create mode 100644 sk2decompile/verl/.github/workflows/e2e_dapo.yml
create mode 100644 sk2decompile/verl/.github/workflows/e2e_eval_aime24.yml
create mode 100644 sk2decompile/verl/.github/workflows/e2e_genrm_remote.yml
create mode 100644 sk2decompile/verl/.github/workflows/e2e_ppo_trainer.yml
create mode 100644 sk2decompile/verl/.github/workflows/e2e_ppo_trainer_megatron_sglang.yml
create mode 100644 sk2decompile/verl/.github/workflows/e2e_ppo_trainer_megatron_vllm.yml
create mode 100644 sk2decompile/verl/.github/workflows/e2e_sft.yml
create mode 100644 sk2decompile/verl/.github/workflows/e2e_spin.yml
create mode 100644 sk2decompile/verl/.github/workflows/e2e_sppo.yml
create mode 100644 sk2decompile/verl/.github/workflows/gpu_unit_tests.yml
create mode 100644 sk2decompile/verl/.github/workflows/model.yml
create mode 100644 sk2decompile/verl/.github/workflows/pre-commit-full.yml
create mode 100644 sk2decompile/verl/.github/workflows/pre-commit.yml
create mode 100644 sk2decompile/verl/.github/workflows/sanity.yml
create mode 100644 sk2decompile/verl/.github/workflows/scorecard.yml
create mode 100644 sk2decompile/verl/.github/workflows/secrets_scan.yml
create mode 100644 sk2decompile/verl/.github/workflows/sgl.yml
create mode 100644 sk2decompile/verl/.github/workflows/type-coverage-check.yml
create mode 100644 sk2decompile/verl/.github/workflows/vllm.yml
create mode 100644 sk2decompile/verl/.gitignore
create mode 100644 sk2decompile/verl/.pre-commit-config.yaml
create mode 100644 sk2decompile/verl/.readthedocs.yaml
create mode 100644 sk2decompile/verl/README.md
create mode 100644 sk2decompile/verl/SK2DECOMPILE/data/sk2decompile-rl-examples.jsonl
diff --git a/sk2decompile/LLaMA-Factory/.dockerignore b/sk2decompile/LLaMA-Factory/.dockerignore
new file mode 100644
index 0000000..a07ec86
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.dockerignore
@@ -0,0 +1,15 @@
+.vscode
+.git
+.github
+.venv
+cache
+docker
+saves
+hf_cache
+ms_cache
+om_cache
+shared_data
+output
+.dockerignore
+.gitattributes
+.gitignore
diff --git a/sk2decompile/LLaMA-Factory/.env.local b/sk2decompile/LLaMA-Factory/.env.local
new file mode 100644
index 0000000..88ac8a4
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.env.local
@@ -0,0 +1,42 @@
+# Note: actually we do not support .env, just for reference
+# api
+API_HOST=
+API_PORT=
+API_KEY=
+API_MODEL_NAME=
+API_VERBOSE=
+FASTAPI_ROOT_PATH=
+MAX_CONCURRENT=
+# general
+DISABLE_VERSION_CHECK=
+FORCE_CHECK_IMPORTS=
+ALLOW_EXTRA_ARGS=
+LLAMAFACTORY_VERBOSITY=
+USE_MODELSCOPE_HUB=
+USE_OPENMIND_HUB=
+USE_RAY=
+RECORD_VRAM=
+OPTIM_TORCH=
+NPU_JIT_COMPILE=
+# torchrun
+FORCE_TORCHRUN=
+MASTER_ADDR=
+MASTER_PORT=
+NNODES=
+NODE_RANK=
+NPROC_PER_NODE=
+# wandb
+WANDB_DISABLED=
+WANDB_PROJECT=
+WANDB_API_KEY=
+# gradio ui
+GRADIO_SHARE=
+GRADIO_SERVER_NAME=
+GRADIO_SERVER_PORT=
+GRADIO_ROOT_PATH=
+GRADIO_IPV6=
+# setup
+ENABLE_SHORT_CONSOLE=
+# reserved (do not use)
+LLAMABOARD_ENABLED=
+LLAMABOARD_WORKDIR=
diff --git a/sk2decompile/LLaMA-Factory/.gitattributes b/sk2decompile/LLaMA-Factory/.gitattributes
new file mode 100644
index 0000000..dfe0770
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.gitattributes
@@ -0,0 +1,2 @@
+# Auto detect text files and perform LF normalization
+* text=auto
diff --git a/sk2decompile/LLaMA-Factory/.github/CODE_OF_CONDUCT.md b/sk2decompile/LLaMA-Factory/.github/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..c2035ce
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.github/CODE_OF_CONDUCT.md
@@ -0,0 +1,128 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, religion, or sexual identity
+and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the
+ overall community
+
+Examples of unacceptable behavior include:
+
+* The use of sexualized language or imagery, and sexual attention or
+ advances of any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or email
+ address, without their explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+`hoshihiyouga AT gmail DOT com`.
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series
+of actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or
+permanent ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within
+the community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.0, available at
+https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
+
+Community Impact Guidelines were inspired by [Mozilla's code of conduct
+enforcement ladder](https://github.com/mozilla/diversity).
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see the FAQ at
+https://www.contributor-covenant.org/faq. Translations are available at
+https://www.contributor-covenant.org/translations.
diff --git a/sk2decompile/LLaMA-Factory/.github/CONTRIBUTING.md b/sk2decompile/LLaMA-Factory/.github/CONTRIBUTING.md
new file mode 100644
index 0000000..507d666
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.github/CONTRIBUTING.md
@@ -0,0 +1,67 @@
+# Contributing to LLaMA Factory
+
+Everyone is welcome to contribute, and we value everybody's contribution. Code contributions are not the only way to help the community. Answering questions, helping others, and improving the documentation are also immensely valuable.
+
+It also helps us if you spread the word! Reference the library in blog posts about the awesome projects it made possible, shout out on Twitter every time it has helped you, or simply ⭐️ the repository to say thank you.
+
+However you choose to contribute, please be mindful and respect our [code of conduct](CODE_OF_CONDUCT.md).
+
+**This guide was heavily inspired by [transformers guide to contributing](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md).**
+
+## Ways to contribute
+
+There are several ways you can contribute to LLaMA Factory:
+
+* Fix outstanding issues with the existing code.
+* Submit issues related to bugs or desired new features.
+* Contribute to the examples or to the documentation.
+
+### Style guide
+
+LLaMA Factory follows the [Google Python Style Guide](https://google.github.io/styleguide/pyguide.html), check it for details.
+
+### Create a Pull Request
+
+1. Fork the [repository](https://github.com/hiyouga/LLaMA-Factory) by clicking on the [Fork](https://github.com/hiyouga/LLaMA-Factory/fork) button on the repository's page. This creates a copy of the code under your GitHub user account.
+
+2. Clone your fork to your local disk, and add the base repository as a remote:
+
+```bash
+git clone git@github.com:[username]/LLaMA-Factory.git
+cd LLaMA-Factory
+git remote add upstream https://github.com/hiyouga/LLaMA-Factory.git
+```
+
+3. Create a new branch to hold your development changes:
+
+```bash
+git checkout -b dev_your_branch
+```
+
+4. Set up a development environment by running the following command in a virtual environment:
+
+```bash
+pip install -e ".[dev]"
+```
+
+If LLaMA Factory was already installed in the virtual environment, remove it with `pip uninstall llamafactory` before reinstalling it in editable mode with the -e flag.
+
+5. Check code before commit:
+
+```bash
+make commit
+make style && make quality
+make test
+```
+
+6. Submit changes:
+
+```bash
+git add .
+git commit -m "commit message"
+git fetch upstream
+git rebase upstream/main
+git push -u origin dev_your_branch
+```
+
+7. Create a merge request from your branch `dev_your_branch` at [origin repo](https://github.com/hiyouga/LLaMA-Factory).
diff --git a/sk2decompile/LLaMA-Factory/.github/ISSUE_TEMPLATE/1-bug-report.yml b/sk2decompile/LLaMA-Factory/.github/ISSUE_TEMPLATE/1-bug-report.yml
new file mode 100644
index 0000000..a08596f
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.github/ISSUE_TEMPLATE/1-bug-report.yml
@@ -0,0 +1,61 @@
+name: "\U0001F41B Bug / help"
+description: Create a report to help us improve the LLaMA Factory
+labels: ["bug", "pending"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Issues included in **[FAQs](https://github.com/hiyouga/LLaMA-Factory/issues/4614)** or those with **insufficient** information may be closed without a response.
+ 已经包含在 **[常见问题](https://github.com/hiyouga/LLaMA-Factory/issues/4614)** 内或提供信息**不完整**的 issues 可能不会被回复。
+
+ - type: markdown
+ attributes:
+ value: |
+ Please do not create issues that are not related to framework bugs under this category, use **[Discussions](https://github.com/hiyouga/LLaMA-Factory/discussions/categories/q-a)** instead.
+ 请勿在此分类下创建和框架 bug 无关的 issues,训练问题求助请使用 **[讨论区](https://github.com/hiyouga/LLaMA-Factory/discussions/categories/q-a)**。
+
+ - type: checkboxes
+ id: reminder
+ attributes:
+ label: Reminder
+ description: |
+ Please ensure you have read the above rules carefully and searched the existing issues (including FAQs).
+ 请确保您已经认真阅读了上述规则并且搜索过现有的 issues(包括常见问题)。
+
+ options:
+ - label: I have read the above rules and searched the existing issues.
+ required: true
+
+ - type: textarea
+ id: system-info
+ validations:
+ required: true
+ attributes:
+ label: System Info
+ description: |
+ Please share your system info with us. You can run the command **llamafactory-cli env** and copy-paste its output below.
+ 请提供您的系统信息。您可以在命令行运行 **llamafactory-cli env** 并将其输出复制到该文本框中。
+
+ placeholder: llamafactory version, platform, python version, ...
+
+ - type: textarea
+ id: reproduction
+ validations:
+ required: true
+ attributes:
+ label: Reproduction
+ description: |
+ Please provide entry arguments, error messages and stack traces that reproduces the problem.
+ 请提供入口参数,错误日志以及异常堆栈以便于我们复现问题。
+
+ value: |
+ ```text
+ Put your message here.
+ ```
+
+ - type: textarea
+ id: others
+ validations:
+ required: false
+ attributes:
+ label: Others
diff --git a/sk2decompile/LLaMA-Factory/.github/ISSUE_TEMPLATE/2-feature-request.yml b/sk2decompile/LLaMA-Factory/.github/ISSUE_TEMPLATE/2-feature-request.yml
new file mode 100644
index 0000000..5d72271
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.github/ISSUE_TEMPLATE/2-feature-request.yml
@@ -0,0 +1,41 @@
+name: "\U0001F680 Feature request"
+description: Submit a request for a new feature
+labels: ["enhancement", "pending"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Please do not create issues that are not related to new features under this category.
+ 请勿在此分类下创建和新特性无关的 issues。
+
+ - type: checkboxes
+ id: reminder
+ attributes:
+ label: Reminder
+ description: |
+ Please ensure you have read the above rules carefully and searched the existing issues.
+ 请确保您已经认真阅读了上述规则并且搜索过现有的 issues。
+
+ options:
+ - label: I have read the above rules and searched the existing issues.
+ required: true
+
+ - type: textarea
+ id: description
+ validations:
+ required: true
+ attributes:
+ label: Description
+ description: |
+ A clear and concise description of the feature proposal.
+ 请详细描述您希望加入的新功能特性。
+
+ - type: textarea
+ id: contribution
+ validations:
+ required: false
+ attributes:
+ label: Pull Request
+ description: |
+ Have you already created the relevant PR and submitted the code?
+ 您是否已经创建了相关 PR 并提交了代码?
diff --git a/sk2decompile/LLaMA-Factory/.github/ISSUE_TEMPLATE/config.yml b/sk2decompile/LLaMA-Factory/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..1a77196
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,8 @@
+blank_issues_enabled: false
+contact_links:
+ - name: 📚 FAQs | 常见问题
+ url: https://github.com/hiyouga/LLaMA-Factory/issues/4614
+ about: Reading in advance is recommended | 建议提前阅读
+ - name: Discussions | 讨论区
+ url: https://github.com/hiyouga/LLaMA-Factory/discussions
+ about: Please ask fine-tuning questions here | 请在这里讨论训练问题
diff --git a/sk2decompile/LLaMA-Factory/.github/PULL_REQUEST_TEMPLATE.md b/sk2decompile/LLaMA-Factory/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..d23d6be
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,8 @@
+# What does this PR do?
+
+Fixes # (issue)
+
+## Before submitting
+
+- [ ] Did you read the [contributor guideline](https://github.com/hiyouga/LLaMA-Factory/blob/main/.github/CONTRIBUTING.md)?
+- [ ] Did you write any new necessary tests?
diff --git a/sk2decompile/LLaMA-Factory/.github/SECURITY.md b/sk2decompile/LLaMA-Factory/.github/SECURITY.md
new file mode 100644
index 0000000..d34728e
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.github/SECURITY.md
@@ -0,0 +1,7 @@
+# Reporting Security Issues
+
+To report a security issue, please use the GitHub Security Advisory ["Report a Vulnerability"](https://github.com/hiyouga/LLaMA-Factory/security/advisories/new) tab.
+
+We will send a response indicating the next steps in handling your report. After the initial reply to your report, the security team will keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance.
+
+Report security bugs in third-party modules to the person or team maintaining the module.
diff --git a/sk2decompile/LLaMA-Factory/.github/workflows/docker.yml b/sk2decompile/LLaMA-Factory/.github/workflows/docker.yml
new file mode 100644
index 0000000..f5e099f
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.github/workflows/docker.yml
@@ -0,0 +1,108 @@
+name: docker
+
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - "main"
+ paths:
+ - "**/*.py"
+ - "requirements.txt"
+ - "docker/**"
+ - ".github/workflows/*.yml"
+ pull_request:
+ branches:
+ - "main"
+ paths:
+ - "**/*.py"
+ - "requirements.txt"
+ - "docker/**"
+ - ".github/workflows/*.yml"
+
+jobs:
+ build:
+ strategy:
+ fail-fast: false
+ matrix:
+ device:
+ - "cuda"
+ - "npu"
+
+ runs-on: ubuntu-latest
+
+ concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.device }}
+ cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
+
+ environment:
+ name: docker
+ url: https://hub.docker.com/r/hiyouga/llamafactory
+
+ steps:
+ - name: Free up disk space
+ uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1
+ with:
+ tool-cache: true
+ docker-images: false
+
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: "3.9"
+
+ - name: Get llamafactory version
+ id: version
+ run: |
+ echo "tag=$(python setup.py --version | sed 's/\.dev0//')" >> "$GITHUB_OUTPUT"
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Login to Docker Hub
+ if: ${{ github.event_name != 'pull_request' }}
+ uses: docker/login-action@v3
+ with:
+ username: ${{ vars.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
+
+ - name: Login to Quay
+ if: ${{ github.event_name != 'pull_request' && matrix.device == 'npu' }}
+ uses: docker/login-action@v3
+ with:
+ registry: quay.io
+ username: ${{ vars.QUAY_ASCEND_USERNAME }}
+ password: ${{ secrets.QUAY_ASCEND_TOKEN }}
+
+ - name: Build and push Docker image (CUDA)
+ if: ${{ matrix.device == 'cuda' }}
+ uses: docker/build-push-action@v6
+ with:
+ context: .
+ file: ./docker/docker-cuda/Dockerfile
+ build-args: |
+ EXTRAS=metrics,deepspeed,liger-kernel
+ push: ${{ github.event_name != 'pull_request' }}
+ tags: |
+ docker.io/hiyouga/llamafactory:latest
+ docker.io/hiyouga/llamafactory:${{ steps.version.outputs.tag }}
+ cache-from: type=gha
+ cache-to: type=gha,mode=max
+
+ - name: Build and push Docker image (NPU)
+ if: ${{ matrix.device == 'npu' }}
+ uses: docker/build-push-action@v6
+ with:
+ context: .
+ platforms: linux/amd64,linux/arm64
+ file: ./docker/docker-npu/Dockerfile
+ push: ${{ github.event_name != 'pull_request' }}
+ tags: |
+ docker.io/hiyouga/llamafactory:latest-npu-a2
+ docker.io/hiyouga/llamafactory:${{ steps.version.outputs.tag }}-npu-a2
+ quay.io/ascend/llamafactory:latest-npu-a2
+ quay.io/ascend/llamafactory:${{ steps.version.outputs.tag }}-npu-a2
+ cache-from: type=gha
+ cache-to: type=gha,mode=max
diff --git a/sk2decompile/LLaMA-Factory/.github/workflows/label_issue.yml b/sk2decompile/LLaMA-Factory/.github/workflows/label_issue.yml
new file mode 100644
index 0000000..3d0424c
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.github/workflows/label_issue.yml
@@ -0,0 +1,32 @@
+name: label_issue
+
+on:
+ issues:
+ types:
+ - opened
+
+jobs:
+ label_issue:
+ runs-on: ubuntu-latest
+
+ permissions:
+ issues: write
+
+ steps:
+ - env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ ISSUE_URL: ${{ github.event.issue.html_url }}
+ ISSUE_TITLE: ${{ github.event.issue.title }}
+ run: |
+ LABEL=""
+ NPU_KEYWORDS=(npu huawei ascend 华为 昇腾 910)
+ ISSUE_TITLE_LOWER=$(echo $ISSUE_TITLE | tr '[:upper:]' '[:lower:]')
+ for KEYWORD in ${NPU_KEYWORDS[@]}; do
+ if [[ $ISSUE_TITLE_LOWER == *$KEYWORD* ]] && [[ $ISSUE_TITLE_LOWER != *input* ]]; then
+ LABEL="npu"
+ break
+ fi
+ done
+ if [ -n "$LABEL" ]; then
+ gh issue edit $ISSUE_URL --add-label $LABEL
+ fi
diff --git a/sk2decompile/LLaMA-Factory/.github/workflows/publish.yml b/sk2decompile/LLaMA-Factory/.github/workflows/publish.yml
new file mode 100644
index 0000000..c3f729a
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.github/workflows/publish.yml
@@ -0,0 +1,36 @@
+name: publish
+
+on:
+ workflow_dispatch:
+ release:
+ types:
+ - published
+
+jobs:
+ publish:
+ name: Upload release to PyPI
+
+ runs-on: ubuntu-latest
+
+ environment:
+ name: release
+ url: https://pypi.org/p/llamafactory
+
+ permissions:
+ id-token: write
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: "3.9"
+
+ - name: Build package
+ run: |
+ make build
+
+ - name: Publish package
+ uses: pypa/gh-action-pypi-publish@release/v1
diff --git a/sk2decompile/LLaMA-Factory/.github/workflows/tests.yml b/sk2decompile/LLaMA-Factory/.github/workflows/tests.yml
new file mode 100644
index 0000000..e7cddda
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.github/workflows/tests.yml
@@ -0,0 +1,107 @@
+name: tests
+
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - "main"
+ paths:
+ - "**/*.py"
+ - "requirements.txt"
+ - ".github/workflows/*.yml"
+ pull_request:
+ branches:
+ - "main"
+ paths:
+ - "**/*.py"
+ - "requirements.txt"
+ - ".github/workflows/*.yml"
+
+jobs:
+ tests:
+ strategy:
+ fail-fast: false
+ matrix:
+ python:
+ - "3.9"
+ - "3.10"
+ - "3.11"
+ - "3.12"
+ os:
+ - "ubuntu-latest"
+ - "windows-latest"
+ - "macos-13"
+ transformers:
+ - null
+ include: # test backward compatibility
+ - python: "3.9"
+ os: "ubuntu-latest"
+ transformers: "4.49.0"
+ - python: "3.9"
+ os: "ubuntu-latest"
+ transformers: "4.51.0"
+ - python: "3.9"
+ os: "ubuntu-latest"
+ transformers: "4.53.0"
+
+ runs-on: ${{ matrix.os }}
+
+ concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.os }}-${{ matrix.python }}-${{ matrix.transformers }}
+ cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
+
+ env:
+ HF_TOKEN: ${{ secrets.HF_TOKEN }}
+ OS_NAME: ${{ matrix.os }}
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: ${{ matrix.python }}
+ cache: "pip"
+ cache-dependency-path: "**/requirements*.txt"
+
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ python -m pip install ".[torch,dev]"
+
+ - name: Install transformers
+ if: ${{ matrix.transformers }}
+ run: |
+ python -m pip install "transformers==${{ matrix.transformers }}"
+
+ - name: Install transformers to avoid mac os ci errors
+ if: ${{ matrix.os == 'macos-13' }}
+ run: |
+ python -m pip install "transformers<=4.51.3"
+
+ - name: Cache files
+ id: hf-hub-cache
+ uses: actions/cache@v4
+ with:
+ path: ${{ runner.temp }}/huggingface
+ key: huggingface-${{ matrix.os }}-${{ matrix.python }}-${{ matrix.transformers }}-${{ hashFiles('tests/version.txt') }}
+
+ - name: Check quality
+ run: |
+ make style && make quality
+
+ - name: Check license
+ run: |
+ make license
+
+ - name: Check build
+ run: |
+ make build
+
+ - name: Test with pytest
+ run: |
+ make test
+ env:
+ HF_HOME: ${{ runner.temp }}/huggingface
+ HF_HUB_OFFLINE: "${{ steps.hf-hub-cache.outputs.cache-hit == 'true' && '1' || '0' }}"
diff --git a/sk2decompile/LLaMA-Factory/.gitignore b/sk2decompile/LLaMA-Factory/.gitignore
new file mode 100644
index 0000000..0a3a47b
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.gitignore
@@ -0,0 +1,179 @@
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+cover/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+.pybuilder/
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+# For a library or package, you might want to ignore these files since the code is
+# intended to run in multiple environments; otherwise, check them in:
+# .python-version
+
+# pipenv
+# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+# However, in case of collaboration, if having platform-specific dependencies or dependencies
+# having no cross-platform support, pipenv may install dependencies that don't work, or not
+# install all needed dependencies.
+#Pipfile.lock
+
+# poetry
+# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
+# This is especially recommended for binary packages to ensure reproducibility, and is more
+# commonly ignored for libraries.
+# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
+#poetry.lock
+
+# pdm
+# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
+#pdm.lock
+# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
+# in version control.
+# https://pdm.fming.dev/#use-with-ide
+.pdm.toml
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# pytype static type analyzer
+.pytype/
+
+# Cython debug symbols
+cython_debug/
+
+# PyCharm
+# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
+# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
+# and can be added to the global gitignore or merged into this file. For a more nuclear
+# option (not recommended) you can uncomment the following to ignore the entire idea folder.
+.idea/
+
+# vscode
+.vscode/
+
+# uv
+uv.lock
+
+# custom .gitignore
+hf_cache/
+ms_cache/
+om_cache/
+cache/
+config/
+saves/
+output/
+wandb/
+swanlog/
+generated_predictions.jsonl
+predictions_score.json
diff --git a/sk2decompile/LLaMA-Factory/.pre-commit-config.yaml b/sk2decompile/LLaMA-Factory/.pre-commit-config.yaml
new file mode 100644
index 0000000..cbe361e
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/.pre-commit-config.yaml
@@ -0,0 +1,28 @@
+repos:
+- repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v5.0.0
+ hooks:
+ - id: check-ast
+ - id: check-added-large-files
+ args: ['--maxkb=25000']
+ - id: check-merge-conflict
+ - id: check-yaml
+ - id: debug-statements
+ - id: end-of-file-fixer
+ - id: trailing-whitespace
+ args: [--markdown-linebreak-ext=md]
+ - id: no-commit-to-branch
+ args: ['--branch', 'main']
+
+- repo: https://github.com/asottile/pyupgrade
+ rev: v3.17.0
+ hooks:
+ - id: pyupgrade
+ args: [--py38-plus]
+
+- repo: https://github.com/astral-sh/ruff-pre-commit
+ rev: v0.6.9
+ hooks:
+ - id: ruff
+ args: [--fix]
+ - id: ruff-format
diff --git a/sk2decompile/LLaMA-Factory/README.md b/sk2decompile/LLaMA-Factory/README.md
new file mode 100644
index 0000000..3775d44
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/README.md
@@ -0,0 +1 @@
+Waitting to do
\ No newline at end of file
diff --git a/sk2decompile/LLaMA-Factory/SK2DECOMPILE/data/norm2code-examples.jsonl b/sk2decompile/LLaMA-Factory/SK2DECOMPILE/data/norm2code-examples.jsonl
new file mode 100644
index 0000000..a5cc5f4
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/SK2DECOMPILE/data/norm2code-examples.jsonl
@@ -0,0 +1,20 @@
+{"instruction": "", "input": "# This is the normalized code:\nstatic bool func1(struct type1 *var1, struct type2 *var2, const char *var3) {\n if (var2->field1->field2 & var4) {\n if (func2(\"RTSP/\", var3, 5)) return TRUE;\n return FALSE;\n }\n return func3(var1, var3);\n}\n# What is the source code?\n", "output": "static bool checkprotoprefix(struct SessionHandle *data,\n struct connectdata *conn, const char *s) {\n#ifndef CURL_DISABLE_RTSP\n if (conn->handler->protocol & CURLPROTO_RTSP) return checkrtspprefix(data, s);\n#else\n (void)conn;\n#endif\n return checkhttpprefix(data, s);\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nstatic type1 func1(type2 *var1, type3 *var2) {\n type4 *var3;\n int var4;\n var4 = _dbus_string_get_length(var2);\n if (!_dbus_string_append_byte(var2, 'a')) goto oom;\n if (!_dbus_string_append(var2, \"{i\")) goto oom;\n var3 = _dbus_list_get_first(&var1->field1);\n if (var3->field2->field3) {\n if (!var3->field2->field3(var3, var2)) goto oom;\n } else {\n if (!_dbus_string_append_byte(var2, var3->field2->field4)) goto oom;\n }\n if (!_dbus_string_append_byte(var2, '}')) goto oom;\n return TRUE;\noom:\n _dbus_string_set_length(var2, var4);\n return FALSE;\n}\n# What is the source code?\n", "output": "static dbus_bool_t dict_build_signature(TestTypeNode *node, DBusString *str) {\n TestTypeNodeContainer *container = (TestTypeNodeContainer *)node;\n int orig_len;\n orig_len = _dbus_string_get_length(str);\n if (!_dbus_string_append_byte(str, DBUS_TYPE_ARRAY)) goto oom;\n if (!_dbus_string_append(\n str, DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING DBUS_TYPE_INT32_AS_STRING))\n goto oom;\n if (!node_build_signature(_dbus_list_get_first(&container->children), str))\n goto oom;\n if (!_dbus_string_append_byte(str, DBUS_DICT_ENTRY_END_CHAR)) goto oom;\n return TRUE;\noom:\n _dbus_string_set_length(str, orig_len);\n return FALSE;\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nint compiler_addglobal(type1 *var1, type2 *var2, type3 *var3) {\n int var4 = compiler_findglobal(var1, var3, NULL);\n if (var4 == -1) {\n var4 = program_addglobal(var1->field1, var3);\n type3 *var5 = program_internsymbol(var1->field1, var3);\n if (dictionary_insert(&var1->field2, var5, func1(var4))) {\n debugannotation_setglobal(&var1->field1->field3, var4, var3);\n }\n }\n return var4;\n}\n# What is the source code?\n", "output": "globalindx compiler_addglobal(compiler *c, syntaxtreenode *node, value symbol) {\n globalindx indx = compiler_findglobal(c, symbol, false);\n if (indx == GLOBAL_UNALLOCATED) {\n indx = program_addglobal(c->out, symbol);\n value key = program_internsymbol(c->out, symbol);\n if (dictionary_insert(&c->globals, key, MORPHO_INTEGER(indx))) {\n debugannotation_setglobal(&c->out->annotations, indx, symbol);\n }\n }\n return indx;\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nstatic int func1(int var1, int var2, int var3) {\n int var4 = 0;\n int var5;\n unsigned char *var6 = var7;\n unsigned char *var8 = var9;\n for (var5 = 0; var5 < var1 * var2; var5++) {\n if (var6[var5] != var8[var5]) {\n if (var6[var5] > var8[var5]) {\n if (var6[var5] - var3 < var8[var5]) {\n var6[var5] = var8[var5];\n } else {\n var6[var5] -= var3;\n }\n } else {\n if (var6[var5] + var3 > var8[var5]) {\n var6[var5] = var8[var5];\n } else {\n var6[var5] += var3;\n }\n }\n var4 = 1;\n }\n }\n return !var4;\n}\n# What is the source code?\n", "output": "int wipe_doColorXForm(int width, int height, int ticks) {\n boolean changed;\n pixel_t* w;\n pixel_t* e;\n int newval;\n changed = false;\n w = wipe_scr;\n e = wipe_scr_end;\n while (w != wipe_scr + width * height) {\n if (*w != *e) {\n if (*w > *e) {\n newval = *w - ticks;\n if (newval < *e)\n *w = *e;\n else\n *w = newval;\n changed = true;\n } else if (*w < *e) {\n newval = *w + ticks;\n if (newval > *e)\n *w = *e;\n else\n *w = newval;\n changed = true;\n }\n }\n w++;\n e++;\n }\n return !changed;\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nsize_t func1(const unsigned char *var1, const unsigned char *var2, size_t var3) {\n size_t var4, var5;\n var4 = (((size_t)var2) + 15) & ~15;\n var5 = var4 - (size_t)var2;\n if (var5 < var3) {\n for (size_t var6 = 0; var6 < var5; var6++) {\n unsigned char var7 = var2[var6];\n if (var7 < 128 && (var1[var7 >> 3] & (1 << (var7 & 7)))) return var6;\n }\n } else {\n var5 = var3;\n }\n size_t var8 = var3 - var5;\n if (var8 >= 16) {\n for (size_t var6 = 0; var6 < var8 / 16; var6++) {\n unsigned char var9[16];\n for (size_t var10 = 0; var10 < 16; var10++) {\n unsigned char var7 = var2[var6 * 16 + var10];\n var9[var10] = var7 < 128 ? var1[var7 >> 3] & (1 << (var7 & 7)) : 0;\n }\n for (size_t var10 = 0; var10 < 16; var10++) {\n if (var9[var10] == 0) continue;\n unsigned char var7 = var2[var6 * 16 + var10];\n if (var7 < 128) return var6 * 16 + var10;\n }\n }\n var5 = var8 & ~15;\n }\n for (size_t var6 = var5; var6 < var3; var6++) {\n unsigned char var7 = var2[var6];\n if (var7 < 128 && (var1[var7 >> 3] & (1 << (var7 & 7)))) return var6;\n }\n return var3;\n}\n# What is the source code?\n", "output": "size_t find_FildeshMascii(const FildeshMascii* mascii, const char* s,\n size_t n) {\n size_t i;\n const FildeshMascii* t =\n (const FildeshMascii*)(((uintptr_t)s + 15) & ~(uintptr_t)15);\n const size_t t_offset =\n ((uintptr_t)t - (uintptr_t)s >= n ? n : (uintptr_t)t - (uintptr_t)s);\n const size_t t_count = ((n - t_offset) / 16);\n for (i = 0; i < t_offset; ++i) {\n if (get_FildeshMascii(mascii, (unsigned char)s[i])) {\n return i;\n }\n }\n for (i = 0; i < t_count; ++i) {\n unsigned idx = get16_FildeshMascii(*mascii, t[i]);\n if (idx < 16) {\n return t_offset + 16 * i + (size_t)idx;\n }\n }\n for (i = t_offset + 16 * t_count; i < n; ++i) {\n if (get_FildeshMascii(mascii, (unsigned char)s[i])) {\n return i;\n }\n }\n return n;\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nstatic const char* func1(unsigned short var1) {\n switch (var1 & 0x0110) {\n case 0x0000:\n return \"Request\";\n case 0x0100:\n return \"Success Response\";\n case 0x0110:\n return \"Error Response\";\n case 0x0010:\n return \"Indication\";\n default:\n return \"???\";\n }\n}\n# What is the source code?\n", "output": "const char *stun_class_name(uint16_t type) {\n if (STUN_IS_REQUEST(type))\n return \"Request\";\n else if (STUN_IS_SUCCESS_RESPONSE(type))\n return \"Success Response\";\n else if (STUN_IS_ERROR_RESPONSE(type))\n return \"Error Response\";\n else if (STUN_IS_INDICATION(type))\n return \"Indication\";\n else\n return \"???\";\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nvoid func_timer_use(type1 *var1, type1 *var2, type1 *var3) {\n if (!var1 || !var3) {\n return;\n }\n var1->field1 = var3;\n if (var1->field2) {\n var1->field2 = 0;\n return;\n }\n if (var1->field3) {\n var1->field2 = var4.field4 + var1->field3;\n return;\n }\n func1(var1);\n}\n# What is the source code?\n", "output": "void func_timer_use(edict_t *self, edict_t *other, edict_t *activator) {\n if (!self || !activator) {\n return;\n }\n self->activator = activator;\n if (self->nextthink) {\n self->nextthink = 0;\n return;\n }\n if (self->delay)\n self->nextthink = level.time + self->delay;\n else\n func_timer_think(self);\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nstatic int func1(const char *var1, const char *var2, const char **var3) {\n int var4 = 0;\n size_t var5;\n int var6;\n log_debug(\"Check %s/%s against %s(%d)\", var1, var2, *var3, func2(*var3));\n var5 = func2(*var3);\n if (var5) {\n if (var5 == 1 && **var3 == '*') {\n (*var3)++;\n var4 = 1;\n } else {\n var6 = func3(var1, *var3, var5);\n *var3 += var5;\n if (var6) var4 = 1;\n }\n }\n if (**var3 == '/') {\n (*var3)++;\n var5 = func2(*var3);\n if (var5) {\n if (var5 == 1 && **var3 == '*')\n var6 = 1;\n else\n var6 = func3(var2, *var3, var5);\n } else\n var6 = 0;\n *var3 += var5;\n var4 &= var6;\n }\n log_debug(\"%satch!\", var4 ? \"M\" : \"No m\");\n return var4;\n}\n# What is the source code?\n", "output": "int _runCommand(const char *origCommand, const abl_info *info,\n int(execFun)(char *const arg[])) {\n int err = 0;\n int bufSize = 0;\n int argNum = 0;\n char **result = NULL;\n char **substResult = NULL;\n char *command = NULL;\n if (!origCommand || !*origCommand) return 0;\n command = strdup(origCommand);\n if (!command) return 1;\n argNum = splitCommand(command, NULL);\n if (argNum == 0) goto cleanup;\n if (argNum < 0) {\n err = 1;\n goto cleanup;\n }\n result = malloc((argNum + 1) * sizeof(char *));\n substResult = malloc((argNum + 1) * sizeof(char *));\n memset(result, 0, (argNum + 1) * sizeof(char *));\n memset(substResult, 0, (argNum + 1) * sizeof(char *));\n argNum = splitCommand(command, result);\n int partIndex = 0;\n while (result[partIndex]) {\n bufSize = prepare_string(result[partIndex], info, NULL);\n if (bufSize <= 0) {\n log_warning(\"failed to substitute %s.\", result[partIndex]);\n err = 1;\n goto cleanup;\n }\n if (bufSize > COMMAND_SIZE) {\n log_warning(\"command length error.\");\n goto cleanup;\n }\n substResult[partIndex] = malloc(bufSize * sizeof(char));\n if (substResult[partIndex] == NULL) {\n err = 1;\n goto cleanup;\n }\n bufSize = prepare_string(result[partIndex], info, substResult[partIndex]);\n ++partIndex;\n }\n err = execFun(substResult);\ncleanup:\n if (result) {\n free(result);\n }\n if (substResult) {\n partIndex = 0;\n while (substResult[partIndex]) {\n free(substResult[partIndex]);\n ++partIndex;\n }\n free(substResult);\n }\n if (command) free(command);\n return err;\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\ntype1 eb_open_narrow_font_file(type2 *var1, int var2) {\n type3 *var3;\n char var4[var5];\n int var6;\n int var7;\n func1((\"in: eb_open_narrow_font(book=%d, font_code=%d)\", (int)var1->field1,\n var2));\n var3 = var1->field2 + var2;\n if (var3->field3 == -1) goto failed;\n if (zio_file(var3->field4) >= 0) goto succeeded;\n var6 = -1;\n if (var1->field5 == var8) {\n if (var3->field6) {\n if (zio_mode(var3->field4) != -1) var6 = var9;\n } else {\n var6 = zio_mode(var3->field7);\n }\n eb_compose_path_name2(var1->field8, var3->field9, var3->field10, var4);\n } else {\n if (var3->field6) {\n if (zio_mode(var3->field4) != -1) var6 = var9;\n eb_compose_path_name3(var1->field8, var3->field9, var3->field10,\n var3->field11, var4);\n } else {\n eb_canonicalize_file_name(var3->field11);\n if (eb_find_file_name3(var1->field8, var3->field9, var3->field10,\n var3->field11, var3->field11) != var10)\n goto failed;\n eb_compose_path_name3(var1->field8, var3->field9, var3->field10,\n var3->field11, var4);\n eb_path_name_zio_code(var4, var11, &var6);\n }\n }\n if (var6 != -1) {\n var7 = zio_open(var3->field4, var4, var6);\n if (var7 < 0) goto failed;\n }\nsucceeded:\n func1((\"out: eb_open_narrow_font_file(file=%d) = %s\", zio_file(var3->field4),\n eb_error_string(var10)));\n return var10;\nfailed:\n func1((\"out: eb_open_narrow_font_file() = %s\", eb_error_string(var12)));\n return var12;\n}\n# What is the source code?\n", "output": "EB_Error_Code eb_open_narrow_font_file(EB_Book *book, EB_Font_Code font_code) {\n EB_Error_Code error_code;\n EB_Subbook *subbook;\n EB_Font *narrow_font;\n char font_path_name[EB_MAX_PATH_LENGTH + 1];\n Zio_Code zio_code;\n LOG((\"in: eb_open_narrow_font(book=%d, font_code=%d)\", (int)book->code,\n (int)font_code));\n subbook = book->subbook_current;\n narrow_font = subbook->narrow_fonts + font_code;\n if (narrow_font->font_code == EB_FONT_INVALID) {\n error_code = EB_ERR_FAIL_OPEN_FONT;\n goto failed;\n }\n if (0 <= zio_file(&narrow_font->zio)) goto succeeded;\n zio_code = ZIO_INVALID;\n if (book->disc_code == EB_DISC_EB) {\n if (narrow_font->initialized) {\n if (zio_mode(&narrow_font->zio) != ZIO_INVALID) zio_code = ZIO_REOPEN;\n } else {\n zio_code = zio_mode(&subbook->text_zio);\n }\n eb_compose_path_name2(book->path, subbook->directory_name,\n subbook->text_file_name, font_path_name);\n } else {\n if (narrow_font->initialized) {\n if (zio_mode(&narrow_font->zio) != ZIO_INVALID) zio_code = ZIO_REOPEN;\n eb_compose_path_name3(book->path, subbook->directory_name,\n subbook->gaiji_directory_name,\n narrow_font->file_name, font_path_name);\n } else {\n eb_canonicalize_file_name(narrow_font->file_name);\n if (eb_find_file_name3(book->path, subbook->directory_name,\n subbook->gaiji_directory_name,\n narrow_font->file_name,\n narrow_font->file_name) != EB_SUCCESS) {\n error_code = EB_ERR_FAIL_OPEN_FONT;\n goto failed;\n }\n eb_compose_path_name3(book->path, subbook->directory_name,\n subbook->gaiji_directory_name,\n narrow_font->file_name, font_path_name);\n eb_path_name_zio_code(font_path_name, ZIO_PLAIN, &zio_code);\n }\n }\n if (zio_code != ZIO_INVALID &&\n zio_open(&narrow_font->zio, font_path_name, zio_code) < 0) {\n error_code = EB_ERR_FAIL_OPEN_FONT;\n goto failed;\n }\nsucceeded:\n LOG((\"out: eb_open_narrow_font_file(file=%d) = %s\",\n zio_file(&narrow_font->zio), eb_error_string(EB_SUCCESS)));\n return EB_SUCCESS;\nfailed:\n LOG((\"out: eb_open_narrow_font_file() = %s\", eb_error_string(error_code)));\n return error_code;\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nstatic int func1(type1* var1) {\n int var2, var3;\n type2* var4;\n assert(!func2(var1));\n var2 = *var1->field1;\n assert(!func3(var1, var2));\n func4(4, var2, \"popped\");\n var4 = func5(var1, var2);\n assert(!var4->field2);\n var4->field2 = -1;\n var3 = func6(var1);\n if (var3) {\n var4 = func5(var1, var3);\n assert(var4->field2 == var3);\n var4->field2 = 0;\n *var1->field1 = var3;\n func7(var1, var3);\n } else\n assert(var2 == var3);\n return var2;\n}\n# What is the source code?\n", "output": "static int lglpopesched(LGL* lgl) {\n Stk* s = &lgl->esched;\n int res, last, cnt, *p;\n EVar* ev;\n assert(!lglmtstk(s));\n res = *s->start;\n assert(!lglifrozen(lgl, res));\n LOGESCHED(4, res, \"popped\");\n ev = lglevar(lgl, res);\n assert(!ev->pos);\n ev->pos = -1;\n last = lglpopstk(s);\n cnt = lglcntstk(s);\n if (!cnt) {\n assert(last == res);\n return res;\n }\n p = lglepos(lgl, last);\n assert(*p == cnt);\n *p = 0;\n *s->start = last;\n lgledown(lgl, last);\n return res;\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nssize_t func1(const type1 *var1, char *var2, size_t var3) {\n size_t var4;\n ssize_t var5 = -1;\n type2 assert(type3 != NULL);\n if (NULL == var1->field1)\n func2(var6, var7, var8, \"no filename available for that reference\");\n var4 = strlen(var1->field1);\n assert(var4 <= var9);\n if (var2) {\n var4 = func3(var4, var3 - 1);\n func4(var2, var1->field1, var4);\n var2[var4] = '\\0';\n }\n var5 = (ssize_t)var4 + 1;\nvar10:\n var11(type4)\n}\n# What is the source code?\n", "output": "ssize_t H5R__get_file_name(const H5R_ref_priv_t *ref, char *buf, size_t size) {\n size_t copy_len;\n ssize_t ret_value = -1;\n FUNC_ENTER_PACKAGE\n assert(ref != NULL);\n if (!ref->info.obj.filename)\n HGOTO_ERROR(H5E_REFERENCE, H5E_ARGS, (-1),\n \"no filename available for that reference\");\n copy_len = strlen(ref->info.obj.filename);\n assert(copy_len <= H5R_MAX_STRING_LEN);\n if (buf) {\n copy_len = MIN(copy_len, size - 1);\n H5MM_memcpy(buf, ref->info.obj.filename, copy_len);\n buf[copy_len] = '\\0';\n }\n ret_value = (ssize_t)(copy_len + 1);\ndone:\n FUNC_LEAVE_NOAPI(ret_value)\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nstatic void func1(type1 *var1, type2 *var2) {\n static int var3 = 0;\n static char *var4[10];\n int var5 = var1->field1 == var1->field2;\n if (!var3) {\n var4[0] = func2(\"_Undo\");\n var4[2] = func2(\"Cu_t\");\n var4[4] = func2(\"_Copy\");\n var4[5] = func2(\"_Paste\");\n var4[7] = func2(\"_Save in UTF8\");\n var4[8] = func2(\"Save in _UCS2\");\n var4[9] = func2(\"_Import\");\n var3 = true;\n }\n var4[1] = var1->field3 == NULL ? \"F\" : \"\";\n var4[3] = var5 ? \"T\" : \"\";\n var4[5] = var5 ? \"T\" : \"\";\n var4[6] = func3(var1->field4, true, \"text/plain;charset=ISO-10646-UCS-2\") ||\n func3(var1->field4, true, \"UTF8_STRING\") ||\n func3(var1->field4, true, \"STRING\")\n ? \"\"\n : \"T\";\n var6 = var1;\n func4(var1->field4, var2, var4);\n}\n# What is the source code?\n", "output": "static void GTFPopupMenu(GTextField *gt, GEvent *event) {\n int no_sel = gt->sel_start == gt->sel_end;\n if (first) {\n gtf_popuplist[0].ti.text = (unichar_t *)_(\"_Undo\");\n gtf_popuplist[2].ti.text = (unichar_t *)_(\"Cu_t\");\n gtf_popuplist[3].ti.text = (unichar_t *)_(\"_Copy\");\n gtf_popuplist[4].ti.text = (unichar_t *)_(\"_Paste\");\n gtf_popuplist[6].ti.text = (unichar_t *)_(\"_Save in UTF8\");\n gtf_popuplist[7].ti.text = (unichar_t *)_(\"Save in _UCS2\");\n gtf_popuplist[8].ti.text = (unichar_t *)_(\"_Import\");\n first = false;\n }\n gtf_popuplist[0].ti.disabled = gt->oldtext == NULL;\n gtf_popuplist[2].ti.disabled = no_sel;\n gtf_popuplist[3].ti.disabled = no_sel;\n gtf_popuplist[4].ti.disabled =\n !GDrawSelectionHasType(gt->g.base, sn_clipboard,\n \"text/plain;charset=ISO-10646-UCS-2\") &&\n !GDrawSelectionHasType(gt->g.base, sn_clipboard, \"UTF8_STRING\") &&\n !GDrawSelectionHasType(gt->g.base, sn_clipboard, \"STRING\");\n popup_kludge = gt;\n GMenuCreatePopupMenu(gt->g.base, event, gtf_popuplist);\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nstatic void func1(type1 *var1) {\n type2 *var2;\n int var3;\n func2(var1->field1, var2, var3) func3(var2);\n func4(&var1->field1);\n func5(var1->field2);\n func5(var1);\n}\n# What is the source code?\n", "output": "static inline void Abc_SclCellFree(SC_Cell* p) {\n SC_Pin* pTemp;\n int i;\n SC_CellForEachPin(p, pTemp, i) Abc_SclPinFree(pTemp);\n Vec_PtrErase(&p->vPins);\n ABC_FREE(p->pName);\n ABC_FREE(p);\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nstatic int func1(const struct type1 *var1, const struct type2 *var2) {\n const struct type3 *var3 = func2(var1, var4 var5, var1);\n if (!func3(var3->field1, var2->field2) || var2->field3 != var3->field4)\n return 0;\n func4(\" using listen skt from vhost %s\\n\", var3->field1->field5);\n return 1;\n}\n# What is the source code?\n", "output": "static int check_extant(struct lws_dll2 *d, void *user) {\n struct lws *wsi = lws_container_of(d, struct lws, listen_list);\n struct vh_sock_args *a = (struct vh_sock_args *)user;\n if (!lws_vhost_compare_listen(wsi->a.vhost, a->vhost)) return 0;\n if (wsi->af != a->af) return 0;\n lwsl_notice(\" using listen skt from vhost %s\\n\", wsi->a.vhost->name);\n return 1;\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nstatic void func1(struct type1 *var1, void *var2) {\n struct type2 *var3, *var4;\n var3 = bufferevent_socket_new(var5, (intptr_t)var2, var6);\n if (var7 && var8) {\n type3 *var9 = SSL_new(var7);\n var4 = bufferevent_openssl_socket_new(var5, -1, var9, var10, var6);\n } else {\n var4 = bufferevent_socket_new(var5, -1, var6);\n }\n if (bufferevent_socket_connect(var4, (struct type4 *)&var11, var12) < 0) {\n perror(\"bufferevent_socket_connect\");\n bufferevent_free(var4);\n bufferevent_free(var3);\n return;\n }\n if (var7 && !var8) {\n type3 *var9 = SSL_new(var7);\n struct type2 *var13 =\n bufferevent_openssl_filter_new(var5, var4, var9, var10, var6);\n if (!var13) {\n perror(\"Bufferevent_openssl_new\");\n bufferevent_free(var4);\n bufferevent_free(var3);\n return;\n }\n var4 = var13;\n }\n bufferevent_setcb(var3, var14, NULL, var15, var4);\n bufferevent_setcb(var4, var14, NULL, var15, var3);\n bufferevent_enable(var3, var16);\n bufferevent_enable(var4, var16);\n}\n# What is the source code?\n", "output": "static void accept_cb(struct evconnlistener *listener, evutil_socket_t fd,\n struct sockaddr *a, int slen, void *p) {\n struct bufferevent *b_out, *b_in;\n b_in = bufferevent_socket_new(\n base, fd, BEV_OPT_CLOSE_ON_FREE | BEV_OPT_DEFER_CALLBACKS);\n if (!ssl_ctx || use_wrapper)\n b_out = bufferevent_socket_new(\n base, -1, BEV_OPT_CLOSE_ON_FREE | BEV_OPT_DEFER_CALLBACKS);\n else {\n SSL *ssl = SSL_new(ssl_ctx);\n b_out = bufferevent_openssl_socket_new(\n base, -1, ssl, BUFFEREVENT_SSL_CONNECTING,\n BEV_OPT_CLOSE_ON_FREE | BEV_OPT_DEFER_CALLBACKS);\n }\n assert(b_in && b_out);\n if (bufferevent_socket_connect(b_out, (struct sockaddr *)&connect_to_addr,\n connect_to_addrlen) < 0) {\n perror(\"bufferevent_socket_connect\");\n bufferevent_free(b_out);\n bufferevent_free(b_in);\n return;\n }\n if (ssl_ctx && use_wrapper) {\n struct bufferevent *b_ssl;\n SSL *ssl = SSL_new(ssl_ctx);\n b_ssl = bufferevent_openssl_filter_new(\n base, b_out, ssl, BUFFEREVENT_SSL_CONNECTING,\n BEV_OPT_CLOSE_ON_FREE | BEV_OPT_DEFER_CALLBACKS);\n if (!b_ssl) {\n perror(\"Bufferevent_openssl_new\");\n bufferevent_free(b_out);\n bufferevent_free(b_in);\n return;\n }\n b_out = b_ssl;\n }\n bufferevent_setcb(b_in, readcb, NULL, eventcb, b_out);\n bufferevent_setcb(b_out, readcb, NULL, eventcb, b_in);\n bufferevent_enable(b_in, EV_READ | EV_WRITE);\n bufferevent_enable(b_out, EV_READ | EV_WRITE);\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nint fluid_synth_get_cc(type1 *var1, int var2, int var3, int *var4) {\n int var5 = var6;\n func1(var3 >= 0 && var3 <= 127, var5);\n func2(var4);\n func3(var5);\n}\n# What is the source code?\n", "output": "int fluid_synth_get_cc(fluid_synth_t *synth, int chan, int num, int *pval) {\n fluid_return_val_if_fail(num >= 0 && num < 128, FLUID_FAILED);\n fluid_return_val_if_fail(pval != NULL, FLUID_FAILED);\n FLUID_API_ENTRY_CHAN(FLUID_FAILED);\n FLUID_API_RETURN_IF_CHAN_DISABLED(FLUID_FAILED);\n *pval = fluid_channel_get_cc(synth->channel[chan], num);\n FLUID_API_RETURN(FLUID_OK);\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nvoid func1() {\n type1 *var1 = NULL;\n func2(&var1, 5);\n assert(func3(var1) == 1);\n func2(&var1, 8);\n func2(&var1, 12);\n assert(func3(var1) == 3);\n func4(var1);\n}\n# What is the source code?\n", "output": "void test_push_front() {\n node_t *head = NULL;\n push_front(&head, 5);\n assert(size(head) == 1);\n push_front(&head, 8);\n push_front(&head, 12);\n assert(size(head) == 3);\n destroy_list(head);\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nvoid test_astronode_request_perf_counters_r(void) {\n uint8_t var1[14] = {0};\n uint8_t var2[14] = {0};\n var3 = var4;\n int var5 = astronode_request_perf_counters_r(var2);\n func1(1, var6.field1);\n func1(0, var5);\n func1(0xE7, var2[0]);\n func1(0xF1, var2[1]);\n func1(0xF2, var2[2]);\n func1(0xF3, var2[3]);\n func1(0xF4, var2[4]);\n func1(0xF5, var2[5]);\n func1(0xF6, var2[6]);\n func1(0xF7, var2[7]);\n func1(0xF8, var2[8]);\n func1(0xF9, var2[9]);\n func1(0xFA, var2[10]);\n func1(0xFB, var2[11]);\n func1(0xFC, var2[12]);\n func1(0xFD, var2[13]);\n}\n# What is the source code?\n", "output": "void test_astronode_request_perf_counters_r(void) {\n perf_counters_r_response_t ans = {0};\n astronode_transport_send_receive_fake.custom_fake =\n astronode_transport_send_receive_custom_fake_perf_counters_r;\n as_return_status_t ret_status = astronode_request_perf_counters_r(&ans);\n TEST_ASSERT_EQUAL(1, astronode_transport_send_receive_fake.call_count);\n TEST_ASSERT_EQUAL(RS_ASSET_SUCCESS, ret_status);\n TEST_ASSERT_EQUAL(ASTRONODE_OP_CODE_PER_RA, ans.data.opcode);\n TEST_ASSERT_EQUAL(0xF1, ans.data.sat_search_phase);\n TEST_ASSERT_EQUAL(0xF2, ans.data.sat_search_try);\n TEST_ASSERT_EQUAL(0xF3, ans.data.sat_demod_phase);\n TEST_ASSERT_EQUAL(0xF4, ans.data.sat_demod_try);\n TEST_ASSERT_EQUAL(0xF5, ans.data.valid_sat_demod);\n TEST_ASSERT_EQUAL(0xF6, ans.data.ack_demod_try);\n TEST_ASSERT_EQUAL(0xF7, ans.data.valid_ack_demod);\n TEST_ASSERT_EQUAL(0xF8, ans.data.msg_queued);\n TEST_ASSERT_EQUAL(0xF9, ans.data.msg_dequeued);\n TEST_ASSERT_EQUAL(0xFA, ans.data.msg_ack);\n TEST_ASSERT_EQUAL(0xFB, ans.data.fragment_tx);\n TEST_ASSERT_EQUAL(0xFC, ans.data.fragment_ack);\n TEST_ASSERT_EQUAL(0xFD, ans.data.unicast_demod_try);\n TEST_ASSERT_EQUAL(0xFE, ans.data.valid_unicast_demod);\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\nint Str_ManVectorAffinity(type1* var1, type2* var2, type2* var3, type3* var4,\n int var5) {\n int var6, var7, var8, var9, var10, var11, var12[64];\n var10 = func1(var2);\n assert(var10 > 2);\n if (var10 > 64) {\n memset(var4, 0, 64 * sizeof(var13));\n return 0;\n }\n Gia_ManIncrementTravId(var1);\n func2(var2, var6, var7) {\n func3(var1, var6);\n func4(var1, var6, var7);\n var4[var7] = 1ULL << (var7);\n var12[var7] = 0;\n }\n for (var9 = 1; var9 < 8; var9++) {\n func2(var2, var6, var7) {\n func5(var1, var6, var8, var11) {\n if (func6(var1, var8)) continue;\n if (var5 == func1(var2)) continue;\n func3(var1, var8);\n var4[func1(var2)] = 0;\n var12[func1(var2)] = var9;\n func4(var1, var8, func1(var2));\n var4[func4(var1, var8, var7)] |= var4[var7];\n }\n if (func7(var1, var6)) var4[func4(var1, var6, var7)] |= var4[var7];\n }\n }\n var11 = 0;\n func2(var2, var6, var7) {\n assert(var4[var7]);\n if (var4[var7] == (1ULL << (var10 - 1))) continue;\n var4[var11] = var4[var7];\n var12[var11] = var12[var7];\n if (++var11 == 64) break;\n }\n for (var7 = var11; var7 < 64; var7++) var4[var7] = 0;\n func8(var4, 64);\n if (func1(var2) > var10) func9(var2, var10);\n return var11;\n}\n# What is the source code?\n", "output": "int Str_ManVectorAffinity(Gia_Man_t* p, Vec_Int_t* vSuper, Vec_Int_t* vDelay,\n word Matrix[256], int nLimit) {\n int fVerbose = 0;\n int Levels[256];\n int nSize = Vec_IntSize(vSuper);\n int Prev = nSize, nLevels = 1;\n int i, k, iLit, iFanin, nSizeNew;\n word Mask;\n assert(nSize > 2);\n if (nSize > 64) {\n for (i = 0; i < 64; i++) Matrix[i] = 0;\n return 0;\n }\n Gia_ManIncrementTravId(p);\n Vec_IntForEachEntry(vSuper, iLit, i) {\n Gia_ObjSetTravIdCurrentId(p, Abc_Lit2Var(iLit));\n Str_ManSetNum(p, Abc_Lit2Var(iLit), i);\n Matrix[i] = ((word)1) << (63 - i);\n Levels[i] = 0;\n }\n Vec_IntForEachEntry(vSuper, iLit, i) {\n Gia_Obj_t* pObj = Gia_ManObj(p, Abc_Lit2Var(iLit));\n if (Gia_ObjIsAnd(pObj)) {\n for (k = 0; k < 2; k++) {\n iFanin = k ? Gia_ObjFaninId1p(p, pObj) : Gia_ObjFaninId0p(p, pObj);\n if (!Gia_ObjIsTravIdCurrentId(p, iFanin)) {\n if (Vec_IntSize(vSuper) == nLimit) break;\n Gia_ObjSetTravIdCurrentId(p, iFanin);\n Matrix[Vec_IntSize(vSuper)] = 0;\n Levels[Vec_IntSize(vSuper)] = nLevels;\n Str_ManSetNum(p, iFanin, Vec_IntSize(vSuper));\n Vec_IntPush(vSuper, Abc_Var2Lit(iFanin, 0));\n }\n Matrix[Str_ManNum(p, iFanin)] |= Matrix[i];\n }\n }\n if (Gia_ObjIsMux(p, pObj)) {\n iFanin = Gia_ObjFaninId2p(p, pObj);\n if (!Gia_ObjIsTravIdCurrentId(p, iFanin)) {\n if (Vec_IntSize(vSuper) == nLimit) break;\n Gia_ObjSetTravIdCurrentId(p, iFanin);\n Matrix[Vec_IntSize(vSuper)] = 0;\n Levels[Vec_IntSize(vSuper)] = nLevels;\n Str_ManSetNum(p, iFanin, Vec_IntSize(vSuper));\n Vec_IntPush(vSuper, Abc_Var2Lit(iFanin, 0));\n }\n Matrix[Str_ManNum(p, iFanin)] |= Matrix[i];\n }\n if (Prev == i) Prev = Vec_IntSize(vSuper), nLevels++;\n if (nLevels == 8) break;\n }\n Mask = (~(word)0) << (64 - nSize);\n for (k = i = 0; i < Vec_IntSize(vSuper); i++) {\n assert(Matrix[i]);\n if ((Matrix[i] & (Matrix[i] - 1)) == 0) continue;\n if (Matrix[i] == Mask) continue;\n Matrix[k] = Matrix[i];\n Levels[k] = Levels[i];\n k++;\n if (k == 64) break;\n }\n for (i = k; i < 64; i++) Matrix[i] = 0;\n nSizeNew = k;\n if (nSizeNew == 0) {\n Vec_IntShrink(vSuper, nSize);\n return 0;\n }\n transpose64(Matrix);\n if (fVerbose && nSize > 10) {\n printf(\n \"Gate inputs = %d. Collected fanins = %d. All = %d. Good = %d. \"\n \"Levels = %d\\n\",\n nSize, Vec_IntSize(vSuper) - nSize, Vec_IntSize(vSuper), nSizeNew,\n nLevels);\n printf(\" \");\n for (i = 0; i < nSizeNew; i++) printf(\"%d\", Levels[i]);\n printf(\"\\n\");\n for (i = 0; i < nSize; i++) {\n printf(\"%6d : \", Abc_Lit2Var(Vec_IntEntry(vSuper, i)));\n printf(\"%3d \", Vec_IntEntry(vDelay, i) >> 4);\n printf(\"%3d \", Vec_IntEntry(vDelay, i) & 15);\n }\n i = 0;\n }\n Vec_IntShrink(vSuper, nSize);\n return nSizeNew;\n}", "system": ""}
+{"instruction": "", "input": "# This is the normalized code:\ntype1 xmlAddPrevSibling(type1 var1, type1 var2) {\n if ((var1 == NULL) || (var1->field1 == var3)) {\n return (NULL);\n }\n if ((var2 == NULL) || (var2->field1 == var3)) {\n return (NULL);\n }\n if (var1 == var2) {\n return (NULL);\n }\n xmlUnlinkNode(var2);\n if (var2->field1 == var4) {\n return (func1(var1->field2, var1, var2));\n }\n if (var2->field1 == var5) {\n if (var1->field1 == var5) {\n type2 *var6;\n var6 = xmlStrcat(func2(var2->field3), var1->field3);\n xmlNodeSetContent(var1, var6);\n xmlFree(var6);\n xmlFreeNode(var2);\n return (var1);\n }\n if ((var1->field2 != NULL) && (var1->field2->field1 == var5) &&\n (var1->field4 == var1->field2->field4)) {\n xmlNodeAddContent(var1->field2, var2->field3);\n xmlFreeNode(var2);\n return (var1->field2);\n }\n }\n if (var2->field5 != var1->field5) {\n xmlSetTreeDoc(var2, var1->field5);\n }\n var2->field6 = var1->field6;\n var2->field7 = var1;\n var2->field2 = var1->field2;\n var1->field2 = var2;\n if (var2->field2 != NULL) {\n var2->field2->field7 = var2;\n }\n if ((var2->field6 != NULL) && (var2->field6->field8 == var1)) {\n var2->field6->field8 = var2;\n }\n return (var2);\n}\n# What is the source code?\n", "output": "xmlNodePtr xmlAddPrevSibling(xmlNodePtr cur, xmlNodePtr elem) {\n if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL)) {\n#ifdef DEBUG_TREE\n xmlGenericError(xmlGenericErrorContext,\n \"xmlAddPrevSibling : cur == NULL\\n\");\n#endif\n return (NULL);\n }\n if ((elem == NULL) || (elem->type == XML_NAMESPACE_DECL)) {\n#ifdef DEBUG_TREE\n xmlGenericError(xmlGenericErrorContext,\n \"xmlAddPrevSibling : elem == NULL\\n\");\n#endif\n return (NULL);\n }\n if (cur == elem) {\n#ifdef DEBUG_TREE\n xmlGenericError(xmlGenericErrorContext,\n \"xmlAddPrevSibling : cur == elem\\n\");\n#endif\n return (NULL);\n }\n xmlUnlinkNode(elem);\n if (elem->type == XML_TEXT_NODE) {\n if (cur->type == XML_TEXT_NODE) {\n xmlChar *tmp;\n tmp = xmlStrdup(elem->content);\n tmp = xmlStrcat(tmp, cur->content);\n xmlNodeSetContent(cur, tmp);\n xmlFree(tmp);\n xmlFreeNode(elem);\n return (cur);\n }\n if ((cur->prev != NULL) && (cur->prev->type == XML_TEXT_NODE) &&\n (cur->name == cur->prev->name)) {\n xmlNodeAddContent(cur->prev, elem->content);\n xmlFreeNode(elem);\n return (cur->prev);\n }\n } else if (elem->type == XML_ATTRIBUTE_NODE) {\n return xmlAddPropSibling(cur->prev, cur, elem);\n }\n if (elem->doc != cur->doc) {\n xmlSetTreeDoc(elem, cur->doc);\n }\n elem->parent = cur->parent;\n elem->next = cur;\n elem->prev = cur->prev;\n cur->prev = elem;\n if (elem->prev != NULL) elem->prev->next = elem;\n if ((elem->parent != NULL) && (elem->parent->children == cur)) {\n elem->parent->children = elem;\n }\n return (elem);\n}", "system": ""}
diff --git a/sk2decompile/LLaMA-Factory/SK2DECOMPILE/data/pseudo2norm-examples.jsonl b/sk2decompile/LLaMA-Factory/SK2DECOMPILE/data/pseudo2norm-examples.jsonl
new file mode 100644
index 0000000..479b2f1
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/SK2DECOMPILE/data/pseudo2norm-examples.jsonl
@@ -0,0 +1,20 @@
+{"instruction": "", "input": "# This is the pseudo code:\nlong long sub_4E05(long long a1) {\n long long v1;\n long long v2;\n long long v3;\n long long result;\n v1 = sub_47A6(0LL, 0LL, 8LL * *(int *)(a1 + 20));\n v2 = v1;\n v3 = *(int *)(a1 + 20);\n if (v3 > 0) memset(v1, 0LL, 8 * v3);\n result = sub_47A6(0LL, 0LL, 40LL);\n *(uint32_t *)result = 2;\n *(uint8_t *)(result + 4) = 0;\n *(uint64_t *)(result + 8) =\n *(long long *)((char *)&qword_40650 + (uint64_t)&unk_A0E0);\n *(long long *)((char *)&qword_40650 + (uint64_t)&unk_A0E0) = result;\n *(uint64_t *)(result + 16) = a1;\n *(uint64_t *)(result + 24) = v2;\n *(uint32_t *)(result + 32) = *(uint32_t *)(a1 + 20);\n return result;\n}\n# What is the source code?\n", "output": "type1* func1(type2* var1) {\n type3** var2 = func2(var3*, var1->field1);\n for (int var4 = 0; var4 < var1->field1; var4++) {\n var2[var4] = NULL;\n }\n type1* var5 = func3(var6, var7);\n var5->field2 = var1;\n var5->field3 = var2;\n var5->field1 = var1->field1;\n return var5;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long sub_5306(long long a1) {\n long long v1;\n long long v2;\n long long v3;\n long long result;\n v1 = sub_1C2C(0LL, 0LL, 8LL * *(int *)(a1 + 20));\n v2 = v1;\n v3 = *(int *)(a1 + 20);\n if (v3 > 0) memset(v1, 0LL, 8 * v3);\n result = sub_1C2C(0LL, 0LL, 40LL);\n *(uint32_t *)result = 2;\n *(uint8_t *)(result + 4) = 0;\n *(uint64_t *)(result + 8) =\n *(long long *)((char *)&qword_20650 + (uint64_t)&unk_A4A8);\n *(long long *)((char *)&qword_20650 + (uint64_t)&unk_A4A8) = result;\n *(uint64_t *)(result + 16) = a1;\n *(uint64_t *)(result + 24) = v2;\n *(uint32_t *)(result + 32) = *(uint32_t *)(a1 + 20);\n return result;\n}\n# What is the source code?\n", "output": "type1* func1(type2* var1) {\n type3** var2 = func2(var3*, var1->field1);\n for (int var4 = 0; var4 < var1->field1; var4++) {\n var2[var4] = NULL;\n }\n type1* var5 = func3(var6, var7);\n var5->field2 = var1;\n var5->field3 = var2;\n var5->field1 = var1->field1;\n return var5;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long defineNativeEnum(long long a1) {\n long long v1;\n long long v2;\n long long v3;\n long long v4;\n v1 = (unsigned int)strlen(a1);\n v2 = copyString(a1, v1);\n push(v2 | 18445618173802708992LL);\n v3 = newEnum(v2);\n *(uint32_t *)(v3 + 56) = 0;\n push(v3 | 18445618173802708992LL);\n v4 = *(uint64_t *)&vm[240] + 80LL;\n tableSet(v4, *(uint64_t *)&vm[71952] & 1125899906842623LL,\n *(uint64_t *)((char *)&loc_11918 + (uint64_t)vm));\n pop(v4);\n pop(v4);\n return v3;\n}\n# What is the source code?\n", "output": "type1* defineNativeEnum(const char* var1) {\n type2* var2 = copyString(var1, (int)strlen(var1));\n push(func1(var2));\n type1* var3 = newEnum(var2);\n var3->field1 = 0;\n push(func1(var3));\n tableSet(&var4.field2->field3, func2(var4.field4[0]), var4.field4[1]);\n pop();\n pop();\n return var3;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long sub_14A80(long long a1, long long a2) {\n long long v2;\n long long v3;\n long long v4;\n long long v5;\n long long i;\n long long v7;\n v2 = 0LL;\n v3 = sub_3440(a1, 0LL, 0LL, 8 * (unsigned int)*(unsigned short *)(a2 + 22));\n if (v3) {\n v4 = v3;\n v5 = *(unsigned short *)(a2 + 22);\n for (i = 0LL; v5 != i; ++i) *(uint64_t *)(v4 + 8 * i) = 0LL;\n v7 = sub_145C0(a1, 40LL, 21);\n if (v7) {\n v2 = v7;\n *(uint64_t *)(v7 + 16) = a2;\n *(uint64_t *)(v7 + 24) = v4;\n *(uint32_t *)(v7 + 32) = *(unsigned short *)(a2 + 22);\n } else {\n v2 = 0LL;\n sub_3440(a1, v4, 8 * (unsigned int)*(unsigned short *)(a2 + 22), 0LL);\n }\n }\n return v2;\n}\n# What is the source code?\n", "output": "type1 *func1(type2 *var1, type3 *var2) {\n type4 **var3 = func2(var1, var4 *, var2->field1);\n if (func3(var3 == NULL)) return NULL;\n for (int var5 = 0; var5 < var2->field1; var5++) var3[var5] = NULL;\n type1 *var6 = func4(var1, var7, var8);\n if (func3(var6 == NULL)) {\n func5(var1, var4 *, var3, var2->field1);\n return NULL;\n }\n var6->field2 = var2;\n var6->field3 = var3;\n var6->field1 = var2->field1;\n return var6;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long sub_662AF(long long a1, long long a2, long long a3, long long a4,\n long long a5, long long a6, __m128 a7, __m128 a8, __m128 a9,\n __m128 a10, __m128 a11, __m128 a12, __m128 a13, __m128 a14,\n char a15) {\n int v15;\n long long v16;\n long long v17;\n double v18;\n double v19;\n long long v20;\n long long result;\n uint64_t v22[4];\n char v23;\n long long v24;\n long long v25;\n long long v26;\n __m128 v27;\n __m128 v28;\n __m128 v29;\n __m128 v30;\n __m128 v31;\n __m128 v32;\n __m128 v33;\n __m128 v34;\n uint8_t v35[296];\n v27 = a7;\n v28 = a8;\n v29 = a9;\n v30 = a10;\n v31 = a11;\n v32 = a12;\n v33 = a13;\n v34 = a14;\n v24 = a4;\n v25 = a5;\n v26 = a6;\n v22[2] = &v23;\n v22[1] = &a15;\n v22[0] = 206158430232LL;\n v15 = ((long long (*)(uint8_t *, long long, long long, uint64_t *, long long,\n long long))vsnprintf)(v35, 255LL, a3, v22, a5, a6);\n v16 = sub_86413(a1, (long long)v35, v15);\n v17 = sub_660BF(a1);\n v20 = sub_7B7F1(a1, a2, a7, a8, a9, a10, v18, v19, a13, a14);\n result = sub_7FD38(a1, v16, v20);\n *(uint64_t *)(result + 48) = v17;\n return result;\n}\n# What is the source code?\n", "output": "type1* func1(type2* var1, const char* var2, const char* var3, ...) {\n char var4[var5];\n type3 var6;\n func2(var6, var3);\n int var7 = vsnprintf(var4, var5, var3, var6);\n func3(var6);\n type4* var8 = func4(var1, var4, var7);\n type5* var9 = func5(var1);\n type6* var10 = func6(var1, var2);\n type1* var11 = func7(var1, var8, var10);\n var11->field1 = var9;\n return var11;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long sub_5F7EA(long long a1, long long a2, long long a3, long long a4,\n long long a5, long long a6, __m128 a7, __m128 a8, __m128 a9,\n __m128 a10, __m128 a11, __m128 a12, __m128 a13, __m128 a14,\n char a15) {\n unsigned int v15;\n long long v16;\n long long v17;\n long long v18;\n uint64_t v20[4];\n char v21;\n long long v22;\n long long v23;\n long long v24;\n __m128 v25;\n __m128 v26;\n __m128 v27;\n __m128 v28;\n __m128 v29;\n __m128 v30;\n __m128 v31;\n __m128 v32;\n uint8_t v33[296];\n v25 = a7;\n v26 = a8;\n v27 = a9;\n v28 = a10;\n v29 = a11;\n v30 = a12;\n v31 = a13;\n v32 = a14;\n v22 = a4;\n v23 = a5;\n v24 = a6;\n v20[2] = &v21;\n v20[1] = &a15;\n v20[0] = 206158430232LL;\n v15 = ((long long (*)(uint8_t *, long long, long long, uint64_t *, long long,\n long long))vsnprintf)(v33, 255LL, a3, v20, a5, a6);\n v16 = sub_7D680(a1, v33, v15);\n v17 = sub_5F528(a1);\n v18 = sub_776AD(a1, v16, a2);\n *(uint64_t *)(v18 + 48) = v17;\n sub_8676D(a1, v18 | 18445618173802708992LL);\n if (!sub_5F25B(a1, 0)) exit(70LL);\n return v18;\n}\n# What is the source code?\n", "output": "type1* func1(type2* var1, type3* var2, const char* var3, ...) {\n char var4[var5];\n type4 var6;\n func2(var6, var3);\n int var7 = vsnprintf(var4, var5, var3, var6);\n func3(var6);\n type5* var8 = func4(var1, var4, var7);\n type6* var9 = func5(var1);\n type1* var10 = func6(var1, var8, var2);\n var10->field1 = var9;\n func7(var1, func8(var10));\n if (!func9(var1, false))\n exit(70);\n else\n return var10;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long new_bound_method(int a1, long long a2, long long a3) {\n long long result;\n result = reallocate(0LL, 0LL, 40LL);\n *(uint32_t *)result = 0;\n *(uint8_t *)(result + 4) = 0;\n *(uint64_t *)(result + 8) =\n *(long long *)((char *)&qword_40650 + (uint64_t)vm);\n *(long long *)((char *)&qword_40650 + (uint64_t)vm) = result;\n *(uint32_t *)(result + 16) = a1;\n *(uint64_t *)(result + 24) = a2;\n *(uint64_t *)(result + 32) = a3;\n return result;\n}\n# What is the source code?\n", "output": "type1 *new_bound_method(type2 var1, type3 *var2) {\n type1 *var3 = func1(var4, var5);\n var3->field1 = var1;\n var3->field2 = var2;\n return var3;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long mochiThreadCurrent(long long a1) {\n long long result;\n bool v2;\n long long v3;\n long long v4;\n long long v5;\n result = thrd_current(a1);\n v2 = *(uint32_t *)(a1 + 152) > 0;\n if (*(int *)(a1 + 152) > 0) {\n v3 = result;\n v4 = 0LL;\n while (1) {\n result = *(uint64_t *)(*(uint64_t *)(a1 + 144) + 8 * v4);\n if (result) {\n result = thrd_equal(v3, *(uint64_t *)(result + 32));\n if ((uint32_t)result) break;\n }\n ++v4;\n v5 = *(int *)(a1 + 152);\n v2 = v4 < v5;\n if (v4 >= v5) goto LABEL_9;\n }\n result = *(uint64_t *)(*(uint64_t *)(a1 + 144) + 8 * v4);\n }\nLABEL_9:\n if (!v2) sub_5826();\n return result;\n}\n# What is the source code?\n", "output": "type1* mochiThreadCurrent(type2* var1) {\n type3 var2 = thrd_current();\n for (int var3 = 0; var3 < var1->field1.field2; var3++) {\n if (var1->field1.field3[var3] != NULL &&\n thrd_equal(var2, var1->field1.field3[var3]->field4)) {\n return var1->field1.field3[var3];\n }\n }\n func1(\n \"Current thread is not a MochiVM thread, but tried to be accessed as \"\n \"one.\");\n return NULL;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long newCallFrame(long long a1, int a2, long long a3, long long a4) {\n long long result;\n result = mochiReallocate(a4, 0LL, 0LL, 40LL);\n *(uint32_t *)result = 6;\n *(uint8_t *)(result + 4) = 0;\n *(uint64_t *)(result + 8) = *(uint64_t *)(a4 + 248);\n *(uint64_t *)(a4 + 248) = result;\n *(uint64_t *)(result + 16) = a1;\n *(uint32_t *)(result + 24) = a2;\n *(uint64_t *)(result + 32) = a3;\n return result;\n}\n# What is the source code?\n", "output": "type1* newCallFrame(type2* var1, int var2, uint8_t* var3, type3* var4) {\n type1* var5 = func1(var4, var6);\n func2(var4, (type4*)var5, var7);\n var5->field1.field2 = var1;\n var5->field1.field3 = var2;\n var5->field4 = var3;\n return var5;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long sub_6FD4B(long long a1, int a2, long long a3) {\n unsigned int v5;\n long long v6;\n long long v7;\n long long v8;\n long long v9;\n long long v10;\n char v11;\n v5 = (a2 - 1) & sub_79144(a3);\n v7 = 0LL;\n do {\n v8 = a1 + 56LL * v5;\n v9 = *(uint64_t *)(v8 + 40);\n if (v9 == 9222246136947933191LL) {\n v10 = v7;\n if (!v7) v10 = a1 + 56LL * v5;\n if (*(uint64_t *)(v8 + 48) == 9222246136947933185LL) {\n v11 = 0;\n v6 = v10;\n continue;\n }\n v7 = v10;\n } else if (v9 == a3) {\n v11 = 0;\n v6 = a1 + 56LL * v5;\n continue;\n }\n v5 = (a2 - 1) & (v5 + 1);\n v11 = 1;\n } while (v11);\n return v6;\n}\n# What is the source code?\n", "output": "type1* func1(type1* var1, int var2, type2 var3) {\n uint32_t var4 = func2(var3);\n uint32_t var5 = var4 & (var2 - 1);\n type1* var6 = NULL;\n for (;;) {\n type1* var7 = &var1[var5];\n if (func3(var7->field1)) {\n if (func4(var7->field2)) {\n return var6 != NULL ? var6 : var7;\n } else {\n if (var6 == NULL) var6 = var7;\n }\n } else if (var7->field1 == var3) {\n return var7;\n }\n var5 = (var5 + 1) & (var2 - 1);\n }\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long sub_14700(long long *a1, long long a2, char a3) {\n long long v4;\n long long v5;\n long long v6;\n int v7;\n int v8;\n int v9;\n long long v10;\n long long v11;\n long long v12;\n long long v13;\n long long v15;\n unsigned int v16;\n unsigned int v17;\n v4 = a1[2];\n v5 = a2;\n if (!*(uint32_t *)(a2 + 24)) {\n v6 = *a1;\n if (!(unsigned char)sub_148C0(a1, &v15, 16LL)) return 0LL;\n v7 = sub_14980(v6 + 40);\n sub_14900((uint32_t)a1, (unsigned int)&v15, (unsigned int)\"Class_%lu\", v7,\n v8, v9);\n v10 = sub_149C0(a1, v15, v16, v17);\n if (!v10) return 0LL;\n v5 = v10;\n v11 = *(uint64_t *)(v4 + 64);\n *(uint8_t *)v11 = 15;\n *(uint64_t *)(v11 + 8) = v5;\n *(uint64_t *)(v4 + 64) += 16LL;\n }\n v12 = sub_145C0(a1, 272LL, 20LL);\n if (!v12) return 0LL;\n v13 = v12;\n *(long double *)(v12 + 96) = 0LL;\n *(long double *)(v12 + 80) = 0LL;\n *(long double *)(v12 + 64) = 0LL;\n *(long double *)(v12 + 48) = 0LL;\n *(uint64_t *)(v12 + 112) = 0LL;\n *(long double *)(v12 + 32) = 0LL;\n *(uint64_t *)(v12 + 24) = v5;\n if (!*(uint32_t *)(a2 + 24)) *(uint64_t *)(v4 + 64) -= 16LL;\n *(uint8_t *)(v12 + 120) = 1;\n *(long double *)(v12 + 128) = 0LL;\n *(uint64_t *)(v12 + 144) = 0LL;\n *(uint8_t *)(v12 + 152) = 1;\n *(uint64_t *)(v12 + 160) = 0LL;\n sub_17540(v12 + 168);\n sub_169C0(v13 + 192);\n sub_169C0(v13 + 216);\n sub_178C0(v13 + 240);\n *(uint64_t *)(v13 + 256) = 0LL;\n *(unsigned short *)(v13 + 264) = 0;\n *(uint8_t *)(v13 + 266) = a3;\n return v13;\n}\n# What is the source code?\n", "output": "type1 *func1(type2 *var1, type3 *var2, bool var3) {\n type4 *var4 = var1->field1;\n type5 *var5 = var1->field2;\n type3 *var6 = var2;\n if (var2->field3.field4 == 0) {\n type6 var7;\n bool var8 = func2(var1, &var7, 16);\n if (func3(!var8)) return NULL;\n func4(var1, &var7, \"Class_%lu\", func5(&var4->field5) & 0xFFFFFFFF);\n var6 = func6(var1, var7.field6, var7.field4, var7.field7);\n if (func3(var6 == NULL)) return NULL;\n func7(var5, func8(var6));\n }\n type1 *var9 = func9(var1, var10, var11);\n if (func3(var9 == NULL)) return NULL;\n memset(&var9->field8, 0, sizeof(var12));\n var9->field9 = var6;\n if (var2->field3.field4 == 0) func10(var5);\n var9->field10 = var13;\n var9->field11 = NULL;\n var9->field12 = NULL;\n var9->field13 = var13;\n func11(&var9->field14);\n func12(&var9->field15);\n func12(&var9->field16);\n func13(&var9->field17);\n var9->field18 = NULL;\n var9->field19 = 0;\n var9->field20 = var3;\n return var9;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long sub_6648F(long long a1, long long a2, long long a3, long long a4,\n long long a5, long long a6, __m128 a7, __m128 a8, __m128 a9,\n __m128 a10, __m128 a11, __m128 a12, __m128 a13, __m128 a14,\n char a15) {\n long long v16;\n unsigned int v17;\n long long v18;\n long long v19;\n long long v20;\n uint64_t v22[4];\n char v23;\n long long v24;\n long long v25;\n long long v26;\n __m128 v27;\n __m128 v28;\n __m128 v29;\n __m128 v30;\n __m128 v31;\n __m128 v32;\n __m128 v33;\n __m128 v34;\n uint8_t v35[296];\n v27 = a7;\n v28 = a8;\n v29 = a9;\n v30 = a10;\n v31 = a11;\n v32 = a12;\n v33 = a13;\n v34 = a14;\n v24 = a4;\n v25 = a5;\n v26 = a6;\n v16 = sub_7B7F1(a1, a2);\n v22[2] = &v23;\n v22[1] = &a15;\n v22[0] = 206158430232LL;\n v17 = ((long long (*)(uint8_t *, long long, long long, uint64_t *))vsnprintf)(\n v35, 255LL, a3, v22);\n v18 = sub_86413(a1, v35, v17);\n v19 = sub_660BF(a1);\n v20 = sub_7FD38(a1, v18, v16);\n *(uint64_t *)(v20 + 48) = v19;\n sub_8FF25(a1, v20 | 18445618173802708992LL);\n if (!(unsigned char)sub_65E49(a1, 0)) exit(70LL);\n return v20;\n}\n# What is the source code?\n", "output": "type1* func1(type2* var1, const char* var2, const char* var3, ...) {\n type3* var4 = func2(var1, var2);\n char var5[var6];\n type4 var7;\n func3(var7, var3);\n int var8 = vsnprintf(var5, var6, var3, var7);\n func4(var7);\n type5* var9 = func5(var1, var5, var8);\n type6* var10 = func6(var1);\n type1* var11 = func7(var1, var9, var4);\n var11->field1 = var10;\n func8(var1, func9(var11));\n if (!func10(var1, false))\n exit(70);\n else\n return var11;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long newClass(long long a1, int a2, char a3) {\n long long v4;\n long long v5;\n v4 = *(uint64_t *)&vm[16];\n v5 = reallocate(0LL, 0LL, 176LL);\n *(uint32_t *)v5 = 5;\n *(uint64_t *)(v5 + 8) = v4;\n *(uint8_t *)(v5 + 16) = 0;\n *(uint64_t *)(v5 + 40) = *(long long *)((char *)&qword_919A8 + (uint64_t)vm);\n initTable(v5 + 24);\n *(long long *)((char *)&qword_919A8 + (uint64_t)vm) = v5;\n *(uint32_t *)(v5 + 56) = a2;\n *(uint64_t *)(v5 + 48) = a1;\n *(uint64_t *)(v5 + 64) = *(uint64_t *)&vm[240];\n *(uint64_t *)(v5 + 72) = 0LL;\n *(uint8_t *)(v5 + 168) = 0;\n *(uint8_t *)(v5 + 169) = a3;\n *(unsigned short *)(v5 + 80) = 0;\n initValueArray(v5 + 152);\n initTable(v5 + 88);\n initTable(v5 + 104);\n initTable(v5 + 120);\n initTable(v5 + 136);\n return v5;\n}\n# What is the source code?\n", "output": "type1* newClass(type2* var1, type3 var2, bool var3) {\n type1* var4 = func1(var5, var6, var7.field1);\n var4->field2 = var2;\n var4->field3 = var1;\n var4->field4 = var7.field5;\n var4->field6 = NULL;\n var4->field7 = false;\n var4->field8 = var3;\n var4->field9 = 0;\n initValueArray(&var4->field10);\n initTable(&var4->field11);\n initTable(&var4->field12);\n initTable(&var4->field13);\n initTable(&var4->field14);\n return var4;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long sub_D4660(uint64_t *a1, long long a2) {\n long long v3;\n long long v4;\n v4 = sub_E87A0(a1, a2);\n sub_FAB50(a1, v4 | 18445618173802708992LL);\n v3 = sub_9D8B0(a1, v4);\n *(uint8_t *)(v3 + 112) = 1;\n sub_FAB50(a1, v3 | 18445618173802708992LL);\n sub_ECC40((long long)a1, (long long)(a1 + 18611), *(uint64_t *)(v3 + 64),\n v3 | 18445618173802708992LL);\n sub_ECC40((long long)a1, a1[28] + 72LL, a1[2206] & 1125899906842623LL,\n a1[2207]);\n sub_FAB90(a1);\n sub_FAB90(a1);\n sub_31430(a1[18606], 3LL, v4, *(uint64_t *)(v3 + 64), 0LL);\n return v3;\n}\n# What is the source code?\n", "output": "type1* func1(type2* var1, const char* var2) {\n type3* var3 = func2(var1, var2);\n func3(var1, func4(var3));\n type1* var4 = func5(var1, var3);\n var4->field1 = true;\n func3(var1, func4(var4));\n func6(var1, &var1->field2, var4->field3, func4(var4));\n func6(var1, &var1->field4->field5, func7(var1->field6[0]), var1->field6[1]);\n func8(var1);\n func8(var1);\n func9(var1->field7, var5, var3, var4->field3, NULL);\n return var4;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long mochiNewDouble(long long a1, double a2) {\n long long result;\n result = mochiReallocate(a1, 0LL, 0LL, 24LL);\n *(uint32_t *)result = 2;\n *(uint8_t *)(result + 4) = 0;\n *(uint64_t *)(result + 8) = *(uint64_t *)(a1 + 248);\n *(uint64_t *)(a1 + 248) = result;\n *(double *)(result + 16) = a2;\n return result;\n}\n# What is the source code?\n", "output": "type1* mochiNewDouble(type2* var1, double var2) {\n type1* var3 = func1(var1, var4);\n func2(var1, (type3*)var3, var5);\n var3->field1 = var2;\n return var3;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nuint32_t *silo_GetObjEnt(int a1, int a2, int a3) {\n long long *v3;\n long long v4;\n long long v5;\n long long v6;\n uint32_t *result;\n v3 = (long long *)objTable[a1];\n v4 = *((int *)v3 + 3);\n if (v4 <= 0) return 0LL;\n v5 = *v3;\n v6 = 0LL;\n while (1) {\n result = *(uint32_t **)(v5 + 8 * v6);\n if (result[1] == a2 && *result == a3) break;\n if (v4 == ++v6) return 0LL;\n }\n return result;\n}\n# What is the source code?\n", "output": "type1* silo_GetObjEnt(int var1, int var2, int var3) {\n int var4;\n for (var4 = 0; var4 < var5[var1]->field1; var4++) {\n if (var5[var1]->field2[var4]->field3 == var2 &&\n var5[var1]->field2[var4]->field4 == var3) {\n return (var5[var1]->field2[var4]);\n }\n }\n return (NULL);\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long getNativeClass(long long a1, long long a2, __m128 a3, __m128 a4,\n __m128 a5, __m128 a6, double a7, double a8, __m128 a9,\n __m128 a10) {\n long long v10;\n long long v11;\n long long v12;\n long long v13;\n __m128 v14;\n __m128 v15;\n char v17;\n long long v18;\n long long NativeNamespace;\n long long v20;\n long long v21;\n v21 = a1;\n v20 = a2;\n NativeNamespace = getNativeNamespace(a1);\n v10 = newString(a2);\n tableGet(NativeNamespace + 80, v10, &v18);\n if ((sub_228A0(v18, 5LL) & 1) == 0) {\n runtimeError((long long)\"Class %s.%s is undefined.\", v21, v20, v11, v12,\n v13, a3, a4, a5, a6, v14, v15, a9, a10, v17);\n exit(70LL);\n }\n return v18 & 1125899906842623LL;\n}\n# What is the source code?\n", "output": "type1* getNativeClass(const char* var1, const char* var2) {\n type2* var3 = getNativeNamespace(var1);\n type3 var4;\n tableGet(&var3->field1, newString(var2), &var4);\n if (!func1(var4)) {\n runtimeError(\"Class %s.%s is undefined.\", var1, var2);\n exit(70);\n }\n return func2(var4);\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long newBoundMethod(long long a1, unsigned long long a2) {\n long long v2;\n bool v3;\n long long v4;\n v2 = *(uint64_t *)&vm[200];\n v3 = 0;\n v4 = reallocate(0LL, 0LL, 72LL);\n *(uint32_t *)v4 = 3;\n *(uint64_t *)(v4 + 8) = v2;\n *(uint8_t *)(v4 + 16) = 0;\n *(uint64_t *)(v4 + 40) = *(long long *)((char *)&qword_919A8 + (uint64_t)vm);\n initTable(v4 + 24);\n *(long long *)((char *)&qword_919A8 + (uint64_t)vm) = v4;\n *(uint64_t *)(v4 + 48) = a1;\n *(uint64_t *)(v4 + 56) = a2;\n if ((unsigned int)(a2 >> 50) >= 16383)\n v3 = *(uint32_t *)(a2 & 1125899906842623LL) == 20;\n *(uint8_t *)(v4 + 64) = v3;\n return v4;\n}\n# What is the source code?\n", "output": "type1* newBoundMethod(type2 var1, type2 var2) {\n type1* var3 = func1(var4, var5, var6.field1);\n var3->field2 = var1;\n var3->field3 = var2;\n var3->field4 = func2(var2);\n return var3;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long mochiNewContinuation(long long a1, long long a2, char a3, int a4,\n int a5) {\n long long v7;\n long long v8;\n int v9;\n long long v10;\n long long v11;\n long long result;\n v7 = 16LL * a4;\n v8 = mochiReallocate(a1, 0LL, 0LL, v7);\n memset(v8, 0LL, v7);\n v9 = a5;\n v10 = 8LL * a5;\n v11 = mochiReallocate(a1, 0LL, 0LL, v10);\n memset(v11, 0LL, v10);\n result = mochiReallocate(a1, 0LL, 0LL, 64LL);\n *(uint32_t *)result = 9;\n *(uint8_t *)(result + 4) = 0;\n *(uint64_t *)(result + 8) = *(uint64_t *)(a1 + 248);\n *(uint64_t *)(a1 + 248) = result;\n *(uint64_t *)(result + 16) = a2;\n *(uint8_t *)(result + 24) = a3;\n *(uint64_t *)(result + 32) = v8;\n *(uint64_t *)(result + 48) = v11;\n *(uint32_t *)(result + 40) = a4;\n *(uint32_t *)(result + 56) = v9;\n return result;\n}\n# What is the source code?\n", "output": "type1* mochiNewContinuation(type2* var1, uint8_t* var2, uint8_t var3, int var4,\n int var5) {\n type3* var6 = func1(var1, var7, var4);\n memset(var6, 0, sizeof(var7) * var4);\n type4** var8 = func1(var1, var9*, var5);\n memset(var8, 0, sizeof(type4*) * var5);\n type1* var10 = func2(var1, var11);\n func3(var1, (type5*)var10, var12);\n var10->field1 = var2;\n var10->field2 = var3;\n var10->field3 = var6;\n var10->field4 = var8;\n var10->field5 = var4;\n var10->field6 = var5;\n return var10;\n}", "system": ""}
+{"instruction": "", "input": "# This is the pseudo code:\nlong long throwException(long long a1, long long a2, long long a3, long long a4,\n long long a5, long long a6, __m128 a7, __m128 a8,\n __m128 a9, __m128 a10, __m128 a11, __m128 a12,\n __m128 a13, __m128 a14, char a15) {\n char v16;\n long long v17;\n long long v18;\n long long v19;\n long long v20;\n __m128 v21;\n __m128 v22;\n __m128 v23;\n __m128 v24;\n __m128 v25;\n __m128 v26;\n __m128 v27;\n __m128 v28;\n long long v29;\n long long StackTrace;\n long long v31;\n int v32;\n uint32_t v33[2];\n char *v34;\n char *v35;\n uint8_t v36[256];\n long long v37;\n long long v38;\n v21 = a7;\n v22 = a8;\n v23 = a9;\n v24 = a10;\n v25 = a11;\n v26 = a12;\n v27 = a13;\n v28 = a14;\n v20 = a6;\n v19 = a5;\n v18 = a4;\n v17 = a3;\n v38 = a1;\n v37 = a2;\n v35 = &v16;\n v34 = &a15;\n v33[1] = 48;\n v33[0] = 16;\n v32 = vsnprintf(v36, 255LL, a2, v33);\n v31 = copyString((long long)v36, v32);\n StackTrace = getStackTrace();\n v29 = newException(v31, v38);\n *(uint64_t *)(v29 + 56) = StackTrace;\n push(v29 | 18445618173802708992LL);\n if ((propagateException() & 1) == 0) exit(70LL);\n return v29;\n}\n# What is the source code?\n", "output": "type1* throwException(type2* var1, const char* var2, ...) {\n char var3[var4];\n type3 var5;\n func1(var5, var2);\n int var6 = vsnprintf(var3, var4, var2, var5);\n func2(var5);\n type4* var7 = copyString(var3, var6);\n type5* var8 = getStackTrace();\n type1* var9 = newException(var7, var1);\n var9->field1 = var8;\n push(func3(var9));\n if (!propagateException())\n exit(70);\n else\n return var9;\n}", "system": ""}
diff --git a/sk2decompile/LLaMA-Factory/SK2DECOMPILE/train/norm2code-example.yaml b/sk2decompile/LLaMA-Factory/SK2DECOMPILE/train/norm2code-example.yaml
new file mode 100644
index 0000000..809ef70
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/SK2DECOMPILE/train/norm2code-example.yaml
@@ -0,0 +1,39 @@
+### model
+model_name_or_path: SK2DECOMPILE/saves/pseudo2norm-example
+trust_remote_code: true
+
+### method
+stage: sft
+do_train: true
+finetuning_type: full
+deepspeed: examples/deepspeed/ds_z2_config.json # choices: [ds_z0_config.json, ds_z2_config.json, ds_z3_config.json]
+
+### dataset
+dataset: norm2code-examples
+template: sk2decompile
+cutoff_len: 2048
+max_samples: 100
+overwrite_cache: true
+preprocessing_num_workers: 16
+dataloader_num_workers: 4
+
+### output
+output_dir: SK2DECOMPILE/saves/norm2code-example
+logging_steps: 10
+save_steps: 500
+plot_loss: true
+overwrite_output_dir: true
+save_only_model: false
+report_to: none # choices: [none, wandb, tensorboard, swanlab, mlflow]
+
+### train
+per_device_train_batch_size: 8
+gradient_accumulation_steps: 8
+learning_rate: 3.0e-6
+num_train_epochs: 2.0
+lr_scheduler_type: cosine_with_min_lr
+lr_scheduler_kwargs: {"min_lr": 3.0e-7}
+warmup_ratio: 0.02
+bf16: true
+ddp_timeout: 180000000
+resume_from_checkpoint: null
\ No newline at end of file
diff --git a/sk2decompile/LLaMA-Factory/SK2DECOMPILE/train/pseudo2norm-example.yaml b/sk2decompile/LLaMA-Factory/SK2DECOMPILE/train/pseudo2norm-example.yaml
new file mode 100644
index 0000000..174fb81
--- /dev/null
+++ b/sk2decompile/LLaMA-Factory/SK2DECOMPILE/train/pseudo2norm-example.yaml
@@ -0,0 +1,39 @@
+### model
+model_name_or_path: LLM4Binary/llm4decompile-6.7b-v2
+trust_remote_code: true
+
+### method
+stage: sft
+do_train: true
+finetuning_type: full
+deepspeed: examples/deepspeed/ds_z2_config.json # choices: [ds_z0_config.json, ds_z2_config.json, ds_z3_config.json]
+
+### dataset
+dataset: pseudo2norm-examples
+template: sk2decompile
+cutoff_len: 2048
+max_samples: 100
+overwrite_cache: true
+preprocessing_num_workers: 16
+dataloader_num_workers: 4
+
+### output
+output_dir: SK2DECOMPILE/saves/pseudo2norm-example
+logging_steps: 10
+save_steps: 500
+plot_loss: true
+overwrite_output_dir: true
+save_only_model: false
+report_to: none # choices: [none, wandb, tensorboard, swanlab, mlflow]
+
+### train
+per_device_train_batch_size: 8
+gradient_accumulation_steps: 8
+learning_rate: 3.0e-6
+num_train_epochs: 2.0
+lr_scheduler_type: cosine_with_min_lr
+lr_scheduler_kwargs: {"min_lr": 3.0e-7}
+warmup_ratio: 0.02
+bf16: true
+ddp_timeout: 180000000
+resume_from_checkpoint: null
\ No newline at end of file
diff --git a/sk2decompile/Preprocess/format.py b/sk2decompile/Preprocess/format.py
new file mode 100644
index 0000000..ed06ca7
--- /dev/null
+++ b/sk2decompile/Preprocess/format.py
@@ -0,0 +1,99 @@
+import re
+import os
+from tqdm import tqdm
+import json
+from multiprocessing import Pool, cpu_count
+import argparse
+
+def good_func(func):
+ func = '{'.join(func.split('{')[1:])
+ func_sp = func.split('\n')
+ total = 0
+ for line in func_sp:
+ if len(line.strip())>=3:
+ total+=1
+ if total>3 and total<300:
+ return True
+ return False
+
+def strip_empty(code):
+ return "\n".join(line for line in code.splitlines() if line.strip())
+def comment_remover(text):
+ def replacer(match):
+ s = match.group(0)
+ if s.startswith('/'):
+ return " " # note: a space and not an empty string
+ else:
+ return s
+ pattern = re.compile(
+ r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"',
+ re.DOTALL | re.MULTILINE
+ )
+ return re.sub(pattern, replacer, text)
+
+import subprocess
+
+def format_with_clang(func: str, style: str = "Google") -> str:
+ # Build the command
+ if not func:
+ return None
+ cmd = ["clang-format", f"--style={style}"]
+ try:
+ proc = subprocess.run(
+ cmd,
+ input=func,
+ text=True,
+ capture_output=True,
+ check=True,
+ timeout=0.5
+ )
+ return proc.stdout
+ except:
+ # print("clang-format failed")
+ return None
+
+
+def process_record(record):
+ src = record.get("code_norm", "")
+ no_comments = comment_remover(src)
+ formatted = format_with_clang(no_comments)
+ if formatted is None:
+ return {}
+ cleaned = strip_empty(formatted)
+ record["code_format"] = cleaned
+ if not good_func(cleaned):
+ return {}
+ return record
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(
+ description="Parallel clang-format + strip for JSONL data"
+ )
+ parser.add_argument("--input_json", type=str, default="train_norm.json")
+ parser.add_argument("--output_json", type=str, default="train_format.json")
+ parser.add_argument(
+ "-j", "--jobs", type=int, default=cpu_count())
+ args = parser.parse_args()
+
+ # 1) Load data
+ with open(args.input_json, "r", encoding="utf-8") as fp:
+ data = json.load(fp)
+
+ # 2) Process in parallel with a progress bar
+ with Pool(processes=args.jobs) as pool:
+ results = list(tqdm(pool.imap(process_record, data),
+ total=len(data),
+ desc="Processing format"))
+
+ results = [record for record in results if record]###############only keep good functions that have 3 lines
+ # 3) Write out
+ with open(args.output_json, "w", encoding="utf-8") as fp:
+ json.dump(results, fp, indent=4)
+
+ import random
+ data_sample = random.sample(results, 2)
+ for record in data_sample:
+ print('________________format ori___________________')
+ print(record['code'])
+ print('________________format format___________________')
+ print(record['code_format'])
diff --git a/sk2decompile/Preprocess/inf_type.py b/sk2decompile/Preprocess/inf_type.py
new file mode 100644
index 0000000..a31373f
--- /dev/null
+++ b/sk2decompile/Preprocess/inf_type.py
@@ -0,0 +1,144 @@
+import os
+import sys
+import json
+import tempfile
+import subprocess
+from functools import partial
+from tqdm import tqdm
+import argparse
+def process_one(sample_src, generator, solver):
+ """
+ Write sample_src to temp file (sample.c),
+ run generator -> sample.cstr,
+ run solver -> sample.h,
+ read header, return header text.
+ Any temp files are cleaned up automatically.
+ """
+ with tempfile.TemporaryDirectory() as tmpdir:
+ sample_path = os.path.join(tmpdir, "sample.c")
+ output_path = os.path.join(tmpdir, "sample.cstr")
+ header_path = os.path.join(tmpdir, "sample.h")
+
+ # 1) dump the C鈥恠ource
+ with open(sample_path, "w", encoding="utf-8") as f:
+ f.write(sample_src)
+
+ try:
+ # 2) run the generator
+ subprocess.run(
+ [generator, sample_path, "-o", output_path],
+ check=True,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ timeout=1,
+ )
+ # 3) run the solver
+ subprocess.run(
+ ["stack", "exec", solver, "--", "-i", output_path, "-o", header_path],
+ check=True,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ timeout=1,
+ )
+
+ # 4) read back the .h
+ with open(header_path, "r", encoding="utf-8") as f:
+ return f.read()
+
+ # except subprocess.CalledProcessError as e:
+ # sys.stderr.write(
+ # f"[ERROR] sample failed:\n"
+ # f" cmd: {e.cmd!r}\n"
+ # f" returncode: {e.returncode}\n"
+ # f" stdout: {e.stdout.decode(errors='ignore')}\n"
+ # f" stderr: {e.stderr.decode(errors='ignore')}\n"
+ # )
+ except Exception as e:
+ return None
+
+
+def main():
+ p = argparse.ArgumentParser(description="Batch鈥恜rocess C samples into headers.")
+ p.add_argument("--input_json", default="train_norm.json", help="Path to JSON file with a list of {{'code': 鈥} entries")
+ p.add_argument("--output_name", default="train_type", help="Where to write the augmented JSON")
+ p.add_argument("--generator", default="/psychec/psychecgen", help="Path to your generator executable")
+ p.add_argument("--solver", default="/psychec/psychecsolver-exe", help="Name of your solver (for `stack exec 鈥)")
+ p.add_argument("--split", type=int, default=5, help="split the data to split parts")
+ p.add_argument("--idx", type=int, default=0, help="index of the split")
+ args = p.parse_args()
+
+ # load
+ with open(args.input_json, "r", encoding="utf-8") as f:
+ samples = json.load(f)
+
+ if args.split != 0:
+ SPLIT = int(len(samples) / args.split)
+ if args.idx == args.split - 1:
+ samples = samples[SPLIT * args.idx:]
+ else:
+ samples = samples[SPLIT * args.idx:SPLIT * (args.idx + 1)]
+
+ # pull out all the code鈥恠trings
+ codes = [s["code_format"] for s in samples]############# code norm is the final expectation
+
+ # prepare a partial that only needs the code
+ worker = partial(process_one, generator=args.generator, solver=args.solver)
+
+ memo = {}
+ results = []
+ count_non = 0
+ for code in tqdm(codes):
+ if code not in memo:
+ header = worker(code)
+ if header == None:
+ count_non += 1
+ memo[code] = header
+ results.append(memo[code])
+ if len(results) % 5000 == 0:
+ print(f"len code:{len(codes)}, fail:{count_non}")
+
+ for sample, header in zip(samples, results):
+ sample["header"] = header
+
+ # dump out
+ with open(args.output_name+'_'+str(args.idx)+'.json', "w", encoding="utf-8") as f:
+ json.dump(samples, f, indent=2)
+ print(f"len code:{len(codes)}, fail:{count_non}")
+
+def folder():
+ p = argparse.ArgumentParser(description="Batch鈥恜rocess C samples into headers.")
+ p.add_argument("--input_folder", default="/workspace/llm4binary/type/evaluation/result/exebench-8800_github1000")
+ # p.add_argument("--output_name", default="train_type", help="Where to write the augmented JSON")
+ p.add_argument("--generator", default="../psychec/psychecgen", help="Path to your generator executable")
+ p.add_argument("--solver", default="../psychec/psychecsolver-exe", help="Name of your solver (for `stack exec 鈥)")
+ # p.add_argument("--split", type=int, default=5, help="split the data to split parts")
+ # p.add_argument("--idx", type=int, default=0, help="index of the split")
+ args = p.parse_args()
+ worker = partial(process_one, generator=args.generator, solver=args.solver)
+ good = 0
+ bad = 1
+ for root, dirs, files in tqdm(os.walk(args.input_folder)):
+ for filename in files:
+ if filename.endswith(".c"):
+ file_path = os.path.join(root, filename)
+ with open(file_path, 'r') as f:
+ code = f.read()
+ header = worker(code)
+ with open(file_path.split('.c')[0] + ".h", 'w') as f:
+ if header:
+ good += 1
+ f.write(header)
+ else:
+ bad += 1
+ print(f'good:{good},bad:{bad}')
+ f.write("")
+
+
+if __name__ == "__main__":
+ # folder()
+ main()
+
+
+
+# ../psychec/psychecgen ./output/ori/3.c -o ./output/cstr/3.cstr
+# stack exec ../psychec/psychecsolver-exe -- -i ./output/cstr/3.cstr -o ./output/header/3.h
diff --git a/sk2decompile/Preprocess/normalize_src_basedonpseudo.py b/sk2decompile/Preprocess/normalize_src_basedonpseudo.py
new file mode 100644
index 0000000..795d66e
--- /dev/null
+++ b/sk2decompile/Preprocess/normalize_src_basedonpseudo.py
@@ -0,0 +1,212 @@
+import re
+import json
+import argparse
+from multiprocessing import Pool, cpu_count
+from tqdm import tqdm # ✅ 添加进度条模块
+import random
+
+import subprocess
+
+def good_func(func):
+ func = '{'.join(func.split('{')[1:])
+ func_sp = func.split('\n')
+ total = 0
+ for line in func_sp:
+ if len(line.strip())>=3:
+ total+=1
+ if total>3 and total<300:
+ return True
+ return False
+def strip_empty(code):
+ return "\n".join(line for line in code.splitlines() if line.strip())
+def format_with_clang(func: str, style: str = "Google") -> str:
+ # Build the command
+ if not func:
+ return None
+ cmd = ["clang-format", f"--style={style}"]
+ try:
+ proc = subprocess.run(
+ cmd,
+ input=func,
+ text=True,
+ capture_output=True,
+ check=True,
+ timeout=0.5
+ )
+ return proc.stdout
+ except Exception as e:
+ # print(f"clang-format failed:{e}")
+ # print(func)
+ # print('-------------------------')
+ return None
+
+
+# ----------------------------
+# 1. 十六进制转十进制
+# ----------------------------
+def hex_to_dec(text):
+ pattern = re.compile(r'\b(0x[0-9a-fA-F]+)([uUlL]{1,3})?\b')
+ def convert(match):
+ hex_part = match.group(1)
+ suffix = match.group(2) or ""
+ dec_value = str(int(hex_part, 16))
+ return dec_value + suffix
+ return pattern.sub(convert, text)
+
+
+# ----------------------------
+# 2. 删除特定关键字
+# ----------------------------
+def remove_keywords(text):
+ patterns = [
+ r'\b__fastcall\b',
+ r'\b__cdecl\b',
+ r'\b__ptr32\b',
+ r'\b__noreturn\s+noreturn\b'
+ ]
+ combined_pattern = re.compile('|'.join(patterns))
+ return combined_pattern.sub('', text)
+
+
+# ----------------------------
+# 3. 替换 typedef 类型为原始类型
+# ----------------------------
+typedef_map = {
+ "cpu_set_t": "int",
+ "nl_item": "int",
+ "__time_t": "int",
+ "__mode_t": "unsigned short",
+ "__off64_t": "long long",
+ "__blksize_t": "long",
+ "__ino_t": "unsigned long",
+ "__blkcnt_t": "unsigned long long",
+ "__syscall_slong_t": "long",
+ "__ssize_t": "long int",
+ "wchar_t": "unsigned short int",
+ "wctype_t": "unsigned short int",
+ "__int64": "long long",
+ "__int32": "int",
+ "__int16": "short",
+ "__int8": "char",
+ "_QWORD": "uint64_t",
+ "_OWORD": "long double",
+ "_DWORD": "uint32_t",
+ "size_t": "unsigned int",
+ "_BYTE": "uint8_t",
+ "_TBYTE": "uint16_t",
+ "_BOOL8": "uint8_t",
+ "gcc_va_list": "va_list",
+ "_WORD": "unsigned short",
+ "_BOOL4": "int",
+ "__va_list_tag": "va_list",
+ "_IO_FILE": "FILE",
+ "DIR": "int",
+ "__fsword_t": "long",
+ "__kernel_ulong_t": "int",
+ "cc_t": "int",
+ "speed_t": "int",
+ "fd_set": "int",
+ "__suseconds_t": "int",
+ "_UNKNOWN": "void",
+ "__sighandler_t": "void (*)(int)",
+ "__compar_fn_t": "int (*)(const void *, const void *)",
+}
+
+def replace_typedefs(text):
+ for alias, original in typedef_map.items():
+ pattern = re.compile(rf'\b{re.escape(alias)}\b')
+ text = pattern.sub(original, text)
+ return text
+
+
+# ----------------------------
+# 4. 删除注释
+# ----------------------------
+def remove_comments(text):
+ text = re.sub(r'/\*.*?\*/', '', text, flags=re.DOTALL)
+ text = re.sub(r'//.*?$', '', text, flags=re.MULTILINE)
+ return text
+
+
+# ----------------------------
+# 5. 单条伪代码处理
+# ----------------------------
+def process_code(code_str):
+ code_str = remove_comments(code_str)
+ code_str = hex_to_dec(code_str)
+ code_str = remove_keywords(code_str)
+ code_str = replace_typedefs(code_str)
+ return code_str
+
+
+# 包装 process_code,使其接受一个 dict 并处理字段
+def process_entry(entry, key_name='pseudo'):
+ # result = {}
+
+ # # 原始字段保留
+ # result['ida_pseudo'] = entry.get('ida_pseudo', '')
+ # result['ida_strip_pseudo'] = entry.get('ida_strip_pseudo', '')
+
+ # # 分别处理两个字段
+ # result['ida_pseudo_result'] = process_code(result['ida_pseudo'])
+ # result['ida_strip_pseudo_result'] = process_code(result['ida_strip_pseudo'])
+
+ result = process_code(entry.get(key_name, ''))
+ if not result.strip():
+ return ''
+ formatted = format_with_clang(result)
+ if formatted is None:
+ return None
+ cleaned = strip_empty(formatted)
+
+ return cleaned
+
+# 主函数
+def normalize_code_list_parallel(input_json, output_json, key_name='pseudo', num_workers=None, remove=1):
+ with open(input_json, 'r', encoding='utf-8') as f:
+ data = json.load(f)
+
+ if not isinstance(data, list):
+ raise ValueError("输入 JSON 应为对象数组")
+
+ num_workers = num_workers or cpu_count()
+ print(f"[+] 开始处理 {len(data)} 条记录,使用 {num_workers} 个进程")
+
+ from functools import partial
+ process_entry_key = partial(process_entry, key_name=key_name)
+
+ with Pool(processes=num_workers) as pool:
+ result = list(tqdm(pool.imap(process_entry_key, data), total=len(data), desc="Processing"))
+
+ data_good = []
+ for record, norm in zip(data, result):
+ if norm:
+ if not good_func(norm):
+ continue
+ record[f"{key_name}_norm"] = norm
+ data_good.append(record)
+ elif norm is None:
+ if not remove:
+ record[f"{key_name}_norm"] = record[f"{key_name}"]
+ data_good.append(record)
+
+ with open(output_json, 'w', encoding='utf-8') as f:
+ json.dump(data_good, f, indent=2, ensure_ascii=False)
+
+ print(f"[✓] 完成处理:{input_json}:{len(data)} → {output_json}:{len(data_good)}")
+
+
+
+# ----------------------------
+# 7. 命令行入口
+# ----------------------------
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser(description="并行处理 IDA 伪代码字符串列表")
+ parser.add_argument('--input_json', default="exebench_format_top1p.json", help='输入 JSON 文件路径(每项为字符串)')
+ parser.add_argument('--output_json', default="exebench_format_pseudo_top1p.json", help='输出 JSON 文件路径')
+ parser.add_argument('--key_name', default="pseudo", help='输出 JSON 文件路径')
+ parser.add_argument('--workers', type=int, default=32, help='进程数默认使用8核心')
+ parser.add_argument('--remove', type=int, default=1, help='remove fail cases')
+ args = parser.parse_args()
+
+ normalize_code_list_parallel(args.input_json, args.output_json, args.key_name, args.workers, args.remove)
\ No newline at end of file
diff --git a/sk2decompile/Preprocess/standard_c.txt b/sk2decompile/Preprocess/standard_c.txt
new file mode 100644
index 0000000..0631515
--- /dev/null
+++ b/sk2decompile/Preprocess/standard_c.txt
@@ -0,0 +1 @@
+printf, scanf, fprintf, fscanf, sprintf, snprintf, sscanf, fopen, fclose, fread, fwrite, fgetc, fputc, fgets, fputs, fseek, ftell, rewind, remove, rename, tmpfile, tmpnam, clearerr, feof, ferror, perror, malloc, calloc, realloc, free, atoi, atol, atof, strtol, strtoul, strtod, rand, srand, exit, abort, atexit, system, getenv, abs, labs, div, ldiv, qsort, bsearch, strcpy, strncpy, strcat, strncat, strcmp, strncmp, strlen, strchr, strrchr, strstr, strtok, memset, memcpy, memmove, memcmp, memchr, strerror, sin, cos, tan, asin, acos, atan, atan2, sinh, cosh, tanh, exp, log, log10, pow, sqrt, cbrt, hypot, ceil, floor, round, fabs, fmod, ldexp, frexp, modf, erf, erfc, time, clock, difftime, mktime, asctime, ctime, gmtime, localtime, strftime, isalnum, isalpha, iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, isupper, isxdigit, isblank, tolower, toupper,printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf, scanf, fscanf, sscanf, getchar, putchar, fgets, fputs, fgetc, fputc, fopen, fclose, fread, fwrite, fflush, rewind, fseek, ftell, perror, malloc, calloc, realloc, free, exit, atexit, system, getenv, atoi, atol, atoll, atof, strtol, strtoul, strtod, rand, srand, bsearch, qsort, abs, labs, llabs, strcpy, strncpy, strcat, strncat, strcmp, strncmp, strlen, strchr, strrchr, strstr, strtok, memset, memcpy, memmove, memcmp, isalpha, isdigit, isalnum, isspace, toupper, tolower, sin, cos, tan, asin, acos, atan, atan2, sinh, cosh, tanh, exp, log, log10, pow, sqrt, ceil, floor, fabs, fmod, time, clock, difftime, mktime, localtime, assert, strerror, setlocale, signal, raise, feof, ferror
diff --git a/sk2decompile/README.md b/sk2decompile/README.md
new file mode 100644
index 0000000..b48dcdb
--- /dev/null
+++ b/sk2decompile/README.md
@@ -0,0 +1,195 @@
+# SK²Decompile
+
+**SK²Decompile: LLM-based Two-Phase Binary Decompilation from Skeleton to Skin**
+
+
+ 🚀 Quick Start
+ | 🤖 Training Pipeline
+ | 📊 Evaluation
+ | 📝 Citation
+
+
+## Overview
+
+SK²Decompile is a novel two-phase framework for binary decompilation using Large Language Models (LLMs). Our approach decomposes the complex decompilation task into two manageable phases:
+
+- **Phase 1 Structure Recovery (Skeleton)**: Transform binary/pseudo-code into obfuscated intermediate representations 🤗 [HF Link](https://huggingface.co/LLM4Binary/sk2decompile-struct-6.7b)
+- **Phase 2 Identifier Naming (Skin)**: Generate human-readable source code with meaningful identifiers 🤗 [HF Link](https://huggingface.co/LLM4Binary/sk2decompile-ident-6.7)
+
+This repository contains the complete implementation of our paper, including data preprocessing tools, training scripts, and evaluation benchmarks.
+
+## 🏗️ Architecture
+
+Our two-phase approach is inspired by the skeleton-to-skin metaphor:
+
+```
+Binary/Pseudo-code → [Phase 1: Skeleton] → Normalized IR → [Phase 2: Skin] → Source Code
+ ↓ ↓
+ (Structure Extraction) (Identifier Recovery)
+```
+
+## 📁 Repository Structure
+
+```
+SK2Decompile/
+├── Preprocess/ # Data preprocessing and normalization tools
+├── LLaMA-Factory/ # Supervised Fine-Tuning (SFT) implementation
+├── verl/ # Reinforcement Learning (RL) with compiler-based rewards
+├── evaluation/ # Comprehensive evaluation suite
+└── README.md # This file
+```
+
+## 🚀 Quick Start
+
+### Prerequisites
+
+- Python 3.8+
+- CUDA 11.0+
+- PyTorch 2.0+
+- 40GB+ GPU memory (recommended)
+- [Psychec](https://github.com/ltcmelo/psychec.git) (for data preprocessing)
+
+### Installation
+
+```bash
+git clone https://github.com/yourusername/SK2Decompile.git
+cd SK2Decompile
+```
+
+## 🤖 Training Pipeline
+
+### Phase 0: Data Preprocessing
+
+Transform raw pseudo-code into normalized representations suitable for training:
+
+```bash
+cd Preprocess
+
+# Requirements
+pip install tree-sitter==0.24.0 tree-sitter-c==0.23.4 tqdm
+
+# Step 1: Normalize pseudo-code according to R2I standard
+python3 normalize_pseudo.py --input_json exebench_c.json --output_json exebench_pseudonorm.json --key_name pseudo
+
+# Step 2: Obfuscate source code to generate IR
+python3 normalize_src_basedonpseudo.py --input_json exebench_pseudonorm.json --output_json exebench_norm_top0.json --top 0 --pseudo pseudo_norm
+
+# Step 3: Format codes with clang-format
+python3 format.py --input exebench_norm_top0.json --output exebench_format_top0.json
+
+# Step 4: Infer types for obfuscated IR (used for compiler-based rewards)
+python3 inf_type.py --input_json train_format_top0.json --output_name train_format_top0_type \
+ --generator ../psychec/psychecgen --solver ../psychec/psychecsolver-exe --split 2 --idx 0
+```
+
+### Phase 1: Supervised Fine-Tuning (SFT)
+
+Our two-phase SFT approach trains specialized models for each transformation:
+
+#### Setup LLaMA-Factory
+```bash
+cd ../LLaMA-Factory
+# Follow installation instructions in LLaMA-Factory/README.md
+```
+
+#### Train Models
+```bash
+# Train Skeleton Model (pseudo2norm)
+llamafactory-cli train LLaMA-Factory/SK2DECOMPILE/train/pseudo2norm-example.yaml
+
+# Train Skin Model (norm2code)
+llamafactory-cli train LLaMA-Factory/SK2DECOMPILE/train/norm2code-example.yaml
+```
+
+**Sample Training Data:**
+- Pseudo2Norm: `LLaMA-Factory/SK2DECOMPILE/data/pseudo2norm-examples.jsonl`
+- Norm2Code: `LLaMA-Factory/SK2DECOMPILE/data/norm2code-examples.jsonl`
+
+### Phase 2: Reinforcement Learning (RL)
+
+Fine-tune models using compiler-based rewards for improved correctness:
+
+#### Setup VERL
+```bash
+cd ../verl
+# Follow installation instructions in verl/README.md
+```
+
+#### Run RL Training
+```bash
+bash verl/SK2DECOMPILE/train/sk2decompile-rl.sh
+```
+
+**RL Training Data:** `verl/SK2DECOMPILE/data/sk2decompile-rl-examples.parquet`
+
+### Phase 3: Evaluation
+
+Comprehensive evaluation on standard benchmarks:
+
+```bash
+cd ../evaluation
+# evaluate exe_rate
+python evaluate_exe.py --json_file your_json_file_path
+ --dcompilers decompiler1,decompiler2,...,decompilerN
+# evaluate r2i
+python evaluate_r2i.py --json_file your_json_file_path
+ --dcompilers decompiler1,decompiler2,...,decompilerN
+ --output_path your_output_path
+# evaluate gpt-judge
+python gpt_judge.py --json_file your_json_file_path
+ --decompilers decompiler1,decompiler2,...,decompilerN
+ --opt OPT
+ --api_key your_openai_api_key
+```
+
+## 📊 Results
+
+Our approach achieves state-of-the-art performance:
+
+| Metric | Dataset | Improvement |
+|--------|---------|-------------|
+| **Re-executability** | HumanEval | **+21.6%** over GPT-5-mini |
+| **R2I Score** | GitHub2025 | **+29.4%** over Idioms |
+
+## 🔬 Key Innovations
+
+1. **Two-Phase Decomposition**: Separating structure recovery from identifier prediction
+2. **Compiler-Based RL**: Using compiler feedback as reward signal
+3. **Generic Placeholders**: Language-agnostic intermediate representation
+4. **Independent Optimization**: Separate RL objectives for each phase
+
+## 📄 Citation
+
+If you use SK²Decompile in your research, please cite our paper:
+
+```bibtex
+@article{sk2decompile2024,
+ title={SK²Decompile: From Skeleton to Skin - A Two-Phase Approach for Binary Decompilation},
+ author={Your Name and Collaborators},
+ journal={arXiv preprint arXiv:XXXX.XXXXX},
+ year={2024}
+}
+```
+
+## 🤝 Contributing
+
+We welcome contributions! Areas of interest:
+- Support for additional architectures (ARM, RISC-V)
+- Integration with more decompilation tools
+- Improved intermediate representations
+- Multi-language support
+
+## 📄 License
+
+This project is licensed under the MIT License. See LICENSE file for details.
+
+## 🙏 Acknowledgments
+
+We thank the developers of:
+- [LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory) for the SFT framework
+- [VERL](https://github.com/volcengine/verl) for the RL implementation
+- [Psychec](https://github.com/ltcmelo/psychec.git) for C type inference
+
+---
+
+For detailed documentation on each component, please refer to the individual README files in each directory.
diff --git a/sk2decompile/evaluation/data/humaneval_normsrcpseudo.json b/sk2decompile/evaluation/data/humaneval_normsrcpseudo.json
new file mode 100644
index 0000000..cc1cef5
--- /dev/null
+++ b/sk2decompile/evaluation/data/humaneval_normsrcpseudo.json
@@ -0,0 +1,9641 @@
+[
+ {
+ "index": "HumanEval-C-0",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "int func0(float numbers[], int size, float threshold) {\n int i, j;\n for (i = 0; i < size; i++)\n for (j = i + 1; j < size; j++)\n if (fabs(numbers[i] - numbers[j]) < threshold) return 1;\n return 0;\n}",
+ "test": "#include \n#include \n\nint main(){\n float a[] = {1.0, 2.0, 3.9, 4.0, 5.0, 2.2};\n assert(func0(a, 6, 0.3) == 1);\n assert(func0(a, 6, 0.05) == 0);\n\n float b[] = {1.0, 2.0, 5.9, 4.0, 5.0};\n assert(func0(b, 5, 0.95) == 1);\n assert(func0(b, 5, 0.8) == 0);\n \n float c[] = {1.0, 2.0, 3.0, 4.0, 5.0};\n assert(func0(c, 5, 2.0) == 1);\n\n float d[] = {1.1, 2.2, 3.1, 4.1, 5.1};\n assert(func0(d, 5, 1.0) == 1);\n assert(func0(d, 5, 0.5) == 0);\n\n return 0;\n}",
+ "opt": "O0",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\nmov rbp, rsp\nmov [rbp+var_18], rdi\nmov [rbp+var_1C], esi\nmovss [rbp+var_20], xmm0\nmov [rbp+var_8], 0\njmp short loc_11F1\nloc_1186:\nmov eax, [rbp+var_8]\nadd eax, 1\nmov [rbp+var_4], eax\njmp short loc_11E5\nloc_1191:\nmov eax, [rbp+var_8]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmovss xmm0, dword ptr [rax]\nmov eax, [rbp+var_4]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmovss xmm1, dword ptr [rax]\nsubss xmm0, xmm1\nmovss xmm1, cs:dword_20D0\nandps xmm1, xmm0\nmovss xmm0, [rbp+var_20]\ncomiss xmm0, xmm1\njbe short loc_11E1\nmov eax, 1\njmp short loc_11FE\nloc_11E1:\nadd [rbp+var_4], 1\nloc_11E5:\nmov eax, [rbp+var_4]\ncmp eax, [rbp+var_1C]\njl short loc_1191\nadd [rbp+var_8], 1\nloc_11F1:\nmov eax, [rbp+var_8]\ncmp eax, [rbp+var_1C]\njl short loc_1186\nmov eax, 0\nloc_11FE:\npop rbp\nretn",
+ "ida_pseudo": "__int64 __fastcall func0(__int64 a1, int a2, float a3)\n{\n int i; // [rsp+18h] [rbp-8h]\n int j; // [rsp+1Ch] [rbp-4h]\n\n for ( i = 0; i < a2; ++i )\n {\n for ( j = i + 1; j < a2; ++j )\n {\n if ( a3 > fabs(*(float *)(4LL * i + a1) - *(float *)(4LL * j + a1)) )\n return 1LL;\n }\n }\n return 0LL;\n}",
+ "ida_strip_asm": "sub_1169:\nendbr64\npush rbp\nmov rbp, rsp\nmov [rbp+var_18], rdi\nmov [rbp+var_1C], esi\nmovss [rbp+var_20], xmm0\nmov [rbp+var_8], 0\njmp short loc_11F1\nloc_1186:\nmov eax, [rbp+var_8]\nadd eax, 1\nmov [rbp+var_4], eax\njmp short loc_11E5\nloc_1191:\nmov eax, [rbp+var_8]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmovss xmm0, dword ptr [rax]\nmov eax, [rbp+var_4]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmovss xmm1, dword ptr [rax]\nsubss xmm0, xmm1\nmovss xmm1, cs:dword_20D0\nandps xmm1, xmm0\nmovss xmm0, [rbp+var_20]\ncomiss xmm0, xmm1\njbe short loc_11E1\nmov eax, 1\njmp short loc_11FE\nloc_11E1:\nadd [rbp+var_4], 1\nloc_11E5:\nmov eax, [rbp+var_4]\ncmp eax, [rbp+var_1C]\njl short loc_1191\nadd [rbp+var_8], 1\nloc_11F1:\nmov eax, [rbp+var_8]\ncmp eax, [rbp+var_1C]\njl short loc_1186\nmov eax, 0\nloc_11FE:\npop rbp\nretn",
+ "ida_strip_pseudo": "__int64 __fastcall sub_1169(__int64 a1, int a2, float a3)\n{\n int i; // [rsp+18h] [rbp-8h]\n int j; // [rsp+1Ch] [rbp-4h]\n\n for ( i = 0; i < a2; ++i )\n {\n for ( j = i + 1; j < a2; ++j )\n {\n if ( a3 > fabs(*(float *)(4LL * i + a1) - *(float *)(4LL * j + a1)) )\n return 1LL;\n }\n }\n return 0LL;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "long long sub_1169(long long a1, int a2, float a3) {\n int i;\n int j;\n for (i = 0; i < a2; ++i) {\n for (j = i + 1; j < a2; ++j) {\n if (a3 > fabs(*(float *)(4LL * i + a1) - *(float *)(4LL * j + a1)))\n return 1LL;\n }\n }\n return 0LL;\n}",
+ "ida_pseudo_norm": "long long func0(long long a1, int a2, float a3) {\n int i;\n int j;\n for (i = 0; i < a2; ++i) {\n for (j = i + 1; j < a2; ++j) {\n if (a3 > fabs(*(float *)(4LL * i + a1) - *(float *)(4LL * j + a1)))\n return 1LL;\n }\n }\n return 0LL;\n}"
+ },
+ {
+ "index": "HumanEval-C-0",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "int func0(float numbers[], int size, float threshold) {\n int i, j;\n for (i = 0; i < size; i++)\n for (j = i + 1; j < size; j++)\n if (fabs(numbers[i] - numbers[j]) < threshold) return 1;\n return 0;\n}",
+ "test": "#include \n#include \n\nint main(){\n float a[] = {1.0, 2.0, 3.9, 4.0, 5.0, 2.2};\n assert(func0(a, 6, 0.3) == 1);\n assert(func0(a, 6, 0.05) == 0);\n\n float b[] = {1.0, 2.0, 5.9, 4.0, 5.0};\n assert(func0(b, 5, 0.95) == 1);\n assert(func0(b, 5, 0.8) == 0);\n \n float c[] = {1.0, 2.0, 3.0, 4.0, 5.0};\n assert(func0(c, 5, 2.0) == 1);\n\n float d[] = {1.1, 2.2, 3.1, 4.1, 5.1};\n assert(func0(d, 5, 1.0) == 1);\n assert(func0(d, 5, 0.5) == 0);\n\n return 0;\n}",
+ "opt": "O1",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\ntest esi, esi\njle short loc_11BD\nmov ecx, esi\nmovsxd r8, esi\nmov edx, 1\nmovss xmm3, cs:dword_20E0\nloc_1183:\ncmp rdx, rcx\njz short loc_11C3\nmovss xmm2, dword ptr [rdi+rdx*4-4]\nmov rax, rdx\nloc_1191:\nmovaps xmm1, xmm2\nsubss xmm1, dword ptr [rdi+rax*4]\nandps xmm1, xmm3\ncomiss xmm0, xmm1\nja short loc_11C9\nadd rax, 1\ncmp esi, eax\njg short loc_1191\nlea rax, [rdx+1]\ncmp rdx, r8\njz short loc_11B7\nmov rdx, rax\njmp short loc_1183\nloc_11B7:\nmov eax, 0\nretn\nloc_11BD:\nmov eax, 0\nretn\nloc_11C3:\nmov eax, 0\nretn\nloc_11C9:\nmov eax, 1\nretn",
+ "ida_pseudo": "__int64 __fastcall func0(__int64 a1, int a2, float a3)\n{\n __int64 v3; // rdx\n __int64 v4; // rax\n\n if ( a2 <= 0 )\n return 0LL;\n v3 = 1LL;\n while ( 2 )\n {\n if ( v3 == a2 )\n return 0LL;\n v4 = v3;\n do\n {\n if ( a3 > fabs(*(float *)(a1 + 4 * v3 - 4) - *(float *)(a1 + 4 * v4)) )\n return 1LL;\n ++v4;\n }\n while ( a2 > (int)v4 );\n if ( v3 != a2 )\n {\n ++v3;\n continue;\n }\n break;\n }\n return 0LL;\n}",
+ "ida_strip_asm": "sub_1169:\nendbr64\ntest esi, esi\njle short loc_11BD\nmov ecx, esi\nmovsxd r8, esi\nmov edx, 1\nmovss xmm3, cs:dword_20E0\nloc_1183:\ncmp rdx, rcx\njz short loc_11C3\nmovss xmm2, dword ptr [rdi+rdx*4-4]\nmov rax, rdx\nloc_1191:\nmovaps xmm1, xmm2\nsubss xmm1, dword ptr [rdi+rax*4]\nandps xmm1, xmm3\ncomiss xmm0, xmm1\nja short loc_11C9\nadd rax, 1\ncmp esi, eax\njg short loc_1191\nlea rax, [rdx+1]\ncmp rdx, r8\njz short loc_11B7\nmov rdx, rax\njmp short loc_1183\nloc_11B7:\nmov eax, 0\nretn\nloc_11BD:\nmov eax, 0\nretn\nloc_11C3:\nmov eax, 0\nretn\nloc_11C9:\nmov eax, 1\nretn",
+ "ida_strip_pseudo": "__int64 __fastcall sub_1169(__int64 a1, int a2, float a3)\n{\n __int64 v3; // rdx\n __int64 v4; // rax\n\n if ( a2 <= 0 )\n return 0LL;\n v3 = 1LL;\n while ( 2 )\n {\n if ( v3 == a2 )\n return 0LL;\n v4 = v3;\n do\n {\n if ( a3 > fabs(*(float *)(a1 + 4 * v3 - 4) - *(float *)(a1 + 4 * v4)) )\n return 1LL;\n ++v4;\n }\n while ( a2 > (int)v4 );\n if ( v3 != a2 )\n {\n ++v3;\n continue;\n }\n break;\n }\n return 0LL;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "long long sub_1169(long long a1, int a2, float a3) {\n long long v3;\n long long v4;\n if (a2 <= 0) return 0LL;\n v3 = 1LL;\n while (2) {\n if (v3 == a2) return 0LL;\n v4 = v3;\n do {\n if (a3 > fabs(*(float *)(a1 + 4 * v3 - 4) - *(float *)(a1 + 4 * v4)))\n return 1LL;\n ++v4;\n } while (a2 > (int)v4);\n if (v3 != a2) {\n ++v3;\n continue;\n }\n break;\n }\n return 0LL;\n}",
+ "ida_pseudo_norm": "long long func0(long long a1, int a2, float a3) {\n long long v3;\n long long v4;\n if (a2 <= 0) return 0LL;\n v3 = 1LL;\n while (2) {\n if (v3 == a2) return 0LL;\n v4 = v3;\n do {\n if (a3 > fabs(*(float *)(a1 + 4 * v3 - 4) - *(float *)(a1 + 4 * v4)))\n return 1LL;\n ++v4;\n } while (a2 > (int)v4);\n if (v3 != a2) {\n ++v3;\n continue;\n }\n break;\n }\n return 0LL;\n}"
+ },
+ {
+ "index": "HumanEval-C-0",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "int func0(float numbers[], int size, float threshold) {\n int i, j;\n for (i = 0; i < size; i++)\n for (j = i + 1; j < size; j++)\n if (fabs(numbers[i] - numbers[j]) < threshold) return 1;\n return 0;\n}",
+ "test": "#include \n#include \n\nint main(){\n float a[] = {1.0, 2.0, 3.9, 4.0, 5.0, 2.2};\n assert(func0(a, 6, 0.3) == 1);\n assert(func0(a, 6, 0.05) == 0);\n\n float b[] = {1.0, 2.0, 5.9, 4.0, 5.0};\n assert(func0(b, 5, 0.95) == 1);\n assert(func0(b, 5, 0.8) == 0);\n \n float c[] = {1.0, 2.0, 3.0, 4.0, 5.0};\n assert(func0(c, 5, 2.0) == 1);\n\n float d[] = {1.1, 2.2, 3.1, 4.1, 5.1};\n assert(func0(d, 5, 1.0) == 1);\n assert(func0(d, 5, 0.5) == 0);\n\n return 0;\n}",
+ "opt": "O2",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\ntest esi, esi\njle short loc_13F9\nmov ecx, esi\nmov edx, 1\nmovss xmm3, cs:dword_20E0\ncmp rdx, rcx\njz short loc_13F9\nloc_13BC:\nmovss xmm2, dword ptr [rdi+rdx*4-4]\nmov rax, rdx\njmp short loc_13D8\nloc_13D0:\nadd rax, 1\ncmp esi, eax\njle short loc_13F0\nloc_13D8:\nmovaps xmm1, xmm2\nsubss xmm1, dword ptr [rdi+rax*4]\nandps xmm1, xmm3\ncomiss xmm0, xmm1\njbe short loc_13D0\nmov eax, 1\nretn\nloc_13F0:\nadd rdx, 1\ncmp rdx, rcx\njnz short loc_13BC\nloc_13F9:\nxor eax, eax\nretn",
+ "ida_pseudo": "__int64 __fastcall func0(__int64 a1, int a2, float a3)\n{\n __int64 i; // rdx\n __int64 v4; // rax\n\n if ( a2 > 0 )\n {\n for ( i = 1LL; i != a2; ++i )\n {\n v4 = i;\n do\n {\n if ( a3 > fabs(*(float *)(a1 + 4 * i - 4) - *(float *)(a1 + 4 * v4)) )\n return 1LL;\n ++v4;\n }\n while ( a2 > (int)v4 );\n }\n }\n return 0LL;\n}",
+ "ida_strip_asm": "sub_13A0:\nendbr64\ntest esi, esi\njle short loc_13F9\nmov ecx, esi\nmov edx, 1\nmovss xmm3, cs:dword_20E0\ncmp rdx, rcx\njz short loc_13F9\nloc_13BC:\nmovss xmm2, dword ptr [rdi+rdx*4-4]\nmov rax, rdx\njmp short loc_13D8\nloc_13D0:\nadd rax, 1\ncmp esi, eax\njle short loc_13F0\nloc_13D8:\nmovaps xmm1, xmm2\nsubss xmm1, dword ptr [rdi+rax*4]\nandps xmm1, xmm3\ncomiss xmm0, xmm1\njbe short loc_13D0\nmov eax, 1\nretn\nloc_13F0:\nadd rdx, 1\ncmp rdx, rcx\njnz short loc_13BC\nloc_13F9:\nxor eax, eax\nretn",
+ "ida_strip_pseudo": "__int64 __fastcall sub_13A0(__int64 a1, int a2, float a3)\n{\n __int64 i; // rdx\n __int64 v4; // rax\n\n if ( a2 > 0 )\n {\n for ( i = 1LL; i != a2; ++i )\n {\n v4 = i;\n do\n {\n if ( a3 > fabs(*(float *)(a1 + 4 * i - 4) - *(float *)(a1 + 4 * v4)) )\n return 1LL;\n ++v4;\n }\n while ( a2 > (int)v4 );\n }\n }\n return 0LL;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "long long sub_13A0(long long a1, int a2, float a3) {\n long long i;\n long long v4;\n if (a2 > 0) {\n for (i = 1LL; i != a2; ++i) {\n v4 = i;\n do {\n if (a3 > fabs(*(float *)(a1 + 4 * i - 4) - *(float *)(a1 + 4 * v4)))\n return 1LL;\n ++v4;\n } while (a2 > (int)v4);\n }\n }\n return 0LL;\n}",
+ "ida_pseudo_norm": "long long func0(long long a1, int a2, float a3) {\n long long i;\n long long v4;\n if (a2 > 0) {\n for (i = 1LL; i != a2; ++i) {\n v4 = i;\n do {\n if (a3 > fabs(*(float *)(a1 + 4 * i - 4) - *(float *)(a1 + 4 * v4)))\n return 1LL;\n ++v4;\n } while (a2 > (int)v4);\n }\n }\n return 0LL;\n}"
+ },
+ {
+ "index": "HumanEval-C-1",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char** func0(const char* paren_string, int* group_count) {\n int length = strlen(paren_string);\n int level = 0;\n int capacity = 10;\n char** groups = malloc(capacity * sizeof(char*));\n char* buffer = malloc(length + 1);\n int buffer_index = 0;\n *group_count = 0;\n for (int i = 0; i < length; ++i) {\n char chr = paren_string[i];\n if (chr == '(') {\n level++;\n buffer[buffer_index++] = chr;\n } else if (chr == ')') {\n level--;\n buffer[buffer_index++] = chr;\n if (level == 0) {\n buffer[buffer_index] = '\\0';\n groups[*group_count] = strdup(buffer);\n (*group_count)++;\n if (*group_count >= capacity) {\n capacity *= 2;\n groups = realloc(groups, capacity * sizeof(char*));\n }\n buffer_index = 0;\n }\n }\n }\n free(buffer);\n return groups;\n}",
+ "test": "#include \n#include \n#include \n#include \n\nint issame(char** a, int a_size, const char* b[], int b_size) {\n if (a_size != b_size) {\n return 0;\n }\n for (int i = 0; i < a_size; i++) {\n if (strcmp(a[i], b[i]) != 0) {\n return 0;\n }\n }\n return 1;\n}\n\nvoid free_groups(char** groups, int size) {\n for (int i = 0; i < size; i++) {\n free(groups[i]);\n }\n free(groups);\n}\n\nint main() {\n int group_count;\n char** result;\n\n result = func0(\"(()()) ((())) () ((())()())\", &group_count);\n const char* expected1[] = {\"(()())\", \"((()))\", \"()\", \"((())()())\"};\n assert(issame(result, group_count, expected1, 4));\n free_groups(result, group_count);\n\n result = func0(\"() (()) ((())) (((())))\", &group_count);\n const char* expected2[] = {\"()\", \"(())\", \"((()))\", \"(((())))\"};\n assert(issame(result, group_count, expected2, 4));\n free_groups(result, group_count);\n\n result = func0(\"(()(())((())))\", &group_count);\n const char* expected3[] = {\"(()(())((())))\"};\n assert(issame(result, group_count, expected3, 1));\n free_groups(result, group_count);\n\n result = func0(\"( ) (( )) (( )( ))\", &group_count);\n const char* expected4[] = {\"()\", \"(())\", \"(()())\"};\n assert(issame(result, group_count, expected4, 3));\n free_groups(result, group_count);\n\n printf(\"All tests passed.\\n\");\n return 0;\n}",
+ "opt": "O0",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\nmov rbp, rsp\npush rbx\nsub rsp, 48h\nmov [rbp+s], rdi\nmov [rbp+var_50], rsi\nmov rax, [rbp+s]\nmov rdi, rax; s\ncall _strlen\nmov [rbp+var_24], eax\nmov [rbp+var_34], 0\nmov [rbp+var_30], 0Ah\nmov eax, [rbp+var_30]\ncdqe\nshl rax, 3\nmov rdi, rax; size\ncall _malloc\nmov [rbp+ptr], rax\nmov eax, [rbp+var_24]\nadd eax, 1\ncdqe\nmov rdi, rax; size\ncall _malloc\nmov [rbp+var_18], rax\nmov [rbp+var_2C], 0\nmov rax, [rbp+var_50]\nmov dword ptr [rax], 0\nmov [rbp+var_28], 0\njmp loc_13A8\nloc_12C1:\nmov eax, [rbp+var_28]\nmovsxd rdx, eax\nmov rax, [rbp+s]\nadd rax, rdx\nmovzx eax, byte ptr [rax]\nmov [rbp+var_35], al\ncmp [rbp+var_35], 28h ; '('\njnz short loc_12FC\nadd [rbp+var_34], 1\nmov eax, [rbp+var_2C]\nlea edx, [rax+1]\nmov [rbp+var_2C], edx\nmovsxd rdx, eax\nmov rax, [rbp+var_18]\nadd rdx, rax\nmovzx eax, [rbp+var_35]\nmov [rdx], al\njmp loc_13A4\nloc_12FC:\ncmp [rbp+var_35], 29h ; ')'\njnz loc_13A4\nsub [rbp+var_34], 1\nmov eax, [rbp+var_2C]\nlea edx, [rax+1]\nmov [rbp+var_2C], edx\nmovsxd rdx, eax\nmov rax, [rbp+var_18]\nadd rdx, rax\nmovzx eax, [rbp+var_35]\nmov [rdx], al\ncmp [rbp+var_34], 0\njnz short loc_13A4\nmov eax, [rbp+var_2C]\nmovsxd rdx, eax\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov byte ptr [rax], 0\nmov rax, [rbp+var_50]\nmov eax, [rax]\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+ptr]\nlea rbx, [rdx+rax]\nmov rax, [rbp+var_18]\nmov rdi, rax; s\ncall _strdup\nmov [rbx], rax\nmov rax, [rbp+var_50]\nmov eax, [rax]\nlea edx, [rax+1]\nmov rax, [rbp+var_50]\nmov [rax], edx\nmov rax, [rbp+var_50]\nmov eax, [rax]\ncmp [rbp+var_30], eax\njg short loc_139D\nshl [rbp+var_30], 1\nmov eax, [rbp+var_30]\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+ptr]\nmov rsi, rdx; size\nmov rdi, rax; ptr\ncall _realloc\nmov [rbp+ptr], rax\nloc_139D:\nmov [rbp+var_2C], 0\nloc_13A4:\nadd [rbp+var_28], 1\nloc_13A8:\nmov eax, [rbp+var_28]\ncmp eax, [rbp+var_24]\njl loc_12C1\nmov rax, [rbp+var_18]\nmov rdi, rax; ptr\ncall _free\nmov rax, [rbp+ptr]\nmov rbx, [rbp+var_8]\nleave\nretn",
+ "ida_pseudo": "char *__fastcall func0(const char *a1, int *a2)\n{\n int v2; // eax\n int v3; // eax\n char **v4; // rbx\n char v6; // [rsp+1Bh] [rbp-35h]\n int v7; // [rsp+1Ch] [rbp-34h]\n int v8; // [rsp+20h] [rbp-30h]\n int v9; // [rsp+24h] [rbp-2Ch]\n int i; // [rsp+28h] [rbp-28h]\n int v11; // [rsp+2Ch] [rbp-24h]\n char *ptr; // [rsp+30h] [rbp-20h]\n char *v13; // [rsp+38h] [rbp-18h]\n\n v11 = strlen(a1);\n v7 = 0;\n v8 = 10;\n ptr = (char *)malloc(0x50uLL);\n v13 = (char *)malloc(v11 + 1);\n v9 = 0;\n *a2 = 0;\n for ( i = 0; i < v11; ++i )\n {\n v6 = a1[i];\n if ( v6 == 40 )\n {\n ++v7;\n v2 = v9++;\n v13[v2] = 40;\n }\n else if ( v6 == 41 )\n {\n --v7;\n v3 = v9++;\n v13[v3] = 41;\n if ( !v7 )\n {\n v13[v9] = 0;\n v4 = (char **)&ptr[8 * *a2];\n *v4 = strdup(v13);\n if ( v8 <= ++*a2 )\n {\n v8 *= 2;\n ptr = (char *)realloc(ptr, 8LL * v8);\n }\n v9 = 0;\n }\n }\n }\n free(v13);\n return ptr;\n}",
+ "ida_strip_asm": "sub_1249:\nendbr64\npush rbp\nmov rbp, rsp\npush rbx\nsub rsp, 48h\nmov [rbp+s], rdi\nmov [rbp+var_50], rsi\nmov rax, [rbp+s]\nmov rdi, rax; s\ncall _strlen\nmov [rbp+var_24], eax\nmov [rbp+var_34], 0\nmov [rbp+var_30], 0Ah\nmov eax, [rbp+var_30]\ncdqe\nshl rax, 3\nmov rdi, rax; size\ncall _malloc\nmov [rbp+ptr], rax\nmov eax, [rbp+var_24]\nadd eax, 1\ncdqe\nmov rdi, rax; size\ncall _malloc\nmov [rbp+var_18], rax\nmov [rbp+var_2C], 0\nmov rax, [rbp+var_50]\nmov dword ptr [rax], 0\nmov [rbp+var_28], 0\njmp loc_13A8\nloc_12C1:\nmov eax, [rbp+var_28]\nmovsxd rdx, eax\nmov rax, [rbp+s]\nadd rax, rdx\nmovzx eax, byte ptr [rax]\nmov [rbp+var_35], al\ncmp [rbp+var_35], 28h ; '('\njnz short loc_12FC\nadd [rbp+var_34], 1\nmov eax, [rbp+var_2C]\nlea edx, [rax+1]\nmov [rbp+var_2C], edx\nmovsxd rdx, eax\nmov rax, [rbp+var_18]\nadd rdx, rax\nmovzx eax, [rbp+var_35]\nmov [rdx], al\njmp loc_13A4\nloc_12FC:\ncmp [rbp+var_35], 29h ; ')'\njnz loc_13A4\nsub [rbp+var_34], 1\nmov eax, [rbp+var_2C]\nlea edx, [rax+1]\nmov [rbp+var_2C], edx\nmovsxd rdx, eax\nmov rax, [rbp+var_18]\nadd rdx, rax\nmovzx eax, [rbp+var_35]\nmov [rdx], al\ncmp [rbp+var_34], 0\njnz short loc_13A4\nmov eax, [rbp+var_2C]\nmovsxd rdx, eax\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov byte ptr [rax], 0\nmov rax, [rbp+var_50]\nmov eax, [rax]\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+ptr]\nlea rbx, [rdx+rax]\nmov rax, [rbp+var_18]\nmov rdi, rax; s\ncall _strdup\nmov [rbx], rax\nmov rax, [rbp+var_50]\nmov eax, [rax]\nlea edx, [rax+1]\nmov rax, [rbp+var_50]\nmov [rax], edx\nmov rax, [rbp+var_50]\nmov eax, [rax]\ncmp [rbp+var_30], eax\njg short loc_139D\nshl [rbp+var_30], 1\nmov eax, [rbp+var_30]\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+ptr]\nmov rsi, rdx; size\nmov rdi, rax; ptr\ncall _realloc\nmov [rbp+ptr], rax\nloc_139D:\nmov [rbp+var_2C], 0\nloc_13A4:\nadd [rbp+var_28], 1\nloc_13A8:\nmov eax, [rbp+var_28]\ncmp eax, [rbp+var_24]\njl loc_12C1\nmov rax, [rbp+var_18]\nmov rdi, rax; ptr\ncall _free\nmov rax, [rbp+ptr]\nmov rbx, [rbp+var_8]\nleave\nretn",
+ "ida_strip_pseudo": "char *__fastcall sub_1249(const char *a1, int *a2)\n{\n int v2; // eax\n int v3; // eax\n char **v4; // rbx\n char v6; // [rsp+1Bh] [rbp-35h]\n int v7; // [rsp+1Ch] [rbp-34h]\n int v8; // [rsp+20h] [rbp-30h]\n int v9; // [rsp+24h] [rbp-2Ch]\n int i; // [rsp+28h] [rbp-28h]\n int v11; // [rsp+2Ch] [rbp-24h]\n char *ptr; // [rsp+30h] [rbp-20h]\n char *v13; // [rsp+38h] [rbp-18h]\n\n v11 = strlen(a1);\n v7 = 0;\n v8 = 10;\n ptr = (char *)malloc(0x50uLL);\n v13 = (char *)malloc(v11 + 1);\n v9 = 0;\n *a2 = 0;\n for ( i = 0; i < v11; ++i )\n {\n v6 = a1[i];\n if ( v6 == 40 )\n {\n ++v7;\n v2 = v9++;\n v13[v2] = 40;\n }\n else if ( v6 == 41 )\n {\n --v7;\n v3 = v9++;\n v13[v3] = 41;\n if ( !v7 )\n {\n v13[v9] = 0;\n v4 = (char **)&ptr[8 * *a2];\n *v4 = strdup(v13);\n if ( v8 <= ++*a2 )\n {\n v8 *= 2;\n ptr = (char *)realloc(ptr, 8LL * v8);\n }\n v9 = 0;\n }\n }\n }\n free(v13);\n return ptr;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "char *sub_1249(const char *a1, int *a2) {\n int v2;\n int v3;\n char **v4;\n char v6;\n int v7;\n int v8;\n int v9;\n int i;\n int v11;\n char *ptr;\n char *v13;\n v11 = strlen(a1);\n v7 = 0;\n v8 = 10;\n ptr = (char *)malloc(80uLL);\n v13 = (char *)malloc(v11 + 1);\n v9 = 0;\n *a2 = 0;\n for (i = 0; i < v11; ++i) {\n v6 = a1[i];\n if (v6 == 40) {\n ++v7;\n v2 = v9++;\n v13[v2] = 40;\n } else if (v6 == 41) {\n --v7;\n v3 = v9++;\n v13[v3] = 41;\n if (!v7) {\n v13[v9] = 0;\n v4 = (char **)&ptr[8 * *a2];\n *v4 = strdup(v13);\n if (v8 <= ++*a2) {\n v8 *= 2;\n ptr = (char *)realloc(ptr, 8LL * v8);\n }\n v9 = 0;\n }\n }\n }\n free(v13);\n return ptr;\n}",
+ "ida_pseudo_norm": "char *func0(const char *a1, int *a2) {\n int v2;\n int v3;\n char **v4;\n char v6;\n int v7;\n int v8;\n int v9;\n int i;\n int v11;\n char *ptr;\n char *v13;\n v11 = strlen(a1);\n v7 = 0;\n v8 = 10;\n ptr = (char *)malloc(80uLL);\n v13 = (char *)malloc(v11 + 1);\n v9 = 0;\n *a2 = 0;\n for (i = 0; i < v11; ++i) {\n v6 = a1[i];\n if (v6 == 40) {\n ++v7;\n v2 = v9++;\n v13[v2] = 40;\n } else if (v6 == 41) {\n --v7;\n v3 = v9++;\n v13[v3] = 41;\n if (!v7) {\n v13[v9] = 0;\n v4 = (char **)&ptr[8 * *a2];\n *v4 = strdup(v13);\n if (v8 <= ++*a2) {\n v8 *= 2;\n ptr = (char *)realloc(ptr, 8LL * v8);\n }\n v9 = 0;\n }\n }\n }\n free(v13);\n return ptr;\n}"
+ },
+ {
+ "index": "HumanEval-C-1",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char** func0(const char* paren_string, int* group_count) {\n int length = strlen(paren_string);\n int level = 0;\n int capacity = 10;\n char** groups = malloc(capacity * sizeof(char*));\n char* buffer = malloc(length + 1);\n int buffer_index = 0;\n *group_count = 0;\n for (int i = 0; i < length; ++i) {\n char chr = paren_string[i];\n if (chr == '(') {\n level++;\n buffer[buffer_index++] = chr;\n } else if (chr == ')') {\n level--;\n buffer[buffer_index++] = chr;\n if (level == 0) {\n buffer[buffer_index] = '\\0';\n groups[*group_count] = strdup(buffer);\n (*group_count)++;\n if (*group_count >= capacity) {\n capacity *= 2;\n groups = realloc(groups, capacity * sizeof(char*));\n }\n buffer_index = 0;\n }\n }\n }\n free(buffer);\n return groups;\n}",
+ "test": "#include \n#include \n#include \n#include \n\nint issame(char** a, int a_size, const char* b[], int b_size) {\n if (a_size != b_size) {\n return 0;\n }\n for (int i = 0; i < a_size; i++) {\n if (strcmp(a[i], b[i]) != 0) {\n return 0;\n }\n }\n return 1;\n}\n\nvoid free_groups(char** groups, int size) {\n for (int i = 0; i < size; i++) {\n free(groups[i]);\n }\n free(groups);\n}\n\nint main() {\n int group_count;\n char** result;\n\n result = func0(\"(()()) ((())) () ((())()())\", &group_count);\n const char* expected1[] = {\"(()())\", \"((()))\", \"()\", \"((())()())\"};\n assert(issame(result, group_count, expected1, 4));\n free_groups(result, group_count);\n\n result = func0(\"() (()) ((())) (((())))\", &group_count);\n const char* expected2[] = {\"()\", \"(())\", \"((()))\", \"(((())))\"};\n assert(issame(result, group_count, expected2, 4));\n free_groups(result, group_count);\n\n result = func0(\"(()(())((())))\", &group_count);\n const char* expected3[] = {\"(()(())((())))\"};\n assert(issame(result, group_count, expected3, 1));\n free_groups(result, group_count);\n\n result = func0(\"( ) (( )) (( )( ))\", &group_count);\n const char* expected4[] = {\"()\", \"(())\", \"(()())\"};\n assert(issame(result, group_count, expected4, 3));\n free_groups(result, group_count);\n\n printf(\"All tests passed.\\n\");\n return 0;\n}",
+ "opt": "O1",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r15\npush r14\npush r13\npush r12\npush rbp\npush rbx\nsub rsp, 18h\nmov r13, rdi\nmov r14, rsi\ncall _strlen\nmov rbp, rax\nmov edi, 50h ; 'P'; size\ncall _malloc\nmov r15, rax\nlea edi, [rbp+1]\nmovsxd rdi, edi; size\ncall _malloc\nmov r12, rax\nmov dword ptr [r14], 0\ntest ebp, ebp\njle loc_133A\nmov rbx, r13\nlea eax, [rbp-1]\nlea r13, [r13+rax+1]\nmov edx, 0\nmov [rsp+48h+var_44], 0Ah\nmov ebp, 0\njmp short loc_12C9\nloc_12B2:\nadd ebp, 1\nmovsxd rax, edx\nmov byte ptr [r12+rax], 28h ; '('\nlea edx, [rdx+1]\nloc_12C0:\nadd rbx, 1\ncmp rbx, r13\njz short loc_133A\nloc_12C9:\nmovzx eax, byte ptr [rbx]\ncmp al, 28h ; '('\njz short loc_12B2\ncmp al, 29h ; ')'\njnz short loc_12C0\nlea eax, [rdx+1]\nmovsxd rdx, edx\nmov byte ptr [r12+rdx], 29h ; ')'\nmov edx, eax\nsub ebp, 1\njnz short loc_12C0\ncdqe\nmov byte ptr [r12+rax], 0\nmovsxd rax, dword ptr [r14]\nlea rax, [r15+rax*8]\nmov [rsp+48h+var_40], rax\nmov rdi, r12; s\ncall _strdup\nmov rcx, [rsp+48h+var_40]\nmov [rcx], rax\nmov eax, [r14]\nadd eax, 1\nmov [r14], eax\nmov edx, ebp\nmov ecx, [rsp+48h+var_44]\ncmp eax, ecx\njl short loc_12C0\nshl [rsp+48h+var_44], 1\nmov eax, [rsp+48h+var_44]\nmovsxd rsi, eax\nshl rsi, 3; size\nmov rdi, r15; ptr\ncall _realloc\nmov r15, rax\nmov edx, ebp\njmp short loc_12C0\nloc_133A:\nmov rdi, r12; ptr\ncall _free\nmov rax, r15\nadd rsp, 18h\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn",
+ "ida_pseudo": "char *__fastcall func0(const char *a1, int *a2)\n{\n int v2; // ebp\n char *v3; // r15\n char *v4; // r12\n const char *v5; // rbx\n __int64 v6; // r13\n int v7; // edx\n int v8; // ebp\n int v9; // eax\n int v10; // eax\n int v12; // [rsp+4h] [rbp-44h]\n char **v13; // [rsp+8h] [rbp-40h]\n\n v2 = strlen(a1);\n v3 = (char *)malloc(0x50uLL);\n v4 = (char *)malloc(v2 + 1);\n *a2 = 0;\n if ( v2 > 0 )\n {\n v5 = a1;\n v6 = (__int64)&a1[v2 - 1 + 1];\n v7 = 0;\n v12 = 10;\n v8 = 0;\n do\n {\n if ( *v5 == 40 )\n {\n ++v8;\n v4[v7++] = 40;\n }\n else if ( *v5 == 41 )\n {\n v9 = v7 + 1;\n v4[v7++] = 41;\n if ( !--v8 )\n {\n v4[v9] = 0;\n v13 = (char **)&v3[8 * *a2];\n *v13 = strdup(v4);\n v10 = *a2 + 1;\n *a2 = v10;\n v7 = 0;\n if ( v10 >= v12 )\n {\n v12 *= 2;\n v3 = (char *)realloc(v3, 8LL * v12);\n v7 = 0;\n }\n }\n }\n ++v5;\n }\n while ( v5 != (const char *)v6 );\n }\n free(v4);\n return v3;\n}",
+ "ida_strip_asm": "sub_1249:\nendbr64\npush r15\npush r14\npush r13\npush r12\npush rbp\npush rbx\nsub rsp, 18h\nmov r13, rdi\nmov r14, rsi\ncall _strlen\nmov rbp, rax\nmov edi, 50h ; 'P'; size\ncall _malloc\nmov r15, rax\nlea edi, [rbp+1]\nmovsxd rdi, edi; size\ncall _malloc\nmov r12, rax\nmov dword ptr [r14], 0\ntest ebp, ebp\njle loc_133A\nmov rbx, r13\nlea eax, [rbp-1]\nlea r13, [r13+rax+1]\nmov edx, 0\nmov [rsp+48h+var_44], 0Ah\nmov ebp, 0\njmp short loc_12C9\nloc_12B2:\nadd ebp, 1\nmovsxd rax, edx\nmov byte ptr [r12+rax], 28h ; '('\nlea edx, [rdx+1]\nloc_12C0:\nadd rbx, 1\ncmp rbx, r13\njz short loc_133A\nloc_12C9:\nmovzx eax, byte ptr [rbx]\ncmp al, 28h ; '('\njz short loc_12B2\ncmp al, 29h ; ')'\njnz short loc_12C0\nlea eax, [rdx+1]\nmovsxd rdx, edx\nmov byte ptr [r12+rdx], 29h ; ')'\nmov edx, eax\nsub ebp, 1\njnz short loc_12C0\ncdqe\nmov byte ptr [r12+rax], 0\nmovsxd rax, dword ptr [r14]\nlea rax, [r15+rax*8]\nmov [rsp+48h+var_40], rax\nmov rdi, r12; s\ncall _strdup\nmov rcx, [rsp+48h+var_40]\nmov [rcx], rax\nmov eax, [r14]\nadd eax, 1\nmov [r14], eax\nmov edx, ebp\nmov ecx, [rsp+48h+var_44]\ncmp eax, ecx\njl short loc_12C0\nshl [rsp+48h+var_44], 1\nmov eax, [rsp+48h+var_44]\nmovsxd rsi, eax\nshl rsi, 3; size\nmov rdi, r15; ptr\ncall _realloc\nmov r15, rax\nmov edx, ebp\njmp short loc_12C0\nloc_133A:\nmov rdi, r12; ptr\ncall _free\nmov rax, r15\nadd rsp, 18h\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn",
+ "ida_strip_pseudo": "char *__fastcall sub_1249(const char *a1, int *a2)\n{\n int v2; // ebp\n char *v3; // r15\n char *v4; // r12\n const char *v5; // rbx\n __int64 v6; // r13\n int v7; // edx\n int v8; // ebp\n int v9; // eax\n int v10; // eax\n int v12; // [rsp+4h] [rbp-44h]\n char **v13; // [rsp+8h] [rbp-40h]\n\n v2 = strlen(a1);\n v3 = (char *)malloc(0x50uLL);\n v4 = (char *)malloc(v2 + 1);\n *a2 = 0;\n if ( v2 > 0 )\n {\n v5 = a1;\n v6 = (__int64)&a1[v2 - 1 + 1];\n v7 = 0;\n v12 = 10;\n v8 = 0;\n do\n {\n if ( *v5 == 40 )\n {\n ++v8;\n v4[v7++] = 40;\n }\n else if ( *v5 == 41 )\n {\n v9 = v7 + 1;\n v4[v7++] = 41;\n if ( !--v8 )\n {\n v4[v9] = 0;\n v13 = (char **)&v3[8 * *a2];\n *v13 = strdup(v4);\n v10 = *a2 + 1;\n *a2 = v10;\n v7 = 0;\n if ( v10 >= v12 )\n {\n v12 *= 2;\n v3 = (char *)realloc(v3, 8LL * v12);\n v7 = 0;\n }\n }\n }\n ++v5;\n }\n while ( v5 != (const char *)v6 );\n }\n free(v4);\n return v3;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "char *sub_1249(const char *a1, int *a2) {\n int v2;\n char *v3;\n char *v4;\n const char *v5;\n long long v6;\n int v7;\n int v8;\n int v9;\n int v10;\n int v12;\n char **v13;\n v2 = strlen(a1);\n v3 = (char *)malloc(80uLL);\n v4 = (char *)malloc(v2 + 1);\n *a2 = 0;\n if (v2 > 0) {\n v5 = a1;\n v6 = (long long)&a1[v2 - 1 + 1];\n v7 = 0;\n v12 = 10;\n v8 = 0;\n do {\n if (*v5 == 40) {\n ++v8;\n v4[v7++] = 40;\n } else if (*v5 == 41) {\n v9 = v7 + 1;\n v4[v7++] = 41;\n if (!--v8) {\n v4[v9] = 0;\n v13 = (char **)&v3[8 * *a2];\n *v13 = strdup(v4);\n v10 = *a2 + 1;\n *a2 = v10;\n v7 = 0;\n if (v10 >= v12) {\n v12 *= 2;\n v3 = (char *)realloc(v3, 8LL * v12);\n v7 = 0;\n }\n }\n }\n ++v5;\n } while (v5 != (const char *)v6);\n }\n free(v4);\n return v3;\n}",
+ "ida_pseudo_norm": "char *func0(const char *a1, int *a2) {\n int v2;\n char *v3;\n char *v4;\n const char *v5;\n long long v6;\n int v7;\n int v8;\n int v9;\n int v10;\n int v12;\n char **v13;\n v2 = strlen(a1);\n v3 = (char *)malloc(80uLL);\n v4 = (char *)malloc(v2 + 1);\n *a2 = 0;\n if (v2 > 0) {\n v5 = a1;\n v6 = (long long)&a1[v2 - 1 + 1];\n v7 = 0;\n v12 = 10;\n v8 = 0;\n do {\n if (*v5 == 40) {\n ++v8;\n v4[v7++] = 40;\n } else if (*v5 == 41) {\n v9 = v7 + 1;\n v4[v7++] = 41;\n if (!--v8) {\n v4[v9] = 0;\n v13 = (char **)&v3[8 * *a2];\n *v13 = strdup(v4);\n v10 = *a2 + 1;\n *a2 = v10;\n v7 = 0;\n if (v10 >= v12) {\n v12 *= 2;\n v3 = (char *)realloc(v3, 8LL * v12);\n v7 = 0;\n }\n }\n }\n ++v5;\n } while (v5 != (const char *)v6);\n }\n free(v4);\n return v3;\n}"
+ },
+ {
+ "index": "HumanEval-C-1",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char** func0(const char* paren_string, int* group_count) {\n int length = strlen(paren_string);\n int level = 0;\n int capacity = 10;\n char** groups = malloc(capacity * sizeof(char*));\n char* buffer = malloc(length + 1);\n int buffer_index = 0;\n *group_count = 0;\n for (int i = 0; i < length; ++i) {\n char chr = paren_string[i];\n if (chr == '(') {\n level++;\n buffer[buffer_index++] = chr;\n } else if (chr == ')') {\n level--;\n buffer[buffer_index++] = chr;\n if (level == 0) {\n buffer[buffer_index] = '\\0';\n groups[*group_count] = strdup(buffer);\n (*group_count)++;\n if (*group_count >= capacity) {\n capacity *= 2;\n groups = realloc(groups, capacity * sizeof(char*));\n }\n buffer_index = 0;\n }\n }\n }\n free(buffer);\n return groups;\n}",
+ "test": "#include \n#include \n#include \n#include \n\nint issame(char** a, int a_size, const char* b[], int b_size) {\n if (a_size != b_size) {\n return 0;\n }\n for (int i = 0; i < a_size; i++) {\n if (strcmp(a[i], b[i]) != 0) {\n return 0;\n }\n }\n return 1;\n}\n\nvoid free_groups(char** groups, int size) {\n for (int i = 0; i < size; i++) {\n free(groups[i]);\n }\n free(groups);\n}\n\nint main() {\n int group_count;\n char** result;\n\n result = func0(\"(()()) ((())) () ((())()())\", &group_count);\n const char* expected1[] = {\"(()())\", \"((()))\", \"()\", \"((())()())\"};\n assert(issame(result, group_count, expected1, 4));\n free_groups(result, group_count);\n\n result = func0(\"() (()) ((())) (((())))\", &group_count);\n const char* expected2[] = {\"()\", \"(())\", \"((()))\", \"(((())))\"};\n assert(issame(result, group_count, expected2, 4));\n free_groups(result, group_count);\n\n result = func0(\"(()(())((())))\", &group_count);\n const char* expected3[] = {\"(()(())((())))\"};\n assert(issame(result, group_count, expected3, 1));\n free_groups(result, group_count);\n\n result = func0(\"( ) (( )) (( )( ))\", &group_count);\n const char* expected4[] = {\"()\", \"(())\", \"(()())\"};\n assert(issame(result, group_count, expected4, 3));\n free_groups(result, group_count);\n\n printf(\"All tests passed.\\n\");\n return 0;\n}",
+ "opt": "O2",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r15\npush r14\nmov r14, rsi\npush r13\npush r12\npush rbp\npush rbx\nmov rbx, rdi\nsub rsp, 18h\ncall _strlen\nmov edi, 50h ; 'P'; size\nmov rbp, rax\ncall _malloc\nlea edi, [rbp+1]\nmovsxd rdi, edi; size\nmov [rsp+48h+ptr], rax\ncall _malloc\nmov dword ptr [r14], 0\nmov r15, rax\ntest ebp, ebp\njle short loc_15DC\nlea eax, [rbp-1]\nmov ecx, 0Ah\nxor ebp, ebp\nxor r12d, r12d\nlea r13, [rbx+rax+1]\njmp short loc_15BD\nloc_15B0:\ncmp al, 29h ; ')'\njz short loc_1600\nloc_15B4:\nadd rbx, 1\ncmp rbx, r13\njz short loc_15DC\nloc_15BD:\nmovzx eax, byte ptr [rbx]\ncmp al, 28h ; '('\njnz short loc_15B0\nmovsxd rax, ebp\nadd rbx, 1\nadd r12d, 1\nadd ebp, 1\nmov byte ptr [r15+rax], 28h ; '('\ncmp rbx, r13\njnz short loc_15BD\nloc_15DC:\nmov rdi, r15; ptr\ncall _free\nmov rax, [rsp+48h+ptr]\nadd rsp, 18h\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_1600:\nmovsxd rax, ebp\nadd ebp, 1\nmov byte ptr [r15+rax], 29h ; ')'\nsub r12d, 1\njnz short loc_15B4\nmovsxd rbp, ebp\nmovsxd rax, dword ptr [r14]\nmov rdx, [rsp+48h+ptr]\nmov rdi, r15; s\nmov byte ptr [r15+rbp], 0\nmov [rsp+48h+var_3C], ecx\nlea rbp, [rdx+rax*8]\ncall _strdup\nmov ecx, [rsp+48h+var_3C]\nmov [rbp+0], rax\nmov eax, [r14]\nxor ebp, ebp\nadd eax, 1\nmov [r14], eax\ncmp eax, ecx\njl loc_15B4\nadd ecx, ecx\nmov rdi, [rsp+48h+ptr]; ptr\nmovsxd rsi, ecx\nmov [rsp+48h+var_3C], ecx\nshl rsi, 3; size\ncall _realloc\nmov ecx, [rsp+48h+var_3C]\nmov [rsp+48h+ptr], rax\njmp loc_15B4",
+ "ida_pseudo": "char *__fastcall func0(const char *a1, int *a2)\n{\n const char *v2; // rbx\n int v3; // ebp\n char *v4; // rax\n char *v5; // r15\n __int64 v6; // rax\n int v7; // ecx\n int v8; // ebp\n int v9; // r12d\n __int64 v10; // r13\n __int64 v11; // rax\n __int64 v13; // rax\n __int64 v14; // rax\n char **v15; // rbp\n char *v16; // rax\n char *v17; // rax\n char *ptr; // [rsp+0h] [rbp-48h]\n int v19; // [rsp+Ch] [rbp-3Ch]\n\n v2 = a1;\n v3 = strlen(a1);\n ptr = (char *)malloc(0x50uLL);\n v4 = (char *)malloc(v3 + 1);\n *a2 = 0;\n v5 = v4;\n if ( v3 > 0 )\n {\n v6 = (unsigned int)(v3 - 1);\n v7 = 10;\n v8 = 0;\n v9 = 0;\n v10 = (__int64)&a1[v6 + 1];\n do\n {\n while ( *v2 == 40 )\n {\n v11 = v8;\n ++v2;\n ++v9;\n ++v8;\n v5[v11] = 40;\n if ( v2 == (const char *)v10 )\n goto LABEL_7;\n }\n if ( *v2 == 41 )\n {\n v13 = v8++;\n v5[v13] = 41;\n if ( !--v9 )\n {\n v14 = *a2;\n v5[v8] = 0;\n v19 = v7;\n v15 = (char **)&ptr[8 * v14];\n v16 = strdup(v5);\n v7 = v19;\n *v15 = v16;\n v8 = 0;\n LODWORD(v16) = *a2 + 1;\n *a2 = (int)v16;\n if ( (int)v16 >= v19 )\n {\n v17 = (char *)realloc(ptr, 16LL * v19);\n v7 = 2 * v19;\n ptr = v17;\n }\n }\n }\n ++v2;\n }\n while ( v2 != (const char *)v10 );\n }\nLABEL_7:\n free(v5);\n return ptr;\n}",
+ "ida_strip_asm": "sub_1550:\nendbr64\npush r15\npush r14\nmov r14, rsi\npush r13\npush r12\npush rbp\npush rbx\nmov rbx, rdi\nsub rsp, 18h\ncall _strlen\nmov edi, 50h ; 'P'; size\nmov rbp, rax\ncall _malloc\nlea edi, [rbp+1]\nmovsxd rdi, edi; size\nmov [rsp+48h+ptr], rax\ncall _malloc\nmov dword ptr [r14], 0\nmov r15, rax\ntest ebp, ebp\njle short loc_15DC\nlea eax, [rbp-1]\nmov ecx, 0Ah\nxor ebp, ebp\nxor r12d, r12d\nlea r13, [rbx+rax+1]\njmp short loc_15BD\nloc_15B0:\ncmp al, 29h ; ')'\njz short loc_1600\nloc_15B4:\nadd rbx, 1\ncmp rbx, r13\njz short loc_15DC\nloc_15BD:\nmovzx eax, byte ptr [rbx]\ncmp al, 28h ; '('\njnz short loc_15B0\nmovsxd rax, ebp\nadd rbx, 1\nadd r12d, 1\nadd ebp, 1\nmov byte ptr [r15+rax], 28h ; '('\ncmp rbx, r13\njnz short loc_15BD\nloc_15DC:\nmov rdi, r15; ptr\ncall _free\nmov rax, [rsp+48h+ptr]\nadd rsp, 18h\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_1600:\nmovsxd rax, ebp\nadd ebp, 1\nmov byte ptr [r15+rax], 29h ; ')'\nsub r12d, 1\njnz short loc_15B4\nmovsxd rbp, ebp\nmovsxd rax, dword ptr [r14]\nmov rdx, [rsp+48h+ptr]\nmov rdi, r15; s\nmov byte ptr [r15+rbp], 0\nmov [rsp+48h+var_3C], ecx\nlea rbp, [rdx+rax*8]\ncall _strdup\nmov ecx, [rsp+48h+var_3C]\nmov [rbp+0], rax\nmov eax, [r14]\nxor ebp, ebp\nadd eax, 1\nmov [r14], eax\ncmp eax, ecx\njl loc_15B4\nadd ecx, ecx\nmov rdi, [rsp+48h+ptr]; ptr\nmovsxd rsi, ecx\nmov [rsp+48h+var_3C], ecx\nshl rsi, 3; size\ncall _realloc\nmov ecx, [rsp+48h+var_3C]\nmov [rsp+48h+ptr], rax\njmp loc_15B4",
+ "ida_strip_pseudo": "char *__fastcall sub_1550(const char *a1, int *a2)\n{\n const char *v2; // rbx\n int v3; // ebp\n char *v4; // rax\n char *v5; // r15\n __int64 v6; // rax\n int v7; // ecx\n int v8; // ebp\n int v9; // r12d\n __int64 v10; // r13\n __int64 v11; // rax\n __int64 v13; // rax\n __int64 v14; // rax\n char **v15; // rbp\n char *v16; // rax\n char *v17; // rax\n char *ptr; // [rsp+0h] [rbp-48h]\n int v19; // [rsp+Ch] [rbp-3Ch]\n\n v2 = a1;\n v3 = strlen(a1);\n ptr = (char *)malloc(0x50uLL);\n v4 = (char *)malloc(v3 + 1);\n *a2 = 0;\n v5 = v4;\n if ( v3 > 0 )\n {\n v6 = (unsigned int)(v3 - 1);\n v7 = 10;\n v8 = 0;\n v9 = 0;\n v10 = (__int64)&a1[v6 + 1];\n do\n {\n while ( *v2 == 40 )\n {\n v11 = v8;\n ++v2;\n ++v9;\n ++v8;\n v5[v11] = 40;\n if ( v2 == (const char *)v10 )\n goto LABEL_7;\n }\n if ( *v2 == 41 )\n {\n v13 = v8++;\n v5[v13] = 41;\n if ( !--v9 )\n {\n v14 = *a2;\n v5[v8] = 0;\n v19 = v7;\n v15 = (char **)&ptr[8 * v14];\n v16 = strdup(v5);\n v7 = v19;\n *v15 = v16;\n v8 = 0;\n LODWORD(v16) = *a2 + 1;\n *a2 = (int)v16;\n if ( (int)v16 >= v19 )\n {\n v17 = (char *)realloc(ptr, 16LL * v19);\n v7 = 2 * v19;\n ptr = v17;\n }\n }\n }\n ++v2;\n }\n while ( v2 != (const char *)v10 );\n }\nLABEL_7:\n free(v5);\n return ptr;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "char *sub_1550(const char *a1, int *a2) {\n const char *v2;\n int v3;\n char *v4;\n char *v5;\n long long v6;\n int v7;\n int v8;\n int v9;\n long long v10;\n long long v11;\n long long v13;\n long long v14;\n char **v15;\n char *v16;\n char *v17;\n char *ptr;\n int v19;\n v2 = a1;\n v3 = strlen(a1);\n ptr = (char *)malloc(80uLL);\n v4 = (char *)malloc(v3 + 1);\n *a2 = 0;\n v5 = v4;\n if (v3 > 0) {\n v6 = (unsigned int)(v3 - 1);\n v7 = 10;\n v8 = 0;\n v9 = 0;\n v10 = (long long)&a1[v6 + 1];\n do {\n while (*v2 == 40) {\n v11 = v8;\n ++v2;\n ++v9;\n ++v8;\n v5[v11] = 40;\n if (v2 == (const char *)v10) goto LABEL_7;\n }\n if (*v2 == 41) {\n v13 = v8++;\n v5[v13] = 41;\n if (!--v9) {\n v14 = *a2;\n v5[v8] = 0;\n v19 = v7;\n v15 = (char **)&ptr[8 * v14];\n v16 = strdup(v5);\n v7 = v19;\n *v15 = v16;\n v8 = 0;\n LODWORD(v16) = *a2 + 1;\n *a2 = (int)v16;\n if ((int)v16 >= v19) {\n v17 = (char *)realloc(ptr, 16LL * v19);\n v7 = 2 * v19;\n ptr = v17;\n }\n }\n }\n ++v2;\n } while (v2 != (const char *)v10);\n }\nLABEL_7:\n free(v5);\n return ptr;\n}",
+ "ida_pseudo_norm": "char *func0(const char *a1, int *a2) {\n const char *v2;\n int v3;\n char *v4;\n char *v5;\n long long v6;\n int v7;\n int v8;\n int v9;\n long long v10;\n long long v11;\n long long v13;\n long long v14;\n char **v15;\n char *v16;\n char *v17;\n char *ptr;\n int v19;\n v2 = a1;\n v3 = strlen(a1);\n ptr = (char *)malloc(80uLL);\n v4 = (char *)malloc(v3 + 1);\n *a2 = 0;\n v5 = v4;\n if (v3 > 0) {\n v6 = (unsigned int)(v3 - 1);\n v7 = 10;\n v8 = 0;\n v9 = 0;\n v10 = (long long)&a1[v6 + 1];\n do {\n while (*v2 == 40) {\n v11 = v8;\n ++v2;\n ++v9;\n ++v8;\n v5[v11] = 40;\n if (v2 == (const char *)v10) goto LABEL_7;\n }\n if (*v2 == 41) {\n v13 = v8++;\n v5[v13] = 41;\n if (!--v9) {\n v14 = *a2;\n v5[v8] = 0;\n v19 = v7;\n v15 = (char **)&ptr[8 * v14];\n v16 = strdup(v5);\n v7 = v19;\n *v15 = v16;\n v8 = 0;\n LODWORD(v16) = *a2 + 1;\n *a2 = (int)v16;\n if ((int)v16 >= v19) {\n v17 = (char *)realloc(ptr, 16LL * v19);\n v7 = 2 * v19;\n ptr = v17;\n }\n }\n }\n ++v2;\n } while (v2 != (const char *)v10);\n }\nLABEL_7:\n free(v5);\n return ptr;\n}"
+ },
+ {
+ "index": "HumanEval-C-1",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char** func0(const char* paren_string, int* group_count) {\n int length = strlen(paren_string);\n int level = 0;\n int capacity = 10;\n char** groups = malloc(capacity * sizeof(char*));\n char* buffer = malloc(length + 1);\n int buffer_index = 0;\n *group_count = 0;\n for (int i = 0; i < length; ++i) {\n char chr = paren_string[i];\n if (chr == '(') {\n level++;\n buffer[buffer_index++] = chr;\n } else if (chr == ')') {\n level--;\n buffer[buffer_index++] = chr;\n if (level == 0) {\n buffer[buffer_index] = '\\0';\n groups[*group_count] = strdup(buffer);\n (*group_count)++;\n if (*group_count >= capacity) {\n capacity *= 2;\n groups = realloc(groups, capacity * sizeof(char*));\n }\n buffer_index = 0;\n }\n }\n }\n free(buffer);\n return groups;\n}",
+ "test": "#include \n#include \n#include \n#include \n\nint issame(char** a, int a_size, const char* b[], int b_size) {\n if (a_size != b_size) {\n return 0;\n }\n for (int i = 0; i < a_size; i++) {\n if (strcmp(a[i], b[i]) != 0) {\n return 0;\n }\n }\n return 1;\n}\n\nvoid free_groups(char** groups, int size) {\n for (int i = 0; i < size; i++) {\n free(groups[i]);\n }\n free(groups);\n}\n\nint main() {\n int group_count;\n char** result;\n\n result = func0(\"(()()) ((())) () ((())()())\", &group_count);\n const char* expected1[] = {\"(()())\", \"((()))\", \"()\", \"((())()())\"};\n assert(issame(result, group_count, expected1, 4));\n free_groups(result, group_count);\n\n result = func0(\"() (()) ((())) (((())))\", &group_count);\n const char* expected2[] = {\"()\", \"(())\", \"((()))\", \"(((())))\"};\n assert(issame(result, group_count, expected2, 4));\n free_groups(result, group_count);\n\n result = func0(\"(()(())((())))\", &group_count);\n const char* expected3[] = {\"(()(())((())))\"};\n assert(issame(result, group_count, expected3, 1));\n free_groups(result, group_count);\n\n result = func0(\"( ) (( )) (( )( ))\", &group_count);\n const char* expected4[] = {\"()\", \"(())\", \"(()())\"};\n assert(issame(result, group_count, expected4, 3));\n free_groups(result, group_count);\n\n printf(\"All tests passed.\\n\");\n return 0;\n}",
+ "opt": "O3",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r15\npush r14\nmov r14, rsi\npush r13\npush r12\npush rbp\npush rbx\nmov rbx, rdi\nsub rsp, 18h\ncall _strlen\nmov edi, 50h ; 'P'; size\nmov rbp, rax\ncall _malloc\nlea edi, [rbp+1]\nmovsxd rdi, edi; size\nmov [rsp+48h+ptr], rax\ncall _malloc\nmov dword ptr [r14], 0\nmov r15, rax\ntest ebp, ebp\njle short loc_15DC\nlea eax, [rbp-1]\nmov ecx, 0Ah\nxor ebp, ebp\nxor r12d, r12d\nlea r13, [rbx+rax+1]\njmp short loc_15BD\nloc_15B0:\ncmp al, 29h ; ')'\njz short loc_1600\nloc_15B4:\nadd rbx, 1\ncmp rbx, r13\njz short loc_15DC\nloc_15BD:\nmovzx eax, byte ptr [rbx]\ncmp al, 28h ; '('\njnz short loc_15B0\nmovsxd rax, ebp\nadd rbx, 1\nadd r12d, 1\nadd ebp, 1\nmov byte ptr [r15+rax], 28h ; '('\ncmp rbx, r13\njnz short loc_15BD\nloc_15DC:\nmov rdi, r15; ptr\ncall _free\nmov rax, [rsp+48h+ptr]\nadd rsp, 18h\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_1600:\nmovsxd rax, ebp\nadd ebp, 1\nmov byte ptr [r15+rax], 29h ; ')'\nsub r12d, 1\njnz short loc_15B4\nmovsxd rbp, ebp\nmovsxd rax, dword ptr [r14]\nmov rdx, [rsp+48h+ptr]\nmov rdi, r15; s\nmov byte ptr [r15+rbp], 0\nmov [rsp+48h+var_3C], ecx\nlea rbp, [rdx+rax*8]\ncall _strdup\nmov ecx, [rsp+48h+var_3C]\nmov [rbp+0], rax\nmov eax, [r14]\nxor ebp, ebp\nadd eax, 1\nmov [r14], eax\ncmp eax, ecx\njl loc_15B4\nadd ecx, ecx\nmov rdi, [rsp+48h+ptr]; ptr\nmovsxd rsi, ecx\nmov [rsp+48h+var_3C], ecx\nshl rsi, 3; size\ncall _realloc\nmov ecx, [rsp+48h+var_3C]\nmov [rsp+48h+ptr], rax\njmp loc_15B4",
+ "ida_pseudo": "char *__fastcall func0(const char *a1, int *a2)\n{\n const char *v2; // rbx\n int v3; // ebp\n char *v4; // rax\n char *v5; // r15\n __int64 v6; // rax\n int v7; // ecx\n int v8; // ebp\n int v9; // r12d\n __int64 v10; // r13\n __int64 v11; // rax\n __int64 v13; // rax\n __int64 v14; // rax\n char **v15; // rbp\n char *v16; // rax\n char *v17; // rax\n char *ptr; // [rsp+0h] [rbp-48h]\n int v19; // [rsp+Ch] [rbp-3Ch]\n\n v2 = a1;\n v3 = strlen(a1);\n ptr = (char *)malloc(0x50uLL);\n v4 = (char *)malloc(v3 + 1);\n *a2 = 0;\n v5 = v4;\n if ( v3 > 0 )\n {\n v6 = (unsigned int)(v3 - 1);\n v7 = 10;\n v8 = 0;\n v9 = 0;\n v10 = (__int64)&a1[v6 + 1];\n do\n {\n while ( *v2 == 40 )\n {\n v11 = v8;\n ++v2;\n ++v9;\n ++v8;\n v5[v11] = 40;\n if ( v2 == (const char *)v10 )\n goto LABEL_7;\n }\n if ( *v2 == 41 )\n {\n v13 = v8++;\n v5[v13] = 41;\n if ( !--v9 )\n {\n v14 = *a2;\n v5[v8] = 0;\n v19 = v7;\n v15 = (char **)&ptr[8 * v14];\n v16 = strdup(v5);\n v7 = v19;\n *v15 = v16;\n v8 = 0;\n LODWORD(v16) = *a2 + 1;\n *a2 = (int)v16;\n if ( (int)v16 >= v19 )\n {\n v17 = (char *)realloc(ptr, 16LL * v19);\n v7 = 2 * v19;\n ptr = v17;\n }\n }\n }\n ++v2;\n }\n while ( v2 != (const char *)v10 );\n }\nLABEL_7:\n free(v5);\n return ptr;\n}",
+ "ida_strip_asm": "sub_1550:\nendbr64\npush r15\npush r14\nmov r14, rsi\npush r13\npush r12\npush rbp\npush rbx\nmov rbx, rdi\nsub rsp, 18h\ncall _strlen\nmov edi, 50h ; 'P'; size\nmov rbp, rax\ncall _malloc\nlea edi, [rbp+1]\nmovsxd rdi, edi; size\nmov [rsp+48h+ptr], rax\ncall _malloc\nmov dword ptr [r14], 0\nmov r15, rax\ntest ebp, ebp\njle short loc_15DC\nlea eax, [rbp-1]\nmov ecx, 0Ah\nxor ebp, ebp\nxor r12d, r12d\nlea r13, [rbx+rax+1]\njmp short loc_15BD\nloc_15B0:\ncmp al, 29h ; ')'\njz short loc_1600\nloc_15B4:\nadd rbx, 1\ncmp rbx, r13\njz short loc_15DC\nloc_15BD:\nmovzx eax, byte ptr [rbx]\ncmp al, 28h ; '('\njnz short loc_15B0\nmovsxd rax, ebp\nadd rbx, 1\nadd r12d, 1\nadd ebp, 1\nmov byte ptr [r15+rax], 28h ; '('\ncmp rbx, r13\njnz short loc_15BD\nloc_15DC:\nmov rdi, r15; ptr\ncall _free\nmov rax, [rsp+48h+ptr]\nadd rsp, 18h\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_1600:\nmovsxd rax, ebp\nadd ebp, 1\nmov byte ptr [r15+rax], 29h ; ')'\nsub r12d, 1\njnz short loc_15B4\nmovsxd rbp, ebp\nmovsxd rax, dword ptr [r14]\nmov rdx, [rsp+48h+ptr]\nmov rdi, r15; s\nmov byte ptr [r15+rbp], 0\nmov [rsp+48h+var_3C], ecx\nlea rbp, [rdx+rax*8]\ncall _strdup\nmov ecx, [rsp+48h+var_3C]\nmov [rbp+0], rax\nmov eax, [r14]\nxor ebp, ebp\nadd eax, 1\nmov [r14], eax\ncmp eax, ecx\njl loc_15B4\nadd ecx, ecx\nmov rdi, [rsp+48h+ptr]; ptr\nmovsxd rsi, ecx\nmov [rsp+48h+var_3C], ecx\nshl rsi, 3; size\ncall _realloc\nmov ecx, [rsp+48h+var_3C]\nmov [rsp+48h+ptr], rax\njmp loc_15B4",
+ "ida_strip_pseudo": "char *__fastcall sub_1550(const char *a1, int *a2)\n{\n const char *v2; // rbx\n int v3; // ebp\n char *v4; // rax\n char *v5; // r15\n __int64 v6; // rax\n int v7; // ecx\n int v8; // ebp\n int v9; // r12d\n __int64 v10; // r13\n __int64 v11; // rax\n __int64 v13; // rax\n __int64 v14; // rax\n char **v15; // rbp\n char *v16; // rax\n char *v17; // rax\n char *ptr; // [rsp+0h] [rbp-48h]\n int v19; // [rsp+Ch] [rbp-3Ch]\n\n v2 = a1;\n v3 = strlen(a1);\n ptr = (char *)malloc(0x50uLL);\n v4 = (char *)malloc(v3 + 1);\n *a2 = 0;\n v5 = v4;\n if ( v3 > 0 )\n {\n v6 = (unsigned int)(v3 - 1);\n v7 = 10;\n v8 = 0;\n v9 = 0;\n v10 = (__int64)&a1[v6 + 1];\n do\n {\n while ( *v2 == 40 )\n {\n v11 = v8;\n ++v2;\n ++v9;\n ++v8;\n v5[v11] = 40;\n if ( v2 == (const char *)v10 )\n goto LABEL_7;\n }\n if ( *v2 == 41 )\n {\n v13 = v8++;\n v5[v13] = 41;\n if ( !--v9 )\n {\n v14 = *a2;\n v5[v8] = 0;\n v19 = v7;\n v15 = (char **)&ptr[8 * v14];\n v16 = strdup(v5);\n v7 = v19;\n *v15 = v16;\n v8 = 0;\n LODWORD(v16) = *a2 + 1;\n *a2 = (int)v16;\n if ( (int)v16 >= v19 )\n {\n v17 = (char *)realloc(ptr, 16LL * v19);\n v7 = 2 * v19;\n ptr = v17;\n }\n }\n }\n ++v2;\n }\n while ( v2 != (const char *)v10 );\n }\nLABEL_7:\n free(v5);\n return ptr;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "char *sub_1550(const char *a1, int *a2) {\n const char *v2;\n int v3;\n char *v4;\n char *v5;\n long long v6;\n int v7;\n int v8;\n int v9;\n long long v10;\n long long v11;\n long long v13;\n long long v14;\n char **v15;\n char *v16;\n char *v17;\n char *ptr;\n int v19;\n v2 = a1;\n v3 = strlen(a1);\n ptr = (char *)malloc(80uLL);\n v4 = (char *)malloc(v3 + 1);\n *a2 = 0;\n v5 = v4;\n if (v3 > 0) {\n v6 = (unsigned int)(v3 - 1);\n v7 = 10;\n v8 = 0;\n v9 = 0;\n v10 = (long long)&a1[v6 + 1];\n do {\n while (*v2 == 40) {\n v11 = v8;\n ++v2;\n ++v9;\n ++v8;\n v5[v11] = 40;\n if (v2 == (const char *)v10) goto LABEL_7;\n }\n if (*v2 == 41) {\n v13 = v8++;\n v5[v13] = 41;\n if (!--v9) {\n v14 = *a2;\n v5[v8] = 0;\n v19 = v7;\n v15 = (char **)&ptr[8 * v14];\n v16 = strdup(v5);\n v7 = v19;\n *v15 = v16;\n v8 = 0;\n LODWORD(v16) = *a2 + 1;\n *a2 = (int)v16;\n if ((int)v16 >= v19) {\n v17 = (char *)realloc(ptr, 16LL * v19);\n v7 = 2 * v19;\n ptr = v17;\n }\n }\n }\n ++v2;\n } while (v2 != (const char *)v10);\n }\nLABEL_7:\n free(v5);\n return ptr;\n}",
+ "ida_pseudo_norm": "char *func0(const char *a1, int *a2) {\n const char *v2;\n int v3;\n char *v4;\n char *v5;\n long long v6;\n int v7;\n int v8;\n int v9;\n long long v10;\n long long v11;\n long long v13;\n long long v14;\n char **v15;\n char *v16;\n char *v17;\n char *ptr;\n int v19;\n v2 = a1;\n v3 = strlen(a1);\n ptr = (char *)malloc(80uLL);\n v4 = (char *)malloc(v3 + 1);\n *a2 = 0;\n v5 = v4;\n if (v3 > 0) {\n v6 = (unsigned int)(v3 - 1);\n v7 = 10;\n v8 = 0;\n v9 = 0;\n v10 = (long long)&a1[v6 + 1];\n do {\n while (*v2 == 40) {\n v11 = v8;\n ++v2;\n ++v9;\n ++v8;\n v5[v11] = 40;\n if (v2 == (const char *)v10) goto LABEL_7;\n }\n if (*v2 == 41) {\n v13 = v8++;\n v5[v13] = 41;\n if (!--v9) {\n v14 = *a2;\n v5[v8] = 0;\n v19 = v7;\n v15 = (char **)&ptr[8 * v14];\n v16 = strdup(v5);\n v7 = v19;\n *v15 = v16;\n v8 = 0;\n LODWORD(v16) = *a2 + 1;\n *a2 = (int)v16;\n if ((int)v16 >= v19) {\n v17 = (char *)realloc(ptr, 16LL * v19);\n v7 = 2 * v19;\n ptr = v17;\n }\n }\n }\n ++v2;\n } while (v2 != (const char *)v10);\n }\nLABEL_7:\n free(v5);\n return ptr;\n}"
+ },
+ {
+ "index": "HumanEval-C-2",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "float func0(float number) { return number - (int)number; }",
+ "test": "#include \n#include \n#include \n\nint main() {\n assert(func0(3.5f) == 0.5f);\n assert(fabs(func0(1.33f) - 0.33f) < 1e-4);\n assert(fabs(func0(123.456f) - 0.456f) < 1e-4);\n\n return 0;\n}",
+ "opt": "O0",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\nmov rbp, rsp\nmovss [rbp+var_4], xmm0\nmovss xmm0, [rbp+var_4]\ncvttss2si eax, xmm0\npxor xmm1, xmm1\ncvtsi2ss xmm1, eax\nmovss xmm0, [rbp+var_4]\nsubss xmm0, xmm1\npop rbp\nretn",
+ "ida_pseudo": "float __fastcall func0(float a1)\n{\n return a1 - (float)(int)a1;\n}",
+ "ida_strip_asm": "sub_1149:\nendbr64\npush rbp\nmov rbp, rsp\nmovss [rbp+var_4], xmm0\nmovss xmm0, [rbp+var_4]\ncvttss2si eax, xmm0\npxor xmm1, xmm1\ncvtsi2ss xmm1, eax\nmovss xmm0, [rbp+var_4]\nsubss xmm0, xmm1\npop rbp\nretn",
+ "ida_strip_pseudo": "float __fastcall sub_1149(float a1)\n{\n return a1 - (float)(int)a1;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "float sub_1149(float a1) { return a1 - (float)(int)a1; }",
+ "ida_pseudo_norm": "float func0(float a1) { return a1 - (float)(int)a1; }"
+ },
+ {
+ "index": "HumanEval-C-3",
+ "func_name": "func0",
+ "func_dep": "#include \n",
+ "func": "int func0(int operations[], int size) {\n int num = 0;\n for (int i = 0; i < size; i++) {\n num += operations[i];\n if (num < 0) return 1;\n }\n return 0;\n}",
+ "test": "#include \n\nint main() {\n int case1[] = {};\n assert(func0(case1, 0) == 0);\n\n int case2[] = {1, 2, -3, 1, 2, -3};\n assert(func0(case2, 6) == 0);\n\n int case3[] = {1, 2, -4, 5, 6};\n assert(func0(case3, 5) == 1);\n\n int case4[] = {1, -1, 2, -2, 5, -5, 4, -4};\n assert(func0(case4, 8) == 0);\n\n int case5[] = {1, -1, 2, -2, 5, -5, 4, -5};\n assert(func0(case5, 8) == 1);\n\n int case6[] = {1, -2, 2, -2, 5, -5, 4, -4};\n assert(func0(case6, 8) == 1);\n\n return 0;\n}",
+ "opt": "O0",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\nmov rbp, rsp\nmov [rbp+var_18], rdi\nmov [rbp+var_1C], esi\nmov [rbp+var_8], 0\nmov [rbp+var_4], 0\njmp short loc_11B2\nloc_1188:\nmov eax, [rbp+var_4]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov eax, [rax]\nadd [rbp+var_8], eax\ncmp [rbp+var_8], 0\njns short loc_11AE\nmov eax, 1\njmp short loc_11BF\nloc_11AE:\nadd [rbp+var_4], 1\nloc_11B2:\nmov eax, [rbp+var_4]\ncmp eax, [rbp+var_1C]\njl short loc_1188\nmov eax, 0\nloc_11BF:\npop rbp\nretn",
+ "ida_pseudo": "__int64 __fastcall func0(__int64 a1, int a2)\n{\n int v3; // [rsp+14h] [rbp-8h]\n int i; // [rsp+18h] [rbp-4h]\n\n v3 = 0;\n for ( i = 0; i < a2; ++i )\n {\n v3 += *(_DWORD *)(4LL * i + a1);\n if ( v3 < 0 )\n return 1LL;\n }\n return 0LL;\n}",
+ "ida_strip_asm": "sub_1169:\nendbr64\npush rbp\nmov rbp, rsp\nmov [rbp+var_18], rdi\nmov [rbp+var_1C], esi\nmov [rbp+var_8], 0\nmov [rbp+var_4], 0\njmp short loc_11B2\nloc_1188:\nmov eax, [rbp+var_4]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov eax, [rax]\nadd [rbp+var_8], eax\ncmp [rbp+var_8], 0\njns short loc_11AE\nmov eax, 1\njmp short loc_11BF\nloc_11AE:\nadd [rbp+var_4], 1\nloc_11B2:\nmov eax, [rbp+var_4]\ncmp eax, [rbp+var_1C]\njl short loc_1188\nmov eax, 0\nloc_11BF:\npop rbp\nretn",
+ "ida_strip_pseudo": "__int64 __fastcall sub_1169(__int64 a1, int a2)\n{\n int v3; // [rsp+14h] [rbp-8h]\n int i; // [rsp+18h] [rbp-4h]\n\n v3 = 0;\n for ( i = 0; i < a2; ++i )\n {\n v3 += *(_DWORD *)(4LL * i + a1);\n if ( v3 < 0 )\n return 1LL;\n }\n return 0LL;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "long long sub_1169(long long a1, int a2) {\n int v3;\n int i;\n v3 = 0;\n for (i = 0; i < a2; ++i) {\n v3 += *(uint32_t *)(4LL * i + a1);\n if (v3 < 0) return 1LL;\n }\n return 0LL;\n}",
+ "ida_pseudo_norm": "long long func0(long long a1, int a2) {\n int v3;\n int i;\n v3 = 0;\n for (i = 0; i < a2; ++i) {\n v3 += *(uint32_t *)(4LL * i + a1);\n if (v3 < 0) return 1LL;\n }\n return 0LL;\n}"
+ },
+ {
+ "index": "HumanEval-C-3",
+ "func_name": "func0",
+ "func_dep": "#include \n",
+ "func": "int func0(int operations[], int size) {\n int num = 0;\n for (int i = 0; i < size; i++) {\n num += operations[i];\n if (num < 0) return 1;\n }\n return 0;\n}",
+ "test": "#include \n\nint main() {\n int case1[] = {};\n assert(func0(case1, 0) == 0);\n\n int case2[] = {1, 2, -3, 1, 2, -3};\n assert(func0(case2, 6) == 0);\n\n int case3[] = {1, 2, -4, 5, 6};\n assert(func0(case3, 5) == 1);\n\n int case4[] = {1, -1, 2, -2, 5, -5, 4, -4};\n assert(func0(case4, 8) == 0);\n\n int case5[] = {1, -1, 2, -2, 5, -5, 4, -5};\n assert(func0(case5, 8) == 1);\n\n int case6[] = {1, -2, 2, -2, 5, -5, 4, -4};\n assert(func0(case6, 8) == 1);\n\n return 0;\n}",
+ "opt": "O1",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\ntest esi, esi\njle short loc_11A1\nmov edx, [rdi]\ntest edx, edx\njs short loc_11A7\nadd rdi, 4\nlea eax, [rsi-1]\nlea rcx, [rdi+rax*4]\nloc_1182:\ncmp rdi, rcx\njz short loc_119B\nmov eax, edx\nadd eax, [rdi]\nmov edx, eax\nadd rdi, 4\ntest eax, eax\njns short loc_1182\nmov eax, 1\nretn\nloc_119B:\nmov eax, 0\nretn\nloc_11A1:\nmov eax, 0\nretn\nloc_11A7:\nmov eax, 1\nretn",
+ "ida_pseudo": "__int64 __fastcall func0(int *a1, int a2)\n{\n int v2; // edx\n _DWORD *v3; // rdi\n _DWORD *v4; // rcx\n\n if ( a2 <= 0 )\n return 0LL;\n v2 = *a1;\n if ( *a1 < 0 )\n return 1LL;\n v3 = a1 + 1;\n v4 = &v3[a2 - 1];\n while ( v3 != v4 )\n {\n v2 += *v3++;\n if ( v2 < 0 )\n return 1LL;\n }\n return 0LL;\n}",
+ "ida_strip_asm": "sub_1169:\nendbr64\ntest esi, esi\njle short loc_11A1\nmov edx, [rdi]\ntest edx, edx\njs short loc_11A7\nadd rdi, 4\nlea eax, [rsi-1]\nlea rcx, [rdi+rax*4]\nloc_1182:\ncmp rdi, rcx\njz short loc_119B\nmov eax, edx\nadd eax, [rdi]\nmov edx, eax\nadd rdi, 4\ntest eax, eax\njns short loc_1182\nmov eax, 1\nretn\nloc_119B:\nmov eax, 0\nretn\nloc_11A1:\nmov eax, 0\nretn\nloc_11A7:\nmov eax, 1\nretn",
+ "ida_strip_pseudo": "__int64 __fastcall sub_1169(int *a1, int a2)\n{\n int v2; // edx\n _DWORD *v3; // rdi\n _DWORD *v4; // rcx\n\n if ( a2 <= 0 )\n return 0LL;\n v2 = *a1;\n if ( *a1 < 0 )\n return 1LL;\n v3 = a1 + 1;\n v4 = &v3[a2 - 1];\n while ( v3 != v4 )\n {\n v2 += *v3++;\n if ( v2 < 0 )\n return 1LL;\n }\n return 0LL;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "long long sub_1169(int *a1, int a2) {\n int v2;\n uint32_t *v3;\n uint32_t *v4;\n if (a2 <= 0) return 0LL;\n v2 = *a1;\n if (*a1 < 0) return 1LL;\n v3 = a1 + 1;\n v4 = &v3[a2 - 1];\n while (v3 != v4) {\n v2 += *v3++;\n if (v2 < 0) return 1LL;\n }\n return 0LL;\n}",
+ "ida_pseudo_norm": "long long func0(int *a1, int a2) {\n int v2;\n uint32_t *v3;\n uint32_t *v4;\n if (a2 <= 0) return 0LL;\n v2 = *a1;\n if (*a1 < 0) return 1LL;\n v3 = a1 + 1;\n v4 = &v3[a2 - 1];\n while (v3 != v4) {\n v2 += *v3++;\n if (v2 < 0) return 1LL;\n }\n return 0LL;\n}"
+ },
+ {
+ "index": "HumanEval-C-4",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "float func0(float numbers[], int size) {\n float sum = 0;\n float avg, msum, mavg;\n int i = 0;\n for (i = 0; i < size; i++) sum += numbers[i];\n avg = sum / size;\n msum = 0;\n for (i = 0; i < size; i++) msum += fabs(numbers[i] - avg);\n return msum / size;\n}",
+ "test": "#include \n#include \n\nint main() {\n float case1[] = {1.0, 2.0, 3.0};\n assert(fabs(func0(case1, 3) - 2.0/3.0) < 1e-4);\n\n float case2[] = {1.0, 2.0, 3.0, 4.0};\n assert(fabs(func0(case2, 4) - 1.0) < 1e-4);\n\n float case3[] = {1.0, 2.0, 3.0, 4.0, 5.0};\n assert(fabs(func0(case3, 5) - 6.0/5.0) < 1e-4);\n\n return 0;\n}",
+ "opt": "O0",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\nmov rbp, rsp\nmov [rbp+var_18], rdi\nmov [rbp+var_1C], esi\npxor xmm0, xmm0\nmovss [rbp+var_10], xmm0\nmov [rbp+var_8], 0\nmov [rbp+var_8], 0\njmp short loc_11BB\nloc_1191:\nmov eax, [rbp+var_8]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmovss xmm0, dword ptr [rax]\nmovss xmm1, [rbp+var_10]\naddss xmm0, xmm1\nmovss [rbp+var_10], xmm0\nadd [rbp+var_8], 1\nloc_11BB:\nmov eax, [rbp+var_8]\ncmp eax, [rbp+var_1C]\njl short loc_1191\npxor xmm1, xmm1\ncvtsi2ss xmm1, [rbp+var_1C]\nmovss xmm0, [rbp+var_10]\ndivss xmm0, xmm1\nmovss [rbp+var_4], xmm0\npxor xmm0, xmm0\nmovss [rbp+var_C], xmm0\nmov [rbp+var_8], 0\njmp short loc_1226\nloc_11EC:\nmov eax, [rbp+var_8]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmovss xmm0, dword ptr [rax]\nsubss xmm0, [rbp+var_4]\nmovss xmm1, cs:dword_20B0\nandps xmm0, xmm1\nmovss xmm1, [rbp+var_C]\naddss xmm0, xmm1\nmovss [rbp+var_C], xmm0\nadd [rbp+var_8], 1\nloc_1226:\nmov eax, [rbp+var_8]\ncmp eax, [rbp+var_1C]\njl short loc_11EC\npxor xmm1, xmm1\ncvtsi2ss xmm1, [rbp+var_1C]\nmovss xmm0, [rbp+var_C]\ndivss xmm0, xmm1\npop rbp\nretn",
+ "ida_pseudo": "float __fastcall func0(__int64 a1, int a2)\n{\n float v3; // [rsp+Ch] [rbp-10h]\n float v4; // [rsp+10h] [rbp-Ch]\n int i; // [rsp+14h] [rbp-8h]\n int j; // [rsp+14h] [rbp-8h]\n\n v3 = 0.0;\n for ( i = 0; i < a2; ++i )\n v3 = *(float *)(4LL * i + a1) + v3;\n v4 = 0.0;\n for ( j = 0; j < a2; ++j )\n v4 = fabs(*(float *)(4LL * j + a1) - (float)(v3 / (float)a2)) + v4;\n return v4 / (float)a2;\n}",
+ "ida_strip_asm": "sub_1169:\nendbr64\npush rbp\nmov rbp, rsp\nmov [rbp+var_18], rdi\nmov [rbp+var_1C], esi\npxor xmm0, xmm0\nmovss [rbp+var_10], xmm0\nmov [rbp+var_8], 0\nmov [rbp+var_8], 0\njmp short loc_11BB\nloc_1191:\nmov eax, [rbp+var_8]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmovss xmm0, dword ptr [rax]\nmovss xmm1, [rbp+var_10]\naddss xmm0, xmm1\nmovss [rbp+var_10], xmm0\nadd [rbp+var_8], 1\nloc_11BB:\nmov eax, [rbp+var_8]\ncmp eax, [rbp+var_1C]\njl short loc_1191\npxor xmm1, xmm1\ncvtsi2ss xmm1, [rbp+var_1C]\nmovss xmm0, [rbp+var_10]\ndivss xmm0, xmm1\nmovss [rbp+var_4], xmm0\npxor xmm0, xmm0\nmovss [rbp+var_C], xmm0\nmov [rbp+var_8], 0\njmp short loc_1226\nloc_11EC:\nmov eax, [rbp+var_8]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmovss xmm0, dword ptr [rax]\nsubss xmm0, [rbp+var_4]\nmovss xmm1, cs:dword_20B0\nandps xmm0, xmm1\nmovss xmm1, [rbp+var_C]\naddss xmm0, xmm1\nmovss [rbp+var_C], xmm0\nadd [rbp+var_8], 1\nloc_1226:\nmov eax, [rbp+var_8]\ncmp eax, [rbp+var_1C]\njl short loc_11EC\npxor xmm1, xmm1\ncvtsi2ss xmm1, [rbp+var_1C]\nmovss xmm0, [rbp+var_C]\ndivss xmm0, xmm1\npop rbp\nretn",
+ "ida_strip_pseudo": "float __fastcall sub_1169(__int64 a1, int a2)\n{\n float v3; // [rsp+Ch] [rbp-10h]\n float v4; // [rsp+10h] [rbp-Ch]\n int i; // [rsp+14h] [rbp-8h]\n int j; // [rsp+14h] [rbp-8h]\n\n v3 = 0.0;\n for ( i = 0; i < a2; ++i )\n v3 = *(float *)(4LL * i + a1) + v3;\n v4 = 0.0;\n for ( j = 0; j < a2; ++j )\n v4 = fabs(*(float *)(4LL * j + a1) - (float)(v3 / (float)a2)) + v4;\n return v4 / (float)a2;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "float sub_1169(long long a1, int a2) {\n float v3;\n float v4;\n int i;\n int j;\n v3 = 0.0;\n for (i = 0; i < a2; ++i) v3 = *(float *)(4LL * i + a1) + v3;\n v4 = 0.0;\n for (j = 0; j < a2; ++j)\n v4 = fabs(*(float *)(4LL * j + a1) - (float)(v3 / (float)a2)) + v4;\n return v4 / (float)a2;\n}",
+ "ida_pseudo_norm": "float func0(long long a1, int a2) {\n float v3;\n float v4;\n int i;\n int j;\n v3 = 0.0;\n for (i = 0; i < a2; ++i) v3 = *(float *)(4LL * i + a1) + v3;\n v4 = 0.0;\n for (j = 0; j < a2; ++j)\n v4 = fabs(*(float *)(4LL * j + a1) - (float)(v3 / (float)a2)) + v4;\n return v4 / (float)a2;\n}"
+ },
+ {
+ "index": "HumanEval-C-4",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "float func0(float numbers[], int size) {\n float sum = 0;\n float avg, msum, mavg;\n int i = 0;\n for (i = 0; i < size; i++) sum += numbers[i];\n avg = sum / size;\n msum = 0;\n for (i = 0; i < size; i++) msum += fabs(numbers[i] - avg);\n return msum / size;\n}",
+ "test": "#include \n#include \n\nint main() {\n float case1[] = {1.0, 2.0, 3.0};\n assert(fabs(func0(case1, 3) - 2.0/3.0) < 1e-4);\n\n float case2[] = {1.0, 2.0, 3.0, 4.0};\n assert(fabs(func0(case2, 4) - 1.0) < 1e-4);\n\n float case3[] = {1.0, 2.0, 3.0, 4.0, 5.0};\n assert(fabs(func0(case3, 5) - 6.0/5.0) < 1e-4);\n\n return 0;\n}",
+ "opt": "O1",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\ntest esi, esi\njle short loc_11C4\nmov rax, rdi\nmovsxd rdx, esi\nlea rdx, [rdi+rdx*4]\npxor xmm0, xmm0\nloc_117F:\naddss xmm0, dword ptr [rdi]\nadd rdi, 4\ncmp rdi, rdx\njnz short loc_117F\npxor xmm4, xmm4\ncvtsi2ss xmm4, esi\ndivss xmm0, xmm4\npxor xmm2, xmm2\nmovss xmm3, cs:dword_20B0\nloc_11A4:\nmovss xmm1, dword ptr [rax]\nsubss xmm1, xmm0\nandps xmm1, xmm3\naddss xmm2, xmm1\nadd rax, 4\ncmp rax, rdx\njnz short loc_11A4\nloc_11BC:\ndivss xmm2, xmm4\nmovaps xmm0, xmm2\nretn\nloc_11C4:\npxor xmm4, xmm4\ncvtsi2ss xmm4, esi\npxor xmm2, xmm2\njmp short loc_11BC",
+ "ida_pseudo": "__int128 __usercall func0@(float *a1@, int a2@)\n{\n float *v2; // rax\n float *v3; // rdx\n float v4; // xmm0_4\n float v5; // xmm4_4\n float v6; // xmm0_4\n __int128 v7; // xmm2\n\n if ( a2 <= 0 )\n {\n v5 = (float)a2;\n v7 = 0LL;\n }\n else\n {\n v2 = a1;\n v3 = &a1[a2];\n v4 = 0.0;\n do\n v4 = v4 + *a1++;\n while ( a1 != v3 );\n v5 = (float)a2;\n v6 = v4 / (float)a2;\n v7 = 0LL;\n do\n *(float *)&v7 = *(float *)&v7 + fabs(*v2++ - v6);\n while ( v2 != v3 );\n }\n *(float *)&v7 = *(float *)&v7 / v5;\n return v7;\n}",
+ "ida_strip_asm": "sub_1169:\nendbr64\ntest esi, esi\njle short loc_11C4\nmov rax, rdi\nmovsxd rdx, esi\nlea rdx, [rdi+rdx*4]\npxor xmm0, xmm0\nloc_117F:\naddss xmm0, dword ptr [rdi]\nadd rdi, 4\ncmp rdi, rdx\njnz short loc_117F\npxor xmm4, xmm4\ncvtsi2ss xmm4, esi\ndivss xmm0, xmm4\npxor xmm2, xmm2\nmovss xmm3, cs:dword_20B0\nloc_11A4:\nmovss xmm1, dword ptr [rax]\nsubss xmm1, xmm0\nandps xmm1, xmm3\naddss xmm2, xmm1\nadd rax, 4\ncmp rax, rdx\njnz short loc_11A4\nloc_11BC:\ndivss xmm2, xmm4\nmovaps xmm0, xmm2\nretn\nloc_11C4:\npxor xmm4, xmm4\ncvtsi2ss xmm4, esi\npxor xmm2, xmm2\njmp short loc_11BC",
+ "ida_strip_pseudo": "__int128 __usercall sub_1169@(float *a1@, int a2@)\n{\n float *v2; // rax\n float *v3; // rdx\n float v4; // xmm0_4\n float v5; // xmm4_4\n float v6; // xmm0_4\n __int128 v7; // xmm2\n\n if ( a2 <= 0 )\n {\n v5 = (float)a2;\n v7 = 0LL;\n }\n else\n {\n v2 = a1;\n v3 = &a1[a2];\n v4 = 0.0;\n do\n v4 = v4 + *a1++;\n while ( a1 != v3 );\n v5 = (float)a2;\n v6 = v4 / (float)a2;\n v7 = 0LL;\n do\n *(float *)&v7 = *(float *)&v7 + fabs(*v2++ - v6);\n while ( v2 != v3 );\n }\n *(float *)&v7 = *(float *)&v7 / v5;\n return v7;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "__int128 __usercall sub_1169 @(float *a1 @, int a2 @) {\n float *v2;\n float *v3;\n float v4;\n float v5;\n float v6;\n __int128 v7;\n if (a2 <= 0) {\n v5 = (float)a2;\n v7 = 0LL;\n } else {\n v2 = a1;\n v3 = &a1[a2];\n v4 = 0.0;\n do\n v4 = v4 + *a1++;\n while (a1 != v3);\n v5 = (float)a2;\n v6 = v4 / (float)a2;\n v7 = 0LL;\n do\n *(float *)&v7 = *(float *)&v7 + fabs(*v2++ - v6);\n while (v2 != v3);\n }\n *(float *)&v7 = *(float *)&v7 / v5;\n return v7;\n}",
+ "ida_pseudo_norm": "__int128 __usercall func0 @(float *a1 @, int a2 @) {\n float *v2;\n float *v3;\n float v4;\n float v5;\n float v6;\n __int128 v7;\n if (a2 <= 0) {\n v5 = (float)a2;\n v7 = 0LL;\n } else {\n v2 = a1;\n v3 = &a1[a2];\n v4 = 0.0;\n do\n v4 = v4 + *a1++;\n while (a1 != v3);\n v5 = (float)a2;\n v6 = v4 / (float)a2;\n v7 = 0LL;\n do\n *(float *)&v7 = *(float *)&v7 + fabs(*v2++ - v6);\n while (v2 != v3);\n }\n *(float *)&v7 = *(float *)&v7 / v5;\n return v7;\n}"
+ },
+ {
+ "index": "HumanEval-C-4",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "float func0(float numbers[], int size) {\n float sum = 0;\n float avg, msum, mavg;\n int i = 0;\n for (i = 0; i < size; i++) sum += numbers[i];\n avg = sum / size;\n msum = 0;\n for (i = 0; i < size; i++) msum += fabs(numbers[i] - avg);\n return msum / size;\n}",
+ "test": "#include \n#include \n\nint main() {\n float case1[] = {1.0, 2.0, 3.0};\n assert(fabs(func0(case1, 3) - 2.0/3.0) < 1e-4);\n\n float case2[] = {1.0, 2.0, 3.0, 4.0};\n assert(fabs(func0(case2, 4) - 1.0) < 1e-4);\n\n float case3[] = {1.0, 2.0, 3.0, 4.0, 5.0};\n assert(fabs(func0(case3, 5) - 6.0/5.0) < 1e-4);\n\n return 0;\n}",
+ "opt": "O2",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npxor xmm4, xmm4\ncvtsi2ss xmm4, esi\ntest esi, esi\njle short loc_1330\nmovsxd rsi, esi\nmov rax, rdi\npxor xmm0, xmm0\nlea rdx, [rdi+rsi*4]\nand esi, 1\njz short loc_12E0\nlea rax, [rdi+4]\naddss xmm0, dword ptr [rdi]\ncmp rdx, rax\njz short loc_12F2\nloc_12E0:\naddss xmm0, dword ptr [rax]\nadd rax, 8\naddss xmm0, dword ptr [rax-4]\ncmp rdx, rax\njnz short loc_12E0\nloc_12F2:\ndivss xmm0, xmm4\npxor xmm2, xmm2\nmovss xmm3, cs:dword_20B0\nnop word ptr [rax+rax+00h]\nloc_1308:\nmovss xmm1, dword ptr [rdi]\nadd rdi, 4\nsubss xmm1, xmm0\nandps xmm1, xmm3\naddss xmm2, xmm1\ncmp rdx, rdi\njnz short loc_1308\ndivss xmm2, xmm4\nmovaps xmm0, xmm2\nretn\nloc_1330:\npxor xmm2, xmm2\ndivss xmm2, xmm4\nmovaps xmm0, xmm2\nretn",
+ "ida_pseudo": "__int128 __usercall func0@(float *a1@, int a2@)\n{\n float v2; // xmm4_4\n float *v3; // rax\n float v4; // xmm0_4\n float *v5; // rdx\n float v6; // xmm0_4\n float v7; // xmm0_4\n __int128 v8; // xmm2\n float v9; // xmm1_4\n __int128 v11; // xmm2\n\n v2 = (float)a2;\n if ( a2 <= 0 )\n {\n v11 = 0LL;\n *(float *)&v11 = 0.0 / v2;\n return v11;\n }\n else\n {\n v3 = a1;\n v4 = 0.0;\n v5 = &a1[a2];\n if ( (a2 & 1) == 0 || (v3 = a1 + 1, v4 = *a1 + 0.0, v5 != a1 + 1) )\n {\n do\n {\n v6 = v4 + *v3;\n v3 += 2;\n v4 = v6 + *(v3 - 1);\n }\n while ( v5 != v3 );\n }\n v7 = v4 / v2;\n v8 = 0LL;\n do\n {\n v9 = *a1++;\n *(float *)&v8 = *(float *)&v8 + fabs(v9 - v7);\n }\n while ( v5 != a1 );\n *(float *)&v8 = *(float *)&v8 / v2;\n return v8;\n }\n}",
+ "ida_strip_asm": "sub_12B0:\nendbr64\npxor xmm4, xmm4\ncvtsi2ss xmm4, esi\ntest esi, esi\njle short loc_1330\nmovsxd rsi, esi\nmov rax, rdi\npxor xmm0, xmm0\nlea rdx, [rdi+rsi*4]\nand esi, 1\njz short loc_12E0\nlea rax, [rdi+4]\naddss xmm0, dword ptr [rdi]\ncmp rdx, rax\njz short loc_12F2\nloc_12E0:\naddss xmm0, dword ptr [rax]\nadd rax, 8\naddss xmm0, dword ptr [rax-4]\ncmp rdx, rax\njnz short loc_12E0\nloc_12F2:\ndivss xmm0, xmm4\npxor xmm2, xmm2\nmovss xmm3, cs:dword_20B0\nnop word ptr [rax+rax+00h]\nloc_1308:\nmovss xmm1, dword ptr [rdi]\nadd rdi, 4\nsubss xmm1, xmm0\nandps xmm1, xmm3\naddss xmm2, xmm1\ncmp rdx, rdi\njnz short loc_1308\ndivss xmm2, xmm4\nmovaps xmm0, xmm2\nretn\nloc_1330:\npxor xmm2, xmm2\ndivss xmm2, xmm4\nmovaps xmm0, xmm2\nretn",
+ "ida_strip_pseudo": "__int128 __usercall sub_12B0@(float *a1@, int a2@)\n{\n float v2; // xmm4_4\n float *v3; // rax\n float v4; // xmm0_4\n float *v5; // rdx\n float v6; // xmm0_4\n float v7; // xmm0_4\n __int128 v8; // xmm2\n float v9; // xmm1_4\n __int128 v11; // xmm2\n\n v2 = (float)a2;\n if ( a2 <= 0 )\n {\n v11 = 0LL;\n *(float *)&v11 = 0.0 / v2;\n return v11;\n }\n else\n {\n v3 = a1;\n v4 = 0.0;\n v5 = &a1[a2];\n if ( (a2 & 1) == 0 || (v3 = a1 + 1, v4 = *a1 + 0.0, v5 != a1 + 1) )\n {\n do\n {\n v6 = v4 + *v3;\n v3 += 2;\n v4 = v6 + *(v3 - 1);\n }\n while ( v5 != v3 );\n }\n v7 = v4 / v2;\n v8 = 0LL;\n do\n {\n v9 = *a1++;\n *(float *)&v8 = *(float *)&v8 + fabs(v9 - v7);\n }\n while ( v5 != a1 );\n *(float *)&v8 = *(float *)&v8 / v2;\n return v8;\n }\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "__int128 __usercall sub_12B0 @(float *a1 @, int a2 @) {\n float v2;\n float *v3;\n float v4;\n float *v5;\n float v6;\n float v7;\n __int128 v8;\n float v9;\n __int128 v11;\n v2 = (float)a2;\n if (a2 <= 0) {\n v11 = 0LL;\n *(float *)&v11 = 0.0 / v2;\n return v11;\n } else {\n v3 = a1;\n v4 = 0.0;\n v5 = &a1[a2];\n if ((a2 & 1) == 0 || (v3 = a1 + 1, v4 = *a1 + 0.0, v5 != a1 + 1)) {\n do {\n v6 = v4 + *v3;\n v3 += 2;\n v4 = v6 + *(v3 - 1);\n } while (v5 != v3);\n }\n v7 = v4 / v2;\n v8 = 0LL;\n do {\n v9 = *a1++;\n *(float *)&v8 = *(float *)&v8 + fabs(v9 - v7);\n } while (v5 != a1);\n *(float *)&v8 = *(float *)&v8 / v2;\n return v8;\n }\n}",
+ "ida_pseudo_norm": "__int128 __usercall func0 @(float *a1 @, int a2 @) {\n float v2;\n float *v3;\n float v4;\n float *v5;\n float v6;\n float v7;\n __int128 v8;\n float v9;\n __int128 v11;\n v2 = (float)a2;\n if (a2 <= 0) {\n v11 = 0LL;\n *(float *)&v11 = 0.0 / v2;\n return v11;\n } else {\n v3 = a1;\n v4 = 0.0;\n v5 = &a1[a2];\n if ((a2 & 1) == 0 || (v3 = a1 + 1, v4 = *a1 + 0.0, v5 != a1 + 1)) {\n do {\n v6 = v4 + *v3;\n v3 += 2;\n v4 = v6 + *(v3 - 1);\n } while (v5 != v3);\n }\n v7 = v4 / v2;\n v8 = 0LL;\n do {\n v9 = *a1++;\n *(float *)&v8 = *(float *)&v8 + fabs(v9 - v7);\n } while (v5 != a1);\n *(float *)&v8 = *(float *)&v8 / v2;\n return v8;\n }\n}"
+ },
+ {
+ "index": "HumanEval-C-5",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "int *func0(const int numbers[], int size, int delimiter, int *out_size) {\n *out_size = size > 0 ? (size * 2) - 1 : 0;\n int *out = (int *)malloc(*out_size * sizeof(int));\n if (size > 0) out[0] = numbers[0];\n for (int i = 1, j = 1; i < size; ++i) {\n out[j++] = delimiter;\n out[j++] = numbers[i];\n }\n return out;\n}",
+ "test": "#include \n#include \n\nint issame(const int a[], const int b[], int size_a, int size_b) {\n if (size_a != size_b) return 0;\n for (int i = 0; i < size_a; i++) {\n if (a[i] != b[i]) return 0;\n }\n return 1;\n}\n\nint main() {\n int out_size;\n\n // Test with an empty array\n int *result_empty = func0((const int[]){}, 0, 7, &out_size);\n assert(issame(result_empty, (const int[]){}, out_size, 0));\n free(result_empty);\n\n // Test with an array with elements\n int result_expected1[] = {5, 8, 6, 8, 3, 8, 2};\n int *result1 = func0((const int[]){5, 6, 3, 2}, 4, 8, &out_size);\n assert(issame(result1, result_expected1, out_size, 7));\n free(result1);\n\n // Test with an array with delimiters equal to elements\n int result_expected2[] = {2, 2, 2, 2, 2};\n int *result2 = func0((const int[]){2, 2, 2}, 3, 2, &out_size);\n assert(issame(result2, result_expected2, out_size, 5));\n free(result2);\n \n return 0;\n}",
+ "opt": "O0",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\nmov rbp, rsp\nsub rsp, 30h\nmov [rbp+var_18], rdi\nmov [rbp+var_1C], esi\nmov [rbp+var_20], edx\nmov [rbp+var_28], rcx\ncmp [rbp+var_1C], 0\njle short loc_11D3\nmov eax, [rbp+var_1C]\nadd eax, eax\nlea edx, [rax-1]\njmp short loc_11D8\nloc_11D3:\nmov edx, 0\nloc_11D8:\nmov rax, [rbp+var_28]\nmov [rax], edx\nmov rax, [rbp+var_28]\nmov eax, [rax]\ncdqe\nshl rax, 2\nmov rdi, rax; size\ncall _malloc\nmov [rbp+var_8], rax\ncmp [rbp+var_1C], 0\njle short loc_1208\nmov rax, [rbp+var_18]\nmov edx, [rax]\nmov rax, [rbp+var_8]\nmov [rax], edx\nloc_1208:\nmov [rbp+var_10], 1\nmov [rbp+var_C], 1\njmp short loc_126E\nloc_1218:\nmov eax, [rbp+var_C]\nlea edx, [rax+1]\nmov [rbp+var_C], edx\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_8]\nadd rdx, rax\nmov eax, [rbp+var_20]\nmov [rdx], eax\nmov eax, [rbp+var_10]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nlea rcx, [rdx+rax]\nmov eax, [rbp+var_C]\nlea edx, [rax+1]\nmov [rbp+var_C], edx\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_8]\nadd rdx, rax\nmov eax, [rcx]\nmov [rdx], eax\nadd [rbp+var_10], 1\nloc_126E:\nmov eax, [rbp+var_10]\ncmp eax, [rbp+var_1C]\njl short loc_1218\nmov rax, [rbp+var_8]\nleave\nretn",
+ "ida_pseudo": "_DWORD *__fastcall func0(_DWORD *a1, int a2, int a3, int *a4)\n{\n int v4; // edx\n int v5; // eax\n int v8; // [rsp+20h] [rbp-10h]\n int v9; // [rsp+24h] [rbp-Ch]\n _DWORD *v10; // [rsp+28h] [rbp-8h]\n\n if ( a2 <= 0 )\n v4 = 0;\n else\n v4 = 2 * a2 - 1;\n *a4 = v4;\n v10 = malloc(4LL * *a4);\n if ( a2 > 0 )\n *v10 = *a1;\n v8 = 1;\n v9 = 1;\n while ( v8 < a2 )\n {\n v10[v9] = a3;\n v5 = v9 + 1;\n v9 += 2;\n v10[v5] = a1[v8++];\n }\n return v10;\n}",
+ "ida_strip_asm": "sub_11A9:\nendbr64\npush rbp\nmov rbp, rsp\nsub rsp, 30h\nmov [rbp+var_18], rdi\nmov [rbp+var_1C], esi\nmov [rbp+var_20], edx\nmov [rbp+var_28], rcx\ncmp [rbp+var_1C], 0\njle short loc_11D3\nmov eax, [rbp+var_1C]\nadd eax, eax\nlea edx, [rax-1]\njmp short loc_11D8\nloc_11D3:\nmov edx, 0\nloc_11D8:\nmov rax, [rbp+var_28]\nmov [rax], edx\nmov rax, [rbp+var_28]\nmov eax, [rax]\ncdqe\nshl rax, 2\nmov rdi, rax; size\ncall _malloc\nmov [rbp+var_8], rax\ncmp [rbp+var_1C], 0\njle short loc_1208\nmov rax, [rbp+var_18]\nmov edx, [rax]\nmov rax, [rbp+var_8]\nmov [rax], edx\nloc_1208:\nmov [rbp+var_10], 1\nmov [rbp+var_C], 1\njmp short loc_126E\nloc_1218:\nmov eax, [rbp+var_C]\nlea edx, [rax+1]\nmov [rbp+var_C], edx\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_8]\nadd rdx, rax\nmov eax, [rbp+var_20]\nmov [rdx], eax\nmov eax, [rbp+var_10]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nlea rcx, [rdx+rax]\nmov eax, [rbp+var_C]\nlea edx, [rax+1]\nmov [rbp+var_C], edx\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_8]\nadd rdx, rax\nmov eax, [rcx]\nmov [rdx], eax\nadd [rbp+var_10], 1\nloc_126E:\nmov eax, [rbp+var_10]\ncmp eax, [rbp+var_1C]\njl short loc_1218\nmov rax, [rbp+var_8]\nleave\nretn",
+ "ida_strip_pseudo": "_DWORD *__fastcall sub_11A9(_DWORD *a1, int a2, int a3, int *a4)\n{\n int v4; // edx\n int v5; // eax\n int v8; // [rsp+20h] [rbp-10h]\n int v9; // [rsp+24h] [rbp-Ch]\n _DWORD *v10; // [rsp+28h] [rbp-8h]\n\n if ( a2 <= 0 )\n v4 = 0;\n else\n v4 = 2 * a2 - 1;\n *a4 = v4;\n v10 = malloc(4LL * *a4);\n if ( a2 > 0 )\n *v10 = *a1;\n v8 = 1;\n v9 = 1;\n while ( v8 < a2 )\n {\n v10[v9] = a3;\n v5 = v9 + 1;\n v9 += 2;\n v10[v5] = a1[v8++];\n }\n return v10;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "uint32_t *sub_11A9(uint32_t *a1, int a2, int a3, int *a4) {\n int v4;\n int v5;\n int v8;\n int v9;\n uint32_t *v10;\n if (a2 <= 0)\n v4 = 0;\n else\n v4 = 2 * a2 - 1;\n *a4 = v4;\n v10 = malloc(4LL * *a4);\n if (a2 > 0) *v10 = *a1;\n v8 = 1;\n v9 = 1;\n while (v8 < a2) {\n v10[v9] = a3;\n v5 = v9 + 1;\n v9 += 2;\n v10[v5] = a1[v8++];\n }\n return v10;\n}",
+ "ida_pseudo_norm": "uint32_t *func0(uint32_t *a1, int a2, int a3, int *a4) {\n int v4;\n int v5;\n int v8;\n int v9;\n uint32_t *v10;\n if (a2 <= 0)\n v4 = 0;\n else\n v4 = 2 * a2 - 1;\n *a4 = v4;\n v10 = malloc(4LL * *a4);\n if (a2 > 0) *v10 = *a1;\n v8 = 1;\n v9 = 1;\n while (v8 < a2) {\n v10[v9] = a3;\n v5 = v9 + 1;\n v9 += 2;\n v10[v5] = a1[v8++];\n }\n return v10;\n}"
+ },
+ {
+ "index": "HumanEval-C-5",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "int *func0(const int numbers[], int size, int delimiter, int *out_size) {\n *out_size = size > 0 ? (size * 2) - 1 : 0;\n int *out = (int *)malloc(*out_size * sizeof(int));\n if (size > 0) out[0] = numbers[0];\n for (int i = 1, j = 1; i < size; ++i) {\n out[j++] = delimiter;\n out[j++] = numbers[i];\n }\n return out;\n}",
+ "test": "#include \n#include \n\nint issame(const int a[], const int b[], int size_a, int size_b) {\n if (size_a != size_b) return 0;\n for (int i = 0; i < size_a; i++) {\n if (a[i] != b[i]) return 0;\n }\n return 1;\n}\n\nint main() {\n int out_size;\n\n // Test with an empty array\n int *result_empty = func0((const int[]){}, 0, 7, &out_size);\n assert(issame(result_empty, (const int[]){}, out_size, 0));\n free(result_empty);\n\n // Test with an array with elements\n int result_expected1[] = {5, 8, 6, 8, 3, 8, 2};\n int *result1 = func0((const int[]){5, 6, 3, 2}, 4, 8, &out_size);\n assert(issame(result1, result_expected1, out_size, 7));\n free(result1);\n\n // Test with an array with delimiters equal to elements\n int result_expected2[] = {2, 2, 2, 2, 2};\n int *result2 = func0((const int[]){2, 2, 2}, 3, 2, &out_size);\n assert(issame(result2, result_expected2, out_size, 5));\n free(result2);\n \n return 0;\n}",
+ "opt": "O1",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r12\npush rbp\npush rbx\ntest esi, esi\njle short loc_11F9\nmov rbx, rdi\nmov r12d, esi\nmov ebp, edx\nlea edi, [rsi+rsi-1]\nmov [rcx], edi\nmovsxd rdi, edi\nshl rdi, 2; size\ncall _malloc\nmov edx, [rbx]\nmov [rax], edx\ncmp r12d, 1\njle short loc_11F4\nmov esi, r12d\nmov edx, 1\nloc_11E1:\nmov [rax+rdx*8-4], ebp\nmov ecx, [rbx+rdx*4]\nmov [rax+rdx*8], ecx\nadd rdx, 1\ncmp rsi, rdx\njnz short loc_11E1\nloc_11F4:\npop rbx\npop rbp\npop r12\nretn\nloc_11F9:\nmov dword ptr [rcx], 0\nmov edi, 0; size\ncall _malloc\njmp short loc_11F4",
+ "ida_pseudo": "_DWORD *__fastcall func0(_DWORD *a1, int a2, int a3, int *a4)\n{\n int v6; // edi\n _DWORD *result; // rax\n __int64 i; // rdx\n\n if ( a2 <= 0 )\n {\n *a4 = 0;\n return malloc(0LL);\n }\n else\n {\n v6 = 2 * a2 - 1;\n *a4 = v6;\n result = malloc(4LL * v6);\n *result = *a1;\n if ( a2 > 1 )\n {\n for ( i = 1LL; i != a2; ++i )\n {\n result[2 * i - 1] = a3;\n result[2 * i] = a1[i];\n }\n }\n }\n return result;\n}",
+ "ida_strip_asm": "sub_11A9:\nendbr64\npush r12\npush rbp\npush rbx\ntest esi, esi\njle short loc_11F9\nmov rbx, rdi\nmov r12d, esi\nmov ebp, edx\nlea edi, [rsi+rsi-1]\nmov [rcx], edi\nmovsxd rdi, edi\nshl rdi, 2; size\ncall _malloc\nmov edx, [rbx]\nmov [rax], edx\ncmp r12d, 1\njle short loc_11F4\nmov esi, r12d\nmov edx, 1\nloc_11E1:\nmov [rax+rdx*8-4], ebp\nmov ecx, [rbx+rdx*4]\nmov [rax+rdx*8], ecx\nadd rdx, 1\ncmp rsi, rdx\njnz short loc_11E1\nloc_11F4:\npop rbx\npop rbp\npop r12\nretn\nloc_11F9:\nmov dword ptr [rcx], 0\nmov edi, 0; size\ncall _malloc\njmp short loc_11F4",
+ "ida_strip_pseudo": "_DWORD *__fastcall sub_11A9(_DWORD *a1, int a2, int a3, int *a4)\n{\n int v6; // edi\n _DWORD *result; // rax\n __int64 i; // rdx\n\n if ( a2 <= 0 )\n {\n *a4 = 0;\n return malloc(0LL);\n }\n else\n {\n v6 = 2 * a2 - 1;\n *a4 = v6;\n result = malloc(4LL * v6);\n *result = *a1;\n if ( a2 > 1 )\n {\n for ( i = 1LL; i != a2; ++i )\n {\n result[2 * i - 1] = a3;\n result[2 * i] = a1[i];\n }\n }\n }\n return result;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "uint32_t *sub_11A9(uint32_t *a1, int a2, int a3, int *a4) {\n int v6;\n uint32_t *result;\n long long i;\n if (a2 <= 0) {\n *a4 = 0;\n return malloc(0LL);\n } else {\n v6 = 2 * a2 - 1;\n *a4 = v6;\n result = malloc(4LL * v6);\n *result = *a1;\n if (a2 > 1) {\n for (i = 1LL; i != a2; ++i) {\n result[2 * i - 1] = a3;\n result[2 * i] = a1[i];\n }\n }\n }\n return result;\n}",
+ "ida_pseudo_norm": "uint32_t *func0(uint32_t *a1, int a2, int a3, int *a4) {\n int v6;\n uint32_t *result;\n long long i;\n if (a2 <= 0) {\n *a4 = 0;\n return malloc(0LL);\n } else {\n v6 = 2 * a2 - 1;\n *a4 = v6;\n result = malloc(4LL * v6);\n *result = *a1;\n if (a2 > 1) {\n for (i = 1LL; i != a2; ++i) {\n result[2 * i - 1] = a3;\n result[2 * i] = a1[i];\n }\n }\n }\n return result;\n}"
+ },
+ {
+ "index": "HumanEval-C-5",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "int *func0(const int numbers[], int size, int delimiter, int *out_size) {\n *out_size = size > 0 ? (size * 2) - 1 : 0;\n int *out = (int *)malloc(*out_size * sizeof(int));\n if (size > 0) out[0] = numbers[0];\n for (int i = 1, j = 1; i < size; ++i) {\n out[j++] = delimiter;\n out[j++] = numbers[i];\n }\n return out;\n}",
+ "test": "#include \n#include \n\nint issame(const int a[], const int b[], int size_a, int size_b) {\n if (size_a != size_b) return 0;\n for (int i = 0; i < size_a; i++) {\n if (a[i] != b[i]) return 0;\n }\n return 1;\n}\n\nint main() {\n int out_size;\n\n // Test with an empty array\n int *result_empty = func0((const int[]){}, 0, 7, &out_size);\n assert(issame(result_empty, (const int[]){}, out_size, 0));\n free(result_empty);\n\n // Test with an array with elements\n int result_expected1[] = {5, 8, 6, 8, 3, 8, 2};\n int *result1 = func0((const int[]){5, 6, 3, 2}, 4, 8, &out_size);\n assert(issame(result1, result_expected1, out_size, 7));\n free(result1);\n\n // Test with an array with delimiters equal to elements\n int result_expected2[] = {2, 2, 2, 2, 2};\n int *result2 = func0((const int[]){2, 2, 2}, 3, 2, &out_size);\n assert(issame(result2, result_expected2, out_size, 5));\n free(result2);\n \n return 0;\n}",
+ "opt": "O2",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\npush rbx\nsub rsp, 18h\nmov [rsp+28h+var_1C], edx\ntest esi, esi\njle short loc_13F8\nmov rbx, rdi\nlea edi, [rsi+rsi-1]\nmov ebp, esi\nmov [rcx], edi\nmovsxd rdi, edi\nshl rdi, 2; size\ncall _malloc\nmov edx, [rbx]\ncmp ebp, 1\nmovd xmm1, [rsp+28h+var_1C]\nmov ecx, 1\nmov [rax], edx\nmov edx, ebp\njz short loc_13EC\nnop\nloc_13D0:\nmovd xmm2, dword ptr [rbx+rcx*4]\nmovdqa xmm0, xmm1\npunpckldq xmm0, xmm2\nmovq qword ptr [rax+rcx*8-4], xmm0\nadd rcx, 1\ncmp rcx, rdx\njnz short loc_13D0\nloc_13EC:\nadd rsp, 18h\npop rbx\npop rbp\nretn\nloc_13F8:\nmov dword ptr [rcx], 0\nadd rsp, 18h\nxor edi, edi; size\npop rbx\npop rbp\njmp _malloc",
+ "ida_pseudo": "_DWORD *__fastcall func0(_DWORD *a1, int a2, unsigned int a3, int *a4)\n{\n int v5; // edi\n _DWORD *result; // rax\n __m128i v7; // xmm1\n __int64 v8; // rcx\n\n if ( a2 <= 0 )\n {\n *a4 = 0;\n return malloc(0LL);\n }\n else\n {\n v5 = 2 * a2 - 1;\n *a4 = v5;\n result = malloc(4LL * v5);\n v7 = _mm_cvtsi32_si128(a3);\n v8 = 1LL;\n *result = *a1;\n if ( a2 != 1 )\n {\n do\n {\n *(_QWORD *)&result[2 * v8 - 1] = _mm_unpacklo_epi32(v7, _mm_cvtsi32_si128(a1[v8])).m128i_u64[0];\n ++v8;\n }\n while ( v8 != a2 );\n }\n }\n return result;\n}",
+ "ida_strip_asm": "sub_1390:\nendbr64\npush rbp\npush rbx\nsub rsp, 18h\nmov [rsp+28h+var_1C], edx\ntest esi, esi\njle short loc_13F8\nmov rbx, rdi\nlea edi, [rsi+rsi-1]\nmov ebp, esi\nmov [rcx], edi\nmovsxd rdi, edi\nshl rdi, 2; size\ncall _malloc\nmov edx, [rbx]\ncmp ebp, 1\nmovd xmm1, [rsp+28h+var_1C]\nmov ecx, 1\nmov [rax], edx\nmov edx, ebp\njz short loc_13EC\nnop\nloc_13D0:\nmovd xmm2, dword ptr [rbx+rcx*4]\nmovdqa xmm0, xmm1\npunpckldq xmm0, xmm2\nmovq qword ptr [rax+rcx*8-4], xmm0\nadd rcx, 1\ncmp rcx, rdx\njnz short loc_13D0\nloc_13EC:\nadd rsp, 18h\npop rbx\npop rbp\nretn\nloc_13F8:\nmov dword ptr [rcx], 0\nadd rsp, 18h\nxor edi, edi; size\npop rbx\npop rbp\njmp _malloc",
+ "ida_strip_pseudo": "_DWORD *__fastcall sub_1390(_DWORD *a1, int a2, unsigned int a3, int *a4)\n{\n int v5; // edi\n _DWORD *result; // rax\n __m128i v7; // xmm1\n __int64 v8; // rcx\n\n if ( a2 <= 0 )\n {\n *a4 = 0;\n return malloc(0LL);\n }\n else\n {\n v5 = 2 * a2 - 1;\n *a4 = v5;\n result = malloc(4LL * v5);\n v7 = _mm_cvtsi32_si128(a3);\n v8 = 1LL;\n *result = *a1;\n if ( a2 != 1 )\n {\n do\n {\n *(_QWORD *)&result[2 * v8 - 1] = _mm_unpacklo_epi32(v7, _mm_cvtsi32_si128(a1[v8])).m128i_u64[0];\n ++v8;\n }\n while ( v8 != a2 );\n }\n }\n return result;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "uint32_t *sub_1390(uint32_t *a1, int a2, unsigned int a3, int *a4) {\n int v5;\n uint32_t *result;\n __m128i v7;\n long long v8;\n if (a2 <= 0) {\n *a4 = 0;\n return malloc(0LL);\n } else {\n v5 = 2 * a2 - 1;\n *a4 = v5;\n result = malloc(4LL * v5);\n v7 = _mm_cvtsi32_si128(a3);\n v8 = 1LL;\n *result = *a1;\n if (a2 != 1) {\n do {\n *(uint64_t *)&result[2 * v8 - 1] =\n _mm_unpacklo_epi32(v7, _mm_cvtsi32_si128(a1[v8])).m128i_u64[0];\n ++v8;\n } while (v8 != a2);\n }\n }\n return result;\n}",
+ "ida_pseudo_norm": "uint32_t *func0(uint32_t *a1, int a2, unsigned int a3, int *a4) {\n int v5;\n uint32_t *result;\n __m128i v7;\n long long v8;\n if (a2 <= 0) {\n *a4 = 0;\n return malloc(0LL);\n } else {\n v5 = 2 * a2 - 1;\n *a4 = v5;\n result = malloc(4LL * v5);\n v7 = _mm_cvtsi32_si128(a3);\n v8 = 1LL;\n *result = *a1;\n if (a2 != 1) {\n do {\n *(uint64_t *)&result[2 * v8 - 1] =\n _mm_unpacklo_epi32(v7, _mm_cvtsi32_si128(a1[v8])).m128i_u64[0];\n ++v8;\n } while (v8 != a2);\n }\n }\n return result;\n}"
+ },
+ {
+ "index": "HumanEval-C-5",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "int *func0(const int numbers[], int size, int delimiter, int *out_size) {\n *out_size = size > 0 ? (size * 2) - 1 : 0;\n int *out = (int *)malloc(*out_size * sizeof(int));\n if (size > 0) out[0] = numbers[0];\n for (int i = 1, j = 1; i < size; ++i) {\n out[j++] = delimiter;\n out[j++] = numbers[i];\n }\n return out;\n}",
+ "test": "#include \n#include \n\nint issame(const int a[], const int b[], int size_a, int size_b) {\n if (size_a != size_b) return 0;\n for (int i = 0; i < size_a; i++) {\n if (a[i] != b[i]) return 0;\n }\n return 1;\n}\n\nint main() {\n int out_size;\n\n // Test with an empty array\n int *result_empty = func0((const int[]){}, 0, 7, &out_size);\n assert(issame(result_empty, (const int[]){}, out_size, 0));\n free(result_empty);\n\n // Test with an array with elements\n int result_expected1[] = {5, 8, 6, 8, 3, 8, 2};\n int *result1 = func0((const int[]){5, 6, 3, 2}, 4, 8, &out_size);\n assert(issame(result1, result_expected1, out_size, 7));\n free(result1);\n\n // Test with an array with delimiters equal to elements\n int result_expected2[] = {2, 2, 2, 2, 2};\n int *result2 = func0((const int[]){2, 2, 2}, 3, 2, &out_size);\n assert(issame(result2, result_expected2, out_size, 5));\n free(result2);\n \n return 0;\n}",
+ "opt": "O3",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\npush rbx\nsub rsp, 18h\nmov [rsp+28h+var_1C], edx\ntest esi, esi\njle loc_14A0\nmov rbx, rdi\nlea edi, [rsi+rsi-1]\nmov ebp, esi\nmov [rcx], edi\nmovsxd rdi, edi\nshl rdi, 2; size\ncall _malloc\ncmp ebp, 1\nmovd xmm2, [rsp+28h+var_1C]\nmov rcx, rax\nmov eax, [rbx]\nmov [rcx], eax\njz loc_148C\nlea eax, [rbp-2]\nlea edx, [rbp-1]\ncmp eax, 2\njbe loc_14B3\nmov esi, edx\npshufd xmm0, xmm2, 0\nxor eax, eax\nshr esi, 2\nshl rsi, 4\nnop word ptr [rax+rax+00h]\nloc_13F8:\nmovdqu xmm3, xmmword ptr [rbx+rax+4]\nmovdqa xmm1, xmm0\npunpckldq xmm1, xmm3\nmovups xmmword ptr [rcx+rax*2+4], xmm1\nmovdqa xmm1, xmm0\npunpckhdq xmm1, xmm3\nmovups xmmword ptr [rcx+rax*2+14h], xmm1\nadd rax, 10h\ncmp rsi, rax\njnz short loc_13F8\ntest dl, 3\njz short loc_148C\nand edx, 0FFFFFFFCh\nlea eax, [rdx+1]\nlea edx, [rdx+rdx+1]\nloc_1430:\nmovsxd rsi, eax\nmovdqa xmm0, xmm2\nmovsxd rdx, edx\nmovd xmm1, dword ptr [rbx+rsi*4]\nlea rdi, ds:0[rdx*4]\nlea r8, ds:0[rsi*4]\npunpckldq xmm0, xmm1\nmovq qword ptr [rcx+rdx*4], xmm0\nlea edx, [rax+1]\ncmp ebp, edx\njle short loc_148C\nmovd xmm5, dword ptr [rbx+r8+4]\nmovdqa xmm0, xmm2\nadd eax, 2\npunpckldq xmm0, xmm5\nmovq qword ptr [rcx+rdi+8], xmm0\ncmp ebp, eax\njle short loc_148C\nmovd xmm0, dword ptr [rbx+r8+8]\npunpckldq xmm2, xmm0\nmovq qword ptr [rcx+rdi+10h], xmm2\nloc_148C:\nadd rsp, 18h\nmov rax, rcx\npop rbx\npop rbp\nretn\nloc_14A0:\nmov dword ptr [rcx], 0\nadd rsp, 18h\nxor edi, edi; size\npop rbx\npop rbp\njmp _malloc\nloc_14B3:\nmov edx, 1\nmov eax, 1\njmp loc_1430",
+ "ida_pseudo": "_DWORD *__fastcall func0(_DWORD *a1, int a2, unsigned int a3, int *a4)\n{\n int v5; // edi\n __m128i v6; // xmm2\n _DWORD *v7; // rcx\n unsigned int v8; // edx\n __m128i v9; // xmm0\n unsigned __int64 v10; // rax\n __m128i v11; // xmm3\n unsigned int v12; // edx\n int v13; // eax\n int v14; // edx\n __int64 v15; // rdi\n __int64 v16; // r8\n\n if ( a2 > 0 )\n {\n v5 = 2 * a2 - 1;\n *a4 = v5;\n v6 = _mm_cvtsi32_si128(a3);\n v7 = malloc(4LL * v5);\n *v7 = *a1;\n if ( a2 != 1 )\n {\n v8 = a2 - 1;\n if ( (unsigned int)(a2 - 2) <= 2 )\n {\n v14 = 1;\n v13 = 1;\nLABEL_8:\n v15 = v14;\n v16 = v13;\n *(_QWORD *)&v7[v15] = _mm_unpacklo_epi32(v6, _mm_cvtsi32_si128(a1[v16])).m128i_u64[0];\n if ( a2 > v13 + 1 )\n {\n *(_QWORD *)&v7[v15 + 2] = _mm_unpacklo_epi32(v6, _mm_cvtsi32_si128(a1[v16 + 1])).m128i_u64[0];\n if ( a2 > v13 + 2 )\n *(_QWORD *)&v7[v15 + 4] = _mm_unpacklo_epi32(v6, _mm_cvtsi32_si128(a1[v16 + 2])).m128i_u64[0];\n }\n return v7;\n }\n v9 = _mm_shuffle_epi32(v6, 0);\n v10 = 0LL;\n do\n {\n v11 = _mm_loadu_si128((const __m128i *)&a1[v10 / 2 + 1]);\n *(__m128i *)&v7[v10 + 1] = _mm_unpacklo_epi32(v9, v11);\n *(__m128i *)&v7[v10 + 5] = _mm_unpackhi_epi32(v9, v11);\n v10 += 8LL;\n }\n while ( 8LL * (v8 >> 2) != v10 );\n if ( (v8 & 3) != 0 )\n {\n v12 = v8 & 0xFFFFFFFC;\n v13 = v12 + 1;\n v14 = 2 * v12 + 1;\n goto LABEL_8;\n }\n }\n return v7;\n }\n *a4 = 0;\n return malloc(0LL);\n}",
+ "ida_strip_asm": "sub_1390:\nendbr64\npush rbp\npush rbx\nsub rsp, 18h\nmov [rsp+28h+var_1C], edx\ntest esi, esi\njle loc_14A0\nmov rbx, rdi\nlea edi, [rsi+rsi-1]\nmov ebp, esi\nmov [rcx], edi\nmovsxd rdi, edi\nshl rdi, 2; size\ncall _malloc\ncmp ebp, 1\nmovd xmm2, [rsp+28h+var_1C]\nmov rcx, rax\nmov eax, [rbx]\nmov [rcx], eax\njz loc_148C\nlea eax, [rbp-2]\nlea edx, [rbp-1]\ncmp eax, 2\njbe loc_14B3\nmov esi, edx\npshufd xmm0, xmm2, 0\nxor eax, eax\nshr esi, 2\nshl rsi, 4\nnop word ptr [rax+rax+00h]\nloc_13F8:\nmovdqu xmm3, xmmword ptr [rbx+rax+4]\nmovdqa xmm1, xmm0\npunpckldq xmm1, xmm3\nmovups xmmword ptr [rcx+rax*2+4], xmm1\nmovdqa xmm1, xmm0\npunpckhdq xmm1, xmm3\nmovups xmmword ptr [rcx+rax*2+14h], xmm1\nadd rax, 10h\ncmp rsi, rax\njnz short loc_13F8\ntest dl, 3\njz short loc_148C\nand edx, 0FFFFFFFCh\nlea eax, [rdx+1]\nlea edx, [rdx+rdx+1]\nloc_1430:\nmovsxd rsi, eax\nmovdqa xmm0, xmm2\nmovsxd rdx, edx\nmovd xmm1, dword ptr [rbx+rsi*4]\nlea rdi, ds:0[rdx*4]\nlea r8, ds:0[rsi*4]\npunpckldq xmm0, xmm1\nmovq qword ptr [rcx+rdx*4], xmm0\nlea edx, [rax+1]\ncmp ebp, edx\njle short loc_148C\nmovd xmm5, dword ptr [rbx+r8+4]\nmovdqa xmm0, xmm2\nadd eax, 2\npunpckldq xmm0, xmm5\nmovq qword ptr [rcx+rdi+8], xmm0\ncmp ebp, eax\njle short loc_148C\nmovd xmm0, dword ptr [rbx+r8+8]\npunpckldq xmm2, xmm0\nmovq qword ptr [rcx+rdi+10h], xmm2\nloc_148C:\nadd rsp, 18h\nmov rax, rcx\npop rbx\npop rbp\nretn\nloc_14A0:\nmov dword ptr [rcx], 0\nadd rsp, 18h\nxor edi, edi; size\npop rbx\npop rbp\njmp _malloc\nloc_14B3:\nmov edx, 1\nmov eax, 1\njmp loc_1430",
+ "ida_strip_pseudo": "_DWORD *__fastcall sub_1390(_DWORD *a1, int a2, unsigned int a3, int *a4)\n{\n int v5; // edi\n __m128i v6; // xmm2\n _DWORD *v7; // rcx\n unsigned int v8; // edx\n __m128i v9; // xmm0\n unsigned __int64 v10; // rax\n __m128i v11; // xmm3\n unsigned int v12; // edx\n int v13; // eax\n int v14; // edx\n __int64 v15; // rdi\n __int64 v16; // r8\n\n if ( a2 > 0 )\n {\n v5 = 2 * a2 - 1;\n *a4 = v5;\n v6 = _mm_cvtsi32_si128(a3);\n v7 = malloc(4LL * v5);\n *v7 = *a1;\n if ( a2 != 1 )\n {\n v8 = a2 - 1;\n if ( (unsigned int)(a2 - 2) <= 2 )\n {\n v14 = 1;\n v13 = 1;\nLABEL_8:\n v15 = v14;\n v16 = v13;\n *(_QWORD *)&v7[v15] = _mm_unpacklo_epi32(v6, _mm_cvtsi32_si128(a1[v16])).m128i_u64[0];\n if ( a2 > v13 + 1 )\n {\n *(_QWORD *)&v7[v15 + 2] = _mm_unpacklo_epi32(v6, _mm_cvtsi32_si128(a1[v16 + 1])).m128i_u64[0];\n if ( a2 > v13 + 2 )\n *(_QWORD *)&v7[v15 + 4] = _mm_unpacklo_epi32(v6, _mm_cvtsi32_si128(a1[v16 + 2])).m128i_u64[0];\n }\n return v7;\n }\n v9 = _mm_shuffle_epi32(v6, 0);\n v10 = 0LL;\n do\n {\n v11 = _mm_loadu_si128((const __m128i *)&a1[v10 / 2 + 1]);\n *(__m128i *)&v7[v10 + 1] = _mm_unpacklo_epi32(v9, v11);\n *(__m128i *)&v7[v10 + 5] = _mm_unpackhi_epi32(v9, v11);\n v10 += 8LL;\n }\n while ( 8LL * (v8 >> 2) != v10 );\n if ( (v8 & 3) != 0 )\n {\n v12 = v8 & 0xFFFFFFFC;\n v13 = v12 + 1;\n v14 = 2 * v12 + 1;\n goto LABEL_8;\n }\n }\n return v7;\n }\n *a4 = 0;\n return malloc(0LL);\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "uint32_t *sub_1390(uint32_t *a1, int a2, unsigned int a3, int *a4) {\n int v5;\n __m128i v6;\n uint32_t *v7;\n unsigned int v8;\n __m128i v9;\n unsigned long long v10;\n __m128i v11;\n unsigned int v12;\n int v13;\n int v14;\n long long v15;\n long long v16;\n if (a2 > 0) {\n v5 = 2 * a2 - 1;\n *a4 = v5;\n v6 = _mm_cvtsi32_si128(a3);\n v7 = malloc(4LL * v5);\n *v7 = *a1;\n if (a2 != 1) {\n v8 = a2 - 1;\n if ((unsigned int)(a2 - 2) <= 2) {\n v14 = 1;\n v13 = 1;\n LABEL_8:\n v15 = v14;\n v16 = v13;\n *(uint64_t *)&v7[v15] =\n _mm_unpacklo_epi32(v6, _mm_cvtsi32_si128(a1[v16])).m128i_u64[0];\n if (a2 > v13 + 1) {\n *(uint64_t *)&v7[v15 + 2] =\n _mm_unpacklo_epi32(v6, _mm_cvtsi32_si128(a1[v16 + 1]))\n .m128i_u64[0];\n if (a2 > v13 + 2)\n *(uint64_t *)&v7[v15 + 4] =\n _mm_unpacklo_epi32(v6, _mm_cvtsi32_si128(a1[v16 + 2]))\n .m128i_u64[0];\n }\n return v7;\n }\n v9 = _mm_shuffle_epi32(v6, 0);\n v10 = 0LL;\n do {\n v11 = _mm_loadu_si128((const __m128i *)&a1[v10 / 2 + 1]);\n *(__m128i *)&v7[v10 + 1] = _mm_unpacklo_epi32(v9, v11);\n *(__m128i *)&v7[v10 + 5] = _mm_unpackhi_epi32(v9, v11);\n v10 += 8LL;\n } while (8LL * (v8 >> 2) != v10);\n if ((v8 & 3) != 0) {\n v12 = v8 & 4294967292;\n v13 = v12 + 1;\n v14 = 2 * v12 + 1;\n goto LABEL_8;\n }\n }\n return v7;\n }\n *a4 = 0;\n return malloc(0LL);\n}",
+ "ida_pseudo_norm": "uint32_t *func0(uint32_t *a1, int a2, unsigned int a3, int *a4) {\n int v5;\n __m128i v6;\n uint32_t *v7;\n unsigned int v8;\n __m128i v9;\n unsigned long long v10;\n __m128i v11;\n unsigned int v12;\n int v13;\n int v14;\n long long v15;\n long long v16;\n if (a2 > 0) {\n v5 = 2 * a2 - 1;\n *a4 = v5;\n v6 = _mm_cvtsi32_si128(a3);\n v7 = malloc(4LL * v5);\n *v7 = *a1;\n if (a2 != 1) {\n v8 = a2 - 1;\n if ((unsigned int)(a2 - 2) <= 2) {\n v14 = 1;\n v13 = 1;\n LABEL_8:\n v15 = v14;\n v16 = v13;\n *(uint64_t *)&v7[v15] =\n _mm_unpacklo_epi32(v6, _mm_cvtsi32_si128(a1[v16])).m128i_u64[0];\n if (a2 > v13 + 1) {\n *(uint64_t *)&v7[v15 + 2] =\n _mm_unpacklo_epi32(v6, _mm_cvtsi32_si128(a1[v16 + 1]))\n .m128i_u64[0];\n if (a2 > v13 + 2)\n *(uint64_t *)&v7[v15 + 4] =\n _mm_unpacklo_epi32(v6, _mm_cvtsi32_si128(a1[v16 + 2]))\n .m128i_u64[0];\n }\n return v7;\n }\n v9 = _mm_shuffle_epi32(v6, 0);\n v10 = 0LL;\n do {\n v11 = _mm_loadu_si128((const __m128i *)&a1[v10 / 2 + 1]);\n *(__m128i *)&v7[v10 + 1] = _mm_unpacklo_epi32(v9, v11);\n *(__m128i *)&v7[v10 + 5] = _mm_unpackhi_epi32(v9, v11);\n v10 += 8LL;\n } while (8LL * (v8 >> 2) != v10);\n if ((v8 & 3) != 0) {\n v12 = v8 & 4294967292;\n v13 = v12 + 1;\n v14 = 2 * v12 + 1;\n goto LABEL_8;\n }\n }\n return v7;\n }\n *a4 = 0;\n return malloc(0LL);\n}"
+ },
+ {
+ "index": "HumanEval-C-6",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "int* func0(const char* paren_string, int* returnSize) {\n int* all_levels = NULL;\n int level = 0, max_level = 0, i = 0, count = 0;\n char chr;\n for (i = 0; paren_string[i] != '\\0'; i++) {\n chr = paren_string[i];\n if (chr == '(') {\n level += 1;\n if (level > max_level) max_level = level;\n } else if (chr == ')') {\n level -= 1;\n if (level == 0) {\n all_levels = (int*)realloc(all_levels, sizeof(int) * (count + 1));\n all_levels[count++] = max_level;\n max_level = 0;\n }\n }\n }\n *returnSize = count;\n return all_levels;\n}",
+ "test": "#include \n\nint issame(const int* a, const int* b, int size_a, int size_b) {\n if (size_a != size_b) return 0;\n for (int i = 0; i < size_a; i++) {\n if (a[i] != b[i]) return 0;\n }\n return 1;\n}\n\nint main() {\n int returnSize;\n int* result;\n\n result = func0(\"(()()) ((())) () ((())()())\", &returnSize);\n assert(issame(result, (const int[]){2, 3, 1, 3}, returnSize, 4));\n free(result);\n\n result = func0(\"() (()) ((())) (((())))\", &returnSize);\n assert(issame(result, (const int[]){1, 2, 3, 4}, returnSize, 4));\n free(result);\n\n result = func0(\"(()(())((())))\", &returnSize);\n assert(issame(result, (const int[]){4}, returnSize, 1));\n free(result);\n \n return 0;\n}",
+ "opt": "O0",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\nmov rbp, rsp\nsub rsp, 30h\nmov [rbp+var_28], rdi\nmov [rbp+var_30], rsi\nmov [rbp+ptr], 0\nmov [rbp+var_18], 0\nmov [rbp+var_14], 0\nmov [rbp+var_10], 0\nmov [rbp+var_C], 0\nmov [rbp+var_10], 0\njmp loc_1277\nloc_11ED:\nmov eax, [rbp+var_10]\nmovsxd rdx, eax\nmov rax, [rbp+var_28]\nadd rax, rdx\nmovzx eax, byte ptr [rax]\nmov [rbp+var_19], al\ncmp [rbp+var_19], 28h ; '('\njnz short loc_121A\nadd [rbp+var_18], 1\nmov eax, [rbp+var_18]\ncmp eax, [rbp+var_14]\njle short loc_1273\nmov eax, [rbp+var_18]\nmov [rbp+var_14], eax\njmp short loc_1273\nloc_121A:\ncmp [rbp+var_19], 29h ; ')'\njnz short loc_1273\nsub [rbp+var_18], 1\ncmp [rbp+var_18], 0\njnz short loc_1273\nmov eax, [rbp+var_C]\nadd eax, 1\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+ptr]\nmov rsi, rdx; size\nmov rdi, rax; ptr\ncall _realloc\nmov [rbp+ptr], rax\nmov eax, [rbp+var_C]\nlea edx, [rax+1]\nmov [rbp+var_C], edx\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+ptr]\nadd rdx, rax\nmov eax, [rbp+var_14]\nmov [rdx], eax\nmov [rbp+var_14], 0\nloc_1273:\nadd [rbp+var_10], 1\nloc_1277:\nmov eax, [rbp+var_10]\nmovsxd rdx, eax\nmov rax, [rbp+var_28]\nadd rax, rdx\nmovzx eax, byte ptr [rax]\ntest al, al\njnz loc_11ED\nmov rax, [rbp+var_30]\nmov edx, [rbp+var_C]\nmov [rax], edx\nmov rax, [rbp+ptr]\nleave\nretn",
+ "ida_pseudo": "void *__fastcall func0(__int64 a1, _DWORD *a2)\n{\n int v2; // eax\n char v4; // [rsp+17h] [rbp-19h]\n int v5; // [rsp+18h] [rbp-18h]\n int v6; // [rsp+1Ch] [rbp-14h]\n int i; // [rsp+20h] [rbp-10h]\n int v8; // [rsp+24h] [rbp-Ch]\n void *ptr; // [rsp+28h] [rbp-8h]\n\n ptr = 0LL;\n v5 = 0;\n v6 = 0;\n v8 = 0;\n for ( i = 0; *(_BYTE *)(i + a1); ++i )\n {\n v4 = *(_BYTE *)(i + a1);\n if ( v4 == 40 )\n {\n if ( ++v5 > v6 )\n v6 = v5;\n }\n else if ( v4 == 41 && !--v5 )\n {\n ptr = realloc(ptr, 4LL * (v8 + 1));\n v2 = v8++;\n *((_DWORD *)ptr + v2) = v6;\n v6 = 0;\n }\n }\n *a2 = v8;\n return ptr;\n}",
+ "ida_strip_asm": "sub_11A9:\nendbr64\npush rbp\nmov rbp, rsp\nsub rsp, 30h\nmov [rbp+var_28], rdi\nmov [rbp+var_30], rsi\nmov [rbp+ptr], 0\nmov [rbp+var_18], 0\nmov [rbp+var_14], 0\nmov [rbp+var_10], 0\nmov [rbp+var_C], 0\nmov [rbp+var_10], 0\njmp loc_1277\nloc_11ED:\nmov eax, [rbp+var_10]\nmovsxd rdx, eax\nmov rax, [rbp+var_28]\nadd rax, rdx\nmovzx eax, byte ptr [rax]\nmov [rbp+var_19], al\ncmp [rbp+var_19], 28h ; '('\njnz short loc_121A\nadd [rbp+var_18], 1\nmov eax, [rbp+var_18]\ncmp eax, [rbp+var_14]\njle short loc_1273\nmov eax, [rbp+var_18]\nmov [rbp+var_14], eax\njmp short loc_1273\nloc_121A:\ncmp [rbp+var_19], 29h ; ')'\njnz short loc_1273\nsub [rbp+var_18], 1\ncmp [rbp+var_18], 0\njnz short loc_1273\nmov eax, [rbp+var_C]\nadd eax, 1\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+ptr]\nmov rsi, rdx; size\nmov rdi, rax; ptr\ncall _realloc\nmov [rbp+ptr], rax\nmov eax, [rbp+var_C]\nlea edx, [rax+1]\nmov [rbp+var_C], edx\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+ptr]\nadd rdx, rax\nmov eax, [rbp+var_14]\nmov [rdx], eax\nmov [rbp+var_14], 0\nloc_1273:\nadd [rbp+var_10], 1\nloc_1277:\nmov eax, [rbp+var_10]\nmovsxd rdx, eax\nmov rax, [rbp+var_28]\nadd rax, rdx\nmovzx eax, byte ptr [rax]\ntest al, al\njnz loc_11ED\nmov rax, [rbp+var_30]\nmov edx, [rbp+var_C]\nmov [rax], edx\nmov rax, [rbp+ptr]\nleave\nretn",
+ "ida_strip_pseudo": "void *__fastcall sub_11A9(__int64 a1, _DWORD *a2)\n{\n int v2; // eax\n char v4; // [rsp+17h] [rbp-19h]\n int v5; // [rsp+18h] [rbp-18h]\n int v6; // [rsp+1Ch] [rbp-14h]\n int i; // [rsp+20h] [rbp-10h]\n int v8; // [rsp+24h] [rbp-Ch]\n void *ptr; // [rsp+28h] [rbp-8h]\n\n ptr = 0LL;\n v5 = 0;\n v6 = 0;\n v8 = 0;\n for ( i = 0; *(_BYTE *)(i + a1); ++i )\n {\n v4 = *(_BYTE *)(i + a1);\n if ( v4 == 40 )\n {\n if ( ++v5 > v6 )\n v6 = v5;\n }\n else if ( v4 == 41 && !--v5 )\n {\n ptr = realloc(ptr, 4LL * (v8 + 1));\n v2 = v8++;\n *((_DWORD *)ptr + v2) = v6;\n v6 = 0;\n }\n }\n *a2 = v8;\n return ptr;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "void *sub_11A9(long long a1, uint32_t *a2) {\n int v2;\n char v4;\n int v5;\n int v6;\n int i;\n int v8;\n void *ptr;\n ptr = 0LL;\n v5 = 0;\n v6 = 0;\n v8 = 0;\n for (i = 0; *(uint8_t *)(i + a1); ++i) {\n v4 = *(uint8_t *)(i + a1);\n if (v4 == 40) {\n if (++v5 > v6) v6 = v5;\n } else if (v4 == 41 && !--v5) {\n ptr = realloc(ptr, 4LL * (v8 + 1));\n v2 = v8++;\n *((uint32_t *)ptr + v2) = v6;\n v6 = 0;\n }\n }\n *a2 = v8;\n return ptr;\n}",
+ "ida_pseudo_norm": "void *func0(long long a1, uint32_t *a2) {\n int v2;\n char v4;\n int v5;\n int v6;\n int i;\n int v8;\n void *ptr;\n ptr = 0LL;\n v5 = 0;\n v6 = 0;\n v8 = 0;\n for (i = 0; *(uint8_t *)(i + a1); ++i) {\n v4 = *(uint8_t *)(i + a1);\n if (v4 == 40) {\n if (++v5 > v6) v6 = v5;\n } else if (v4 == 41 && !--v5) {\n ptr = realloc(ptr, 4LL * (v8 + 1));\n v2 = v8++;\n *((uint32_t *)ptr + v2) = v6;\n v6 = 0;\n }\n }\n *a2 = v8;\n return ptr;\n}"
+ },
+ {
+ "index": "HumanEval-C-6",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "int* func0(const char* paren_string, int* returnSize) {\n int* all_levels = NULL;\n int level = 0, max_level = 0, i = 0, count = 0;\n char chr;\n for (i = 0; paren_string[i] != '\\0'; i++) {\n chr = paren_string[i];\n if (chr == '(') {\n level += 1;\n if (level > max_level) max_level = level;\n } else if (chr == ')') {\n level -= 1;\n if (level == 0) {\n all_levels = (int*)realloc(all_levels, sizeof(int) * (count + 1));\n all_levels[count++] = max_level;\n max_level = 0;\n }\n }\n }\n *returnSize = count;\n return all_levels;\n}",
+ "test": "#include \n\nint issame(const int* a, const int* b, int size_a, int size_b) {\n if (size_a != size_b) return 0;\n for (int i = 0; i < size_a; i++) {\n if (a[i] != b[i]) return 0;\n }\n return 1;\n}\n\nint main() {\n int returnSize;\n int* result;\n\n result = func0(\"(()()) ((())) () ((())()())\", &returnSize);\n assert(issame(result, (const int[]){2, 3, 1, 3}, returnSize, 4));\n free(result);\n\n result = func0(\"() (()) ((())) (((())))\", &returnSize);\n assert(issame(result, (const int[]){1, 2, 3, 4}, returnSize, 4));\n free(result);\n\n result = func0(\"(()(())((())))\", &returnSize);\n assert(issame(result, (const int[]){4}, returnSize, 1));\n free(result);\n \n return 0;\n}",
+ "opt": "O1",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r15\npush r14\npush r13\npush r12\npush rbp\npush rbx\nsub rsp, 8\nmov r13, rsi\nmovzx edx, byte ptr [rdi]\ntest dl, dl\njz short loc_1226\nlea rbx, [rdi+1]\nmov r14d, 0\nmov r12d, 0\nmov ebp, 0\nmov eax, 0\njmp short loc_11F7\nloc_11E1:\nadd ebp, 1\ncmp r12d, ebp\ncmovl r12d, ebp\nloc_11EB:\nadd rbx, 1\nmovzx edx, byte ptr [rbx-1]\ntest dl, dl\njz short loc_1231\nloc_11F7:\ncmp dl, 28h ; '('\njz short loc_11E1\ncmp dl, 29h ; ')'\njnz short loc_11EB\nsub ebp, 1\njnz short loc_11EB\nadd r14d, 1\nmovsxd r15, r14d\nshl r15, 2\nmov rsi, r15; size\nmov rdi, rax; ptr\ncall _realloc\nmov [rax+r15-4], r12d\nmov r12d, ebp\njmp short loc_11EB\nloc_1226:\nmov r14d, 0\nmov eax, 0\nloc_1231:\nmov [r13+0], r14d\nadd rsp, 8\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn",
+ "ida_pseudo": "void *__fastcall func0(char *a1, _DWORD *a2)\n{\n char v2; // dl\n char *v3; // rbx\n int v4; // r14d\n int v5; // r12d\n int v6; // ebp\n void *result; // rax\n\n v2 = *a1;\n if ( *a1 )\n {\n v3 = a1 + 1;\n v4 = 0;\n v5 = 0;\n v6 = 0;\n result = 0LL;\n do\n {\n if ( v2 == 40 )\n {\n if ( v5 < ++v6 )\n v5 = v6;\n }\n else if ( v2 == 41 && !--v6 )\n {\n result = realloc(result, 4LL * ++v4);\n *((_DWORD *)result + v4 - 1) = v5;\n v5 = 0;\n }\n v2 = *v3++;\n }\n while ( v2 );\n }\n else\n {\n v4 = 0;\n result = 0LL;\n }\n *a2 = v4;\n return result;\n}",
+ "ida_strip_asm": "sub_11A9:\nendbr64\npush r15\npush r14\npush r13\npush r12\npush rbp\npush rbx\nsub rsp, 8\nmov r13, rsi\nmovzx edx, byte ptr [rdi]\ntest dl, dl\njz short loc_1226\nlea rbx, [rdi+1]\nmov r14d, 0\nmov r12d, 0\nmov ebp, 0\nmov eax, 0\njmp short loc_11F7\nloc_11E1:\nadd ebp, 1\ncmp r12d, ebp\ncmovl r12d, ebp\nloc_11EB:\nadd rbx, 1\nmovzx edx, byte ptr [rbx-1]\ntest dl, dl\njz short loc_1231\nloc_11F7:\ncmp dl, 28h ; '('\njz short loc_11E1\ncmp dl, 29h ; ')'\njnz short loc_11EB\nsub ebp, 1\njnz short loc_11EB\nadd r14d, 1\nmovsxd r15, r14d\nshl r15, 2\nmov rsi, r15; size\nmov rdi, rax; ptr\ncall _realloc\nmov [rax+r15-4], r12d\nmov r12d, ebp\njmp short loc_11EB\nloc_1226:\nmov r14d, 0\nmov eax, 0\nloc_1231:\nmov [r13+0], r14d\nadd rsp, 8\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn",
+ "ida_strip_pseudo": "void *__fastcall sub_11A9(char *a1, _DWORD *a2)\n{\n char v2; // dl\n char *v3; // rbx\n int v4; // r14d\n int v5; // r12d\n int v6; // ebp\n void *result; // rax\n\n v2 = *a1;\n if ( *a1 )\n {\n v3 = a1 + 1;\n v4 = 0;\n v5 = 0;\n v6 = 0;\n result = 0LL;\n do\n {\n if ( v2 == 40 )\n {\n if ( v5 < ++v6 )\n v5 = v6;\n }\n else if ( v2 == 41 && !--v6 )\n {\n result = realloc(result, 4LL * ++v4);\n *((_DWORD *)result + v4 - 1) = v5;\n v5 = 0;\n }\n v2 = *v3++;\n }\n while ( v2 );\n }\n else\n {\n v4 = 0;\n result = 0LL;\n }\n *a2 = v4;\n return result;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "void *sub_11A9(char *a1, uint32_t *a2) {\n char v2;\n char *v3;\n int v4;\n int v5;\n int v6;\n void *result;\n v2 = *a1;\n if (*a1) {\n v3 = a1 + 1;\n v4 = 0;\n v5 = 0;\n v6 = 0;\n result = 0LL;\n do {\n if (v2 == 40) {\n if (v5 < ++v6) v5 = v6;\n } else if (v2 == 41 && !--v6) {\n result = realloc(result, 4LL * ++v4);\n *((uint32_t *)result + v4 - 1) = v5;\n v5 = 0;\n }\n v2 = *v3++;\n } while (v2);\n } else {\n v4 = 0;\n result = 0LL;\n }\n *a2 = v4;\n return result;\n}",
+ "ida_pseudo_norm": "void *func0(char *a1, uint32_t *a2) {\n char v2;\n char *v3;\n int v4;\n int v5;\n int v6;\n void *result;\n v2 = *a1;\n if (*a1) {\n v3 = a1 + 1;\n v4 = 0;\n v5 = 0;\n v6 = 0;\n result = 0LL;\n do {\n if (v2 == 40) {\n if (v5 < ++v6) v5 = v6;\n } else if (v2 == 41 && !--v6) {\n result = realloc(result, 4LL * ++v4);\n *((uint32_t *)result + v4 - 1) = v5;\n v5 = 0;\n }\n v2 = *v3++;\n } while (v2);\n } else {\n v4 = 0;\n result = 0LL;\n }\n *a2 = v4;\n return result;\n}"
+ },
+ {
+ "index": "HumanEval-C-6",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "int* func0(const char* paren_string, int* returnSize) {\n int* all_levels = NULL;\n int level = 0, max_level = 0, i = 0, count = 0;\n char chr;\n for (i = 0; paren_string[i] != '\\0'; i++) {\n chr = paren_string[i];\n if (chr == '(') {\n level += 1;\n if (level > max_level) max_level = level;\n } else if (chr == ')') {\n level -= 1;\n if (level == 0) {\n all_levels = (int*)realloc(all_levels, sizeof(int) * (count + 1));\n all_levels[count++] = max_level;\n max_level = 0;\n }\n }\n }\n *returnSize = count;\n return all_levels;\n}",
+ "test": "#include \n\nint issame(const int* a, const int* b, int size_a, int size_b) {\n if (size_a != size_b) return 0;\n for (int i = 0; i < size_a; i++) {\n if (a[i] != b[i]) return 0;\n }\n return 1;\n}\n\nint main() {\n int returnSize;\n int* result;\n\n result = func0(\"(()()) ((())) () ((())()())\", &returnSize);\n assert(issame(result, (const int[]){2, 3, 1, 3}, returnSize, 4));\n free(result);\n\n result = func0(\"() (()) ((())) (((())))\", &returnSize);\n assert(issame(result, (const int[]){1, 2, 3, 4}, returnSize, 4));\n free(result);\n\n result = func0(\"(()(())((())))\", &returnSize);\n assert(issame(result, (const int[]){4}, returnSize, 1));\n free(result);\n \n return 0;\n}",
+ "opt": "O2",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r15\npush r14\npush r13\nmov r13, rsi\npush r12\npush rbp\npush rbx\nsub rsp, 8\nmovzx edx, byte ptr [rdi]\ntest dl, dl\njz short loc_13D8\nlea rbx, [rdi+1]\nxor r14d, r14d\nxor r12d, r12d\nxor ebp, ebp\nxor eax, eax\njmp short loc_1380\nloc_1370:\ncmp dl, 29h ; ')'\njz short loc_13B0\nloc_1375:\nmovzx edx, byte ptr [rbx]\nadd rbx, 1\ntest dl, dl\njz short loc_139A\nloc_1380:\ncmp dl, 28h ; '('\njnz short loc_1370\nadd ebp, 1\ncmp r12d, ebp\ncmovl r12d, ebp\nmovzx edx, byte ptr [rbx]\nadd rbx, 1\ntest dl, dl\njnz short loc_1380\nloc_139A:\nmov [r13+0], r14d\nadd rsp, 8\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_13B0:\nsub ebp, 1\njnz short loc_1375\nadd r14d, 1\nmov rdi, rax; ptr\nmovsxd r15, r14d\nshl r15, 2\nmov rsi, r15; size\ncall _realloc\nmov [rax+r15-4], r12d\nxor r12d, r12d\njmp short loc_1375\nloc_13D8:\nxor r14d, r14d\nxor eax, eax\njmp short loc_139A",
+ "ida_pseudo": "void *__fastcall func0(char *a1, _DWORD *a2)\n{\n char v2; // dl\n char *v3; // rbx\n int v4; // r14d\n int v5; // r12d\n int v6; // ebp\n void *result; // rax\n\n v2 = *a1;\n if ( *a1 )\n {\n v3 = a1 + 1;\n v4 = 0;\n v5 = 0;\n v6 = 0;\n result = 0LL;\n do\n {\n while ( v2 == 40 )\n {\n if ( v5 < ++v6 )\n v5 = v6;\n v2 = *v3++;\n if ( !v2 )\n goto LABEL_9;\n }\n if ( v2 == 41 && !--v6 )\n {\n result = realloc(result, 4LL * ++v4);\n *((_DWORD *)result + v4 - 1) = v5;\n v5 = 0;\n }\n v2 = *v3++;\n }\n while ( v2 );\n }\n else\n {\n v4 = 0;\n result = 0LL;\n }\nLABEL_9:\n *a2 = v4;\n return result;\n}",
+ "ida_strip_asm": "sub_1340:\nendbr64\npush r15\npush r14\npush r13\nmov r13, rsi\npush r12\npush rbp\npush rbx\nsub rsp, 8\nmovzx edx, byte ptr [rdi]\ntest dl, dl\njz short loc_13D8\nlea rbx, [rdi+1]\nxor r14d, r14d\nxor r12d, r12d\nxor ebp, ebp\nxor eax, eax\njmp short loc_1380\nloc_1370:\ncmp dl, 29h ; ')'\njz short loc_13B0\nloc_1375:\nmovzx edx, byte ptr [rbx]\nadd rbx, 1\ntest dl, dl\njz short loc_139A\nloc_1380:\ncmp dl, 28h ; '('\njnz short loc_1370\nadd ebp, 1\ncmp r12d, ebp\ncmovl r12d, ebp\nmovzx edx, byte ptr [rbx]\nadd rbx, 1\ntest dl, dl\njnz short loc_1380\nloc_139A:\nmov [r13+0], r14d\nadd rsp, 8\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_13B0:\nsub ebp, 1\njnz short loc_1375\nadd r14d, 1\nmov rdi, rax; ptr\nmovsxd r15, r14d\nshl r15, 2\nmov rsi, r15; size\ncall _realloc\nmov [rax+r15-4], r12d\nxor r12d, r12d\njmp short loc_1375\nloc_13D8:\nxor r14d, r14d\nxor eax, eax\njmp short loc_139A",
+ "ida_strip_pseudo": "void *__fastcall sub_1340(char *a1, _DWORD *a2)\n{\n char v2; // dl\n char *v3; // rbx\n int v4; // r14d\n int v5; // r12d\n int v6; // ebp\n void *result; // rax\n\n v2 = *a1;\n if ( *a1 )\n {\n v3 = a1 + 1;\n v4 = 0;\n v5 = 0;\n v6 = 0;\n result = 0LL;\n do\n {\n while ( v2 == 40 )\n {\n if ( v5 < ++v6 )\n v5 = v6;\n v2 = *v3++;\n if ( !v2 )\n goto LABEL_9;\n }\n if ( v2 == 41 && !--v6 )\n {\n result = realloc(result, 4LL * ++v4);\n *((_DWORD *)result + v4 - 1) = v5;\n v5 = 0;\n }\n v2 = *v3++;\n }\n while ( v2 );\n }\n else\n {\n v4 = 0;\n result = 0LL;\n }\nLABEL_9:\n *a2 = v4;\n return result;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "void *sub_1340(char *a1, uint32_t *a2) {\n char v2;\n char *v3;\n int v4;\n int v5;\n int v6;\n void *result;\n v2 = *a1;\n if (*a1) {\n v3 = a1 + 1;\n v4 = 0;\n v5 = 0;\n v6 = 0;\n result = 0LL;\n do {\n while (v2 == 40) {\n if (v5 < ++v6) v5 = v6;\n v2 = *v3++;\n if (!v2) goto LABEL_9;\n }\n if (v2 == 41 && !--v6) {\n result = realloc(result, 4LL * ++v4);\n *((uint32_t *)result + v4 - 1) = v5;\n v5 = 0;\n }\n v2 = *v3++;\n } while (v2);\n } else {\n v4 = 0;\n result = 0LL;\n }\nLABEL_9:\n *a2 = v4;\n return result;\n}",
+ "ida_pseudo_norm": "void *func0(char *a1, uint32_t *a2) {\n char v2;\n char *v3;\n int v4;\n int v5;\n int v6;\n void *result;\n v2 = *a1;\n if (*a1) {\n v3 = a1 + 1;\n v4 = 0;\n v5 = 0;\n v6 = 0;\n result = 0LL;\n do {\n while (v2 == 40) {\n if (v5 < ++v6) v5 = v6;\n v2 = *v3++;\n if (!v2) goto LABEL_9;\n }\n if (v2 == 41 && !--v6) {\n result = realloc(result, 4LL * ++v4);\n *((uint32_t *)result + v4 - 1) = v5;\n v5 = 0;\n }\n v2 = *v3++;\n } while (v2);\n } else {\n v4 = 0;\n result = 0LL;\n }\nLABEL_9:\n *a2 = v4;\n return result;\n}"
+ },
+ {
+ "index": "HumanEval-C-6",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "int* func0(const char* paren_string, int* returnSize) {\n int* all_levels = NULL;\n int level = 0, max_level = 0, i = 0, count = 0;\n char chr;\n for (i = 0; paren_string[i] != '\\0'; i++) {\n chr = paren_string[i];\n if (chr == '(') {\n level += 1;\n if (level > max_level) max_level = level;\n } else if (chr == ')') {\n level -= 1;\n if (level == 0) {\n all_levels = (int*)realloc(all_levels, sizeof(int) * (count + 1));\n all_levels[count++] = max_level;\n max_level = 0;\n }\n }\n }\n *returnSize = count;\n return all_levels;\n}",
+ "test": "#include \n\nint issame(const int* a, const int* b, int size_a, int size_b) {\n if (size_a != size_b) return 0;\n for (int i = 0; i < size_a; i++) {\n if (a[i] != b[i]) return 0;\n }\n return 1;\n}\n\nint main() {\n int returnSize;\n int* result;\n\n result = func0(\"(()()) ((())) () ((())()())\", &returnSize);\n assert(issame(result, (const int[]){2, 3, 1, 3}, returnSize, 4));\n free(result);\n\n result = func0(\"() (()) ((())) (((())))\", &returnSize);\n assert(issame(result, (const int[]){1, 2, 3, 4}, returnSize, 4));\n free(result);\n\n result = func0(\"(()(())((())))\", &returnSize);\n assert(issame(result, (const int[]){4}, returnSize, 1));\n free(result);\n \n return 0;\n}",
+ "opt": "O3",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r15\npush r14\npush r13\nmov r13, rsi\npush r12\npush rbp\npush rbx\nsub rsp, 8\nmovzx edx, byte ptr [rdi]\ntest dl, dl\njz short loc_13D8\nlea rbx, [rdi+1]\nxor r14d, r14d\nxor r12d, r12d\nxor ebp, ebp\nxor eax, eax\njmp short loc_1380\nloc_1370:\ncmp dl, 29h ; ')'\njz short loc_13B0\nloc_1375:\nmovzx edx, byte ptr [rbx]\nadd rbx, 1\ntest dl, dl\njz short loc_139A\nloc_1380:\ncmp dl, 28h ; '('\njnz short loc_1370\nadd ebp, 1\ncmp r12d, ebp\ncmovl r12d, ebp\nmovzx edx, byte ptr [rbx]\nadd rbx, 1\ntest dl, dl\njnz short loc_1380\nloc_139A:\nmov [r13+0], r14d\nadd rsp, 8\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_13B0:\nsub ebp, 1\njnz short loc_1375\nadd r14d, 1\nmov rdi, rax; ptr\nmovsxd r15, r14d\nshl r15, 2\nmov rsi, r15; size\ncall _realloc\nmov [rax+r15-4], r12d\nxor r12d, r12d\njmp short loc_1375\nloc_13D8:\nxor r14d, r14d\nxor eax, eax\njmp short loc_139A",
+ "ida_pseudo": "void *__fastcall func0(char *a1, _DWORD *a2)\n{\n char v2; // dl\n char *v3; // rbx\n int v4; // r14d\n int v5; // r12d\n int v6; // ebp\n void *result; // rax\n\n v2 = *a1;\n if ( *a1 )\n {\n v3 = a1 + 1;\n v4 = 0;\n v5 = 0;\n v6 = 0;\n result = 0LL;\n do\n {\n while ( v2 == 40 )\n {\n if ( v5 < ++v6 )\n v5 = v6;\n v2 = *v3++;\n if ( !v2 )\n goto LABEL_9;\n }\n if ( v2 == 41 && !--v6 )\n {\n result = realloc(result, 4LL * ++v4);\n *((_DWORD *)result + v4 - 1) = v5;\n v5 = 0;\n }\n v2 = *v3++;\n }\n while ( v2 );\n }\n else\n {\n v4 = 0;\n result = 0LL;\n }\nLABEL_9:\n *a2 = v4;\n return result;\n}",
+ "ida_strip_asm": "sub_1340:\nendbr64\npush r15\npush r14\npush r13\nmov r13, rsi\npush r12\npush rbp\npush rbx\nsub rsp, 8\nmovzx edx, byte ptr [rdi]\ntest dl, dl\njz short loc_13D8\nlea rbx, [rdi+1]\nxor r14d, r14d\nxor r12d, r12d\nxor ebp, ebp\nxor eax, eax\njmp short loc_1380\nloc_1370:\ncmp dl, 29h ; ')'\njz short loc_13B0\nloc_1375:\nmovzx edx, byte ptr [rbx]\nadd rbx, 1\ntest dl, dl\njz short loc_139A\nloc_1380:\ncmp dl, 28h ; '('\njnz short loc_1370\nadd ebp, 1\ncmp r12d, ebp\ncmovl r12d, ebp\nmovzx edx, byte ptr [rbx]\nadd rbx, 1\ntest dl, dl\njnz short loc_1380\nloc_139A:\nmov [r13+0], r14d\nadd rsp, 8\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_13B0:\nsub ebp, 1\njnz short loc_1375\nadd r14d, 1\nmov rdi, rax; ptr\nmovsxd r15, r14d\nshl r15, 2\nmov rsi, r15; size\ncall _realloc\nmov [rax+r15-4], r12d\nxor r12d, r12d\njmp short loc_1375\nloc_13D8:\nxor r14d, r14d\nxor eax, eax\njmp short loc_139A",
+ "ida_strip_pseudo": "void *__fastcall sub_1340(char *a1, _DWORD *a2)\n{\n char v2; // dl\n char *v3; // rbx\n int v4; // r14d\n int v5; // r12d\n int v6; // ebp\n void *result; // rax\n\n v2 = *a1;\n if ( *a1 )\n {\n v3 = a1 + 1;\n v4 = 0;\n v5 = 0;\n v6 = 0;\n result = 0LL;\n do\n {\n while ( v2 == 40 )\n {\n if ( v5 < ++v6 )\n v5 = v6;\n v2 = *v3++;\n if ( !v2 )\n goto LABEL_9;\n }\n if ( v2 == 41 && !--v6 )\n {\n result = realloc(result, 4LL * ++v4);\n *((_DWORD *)result + v4 - 1) = v5;\n v5 = 0;\n }\n v2 = *v3++;\n }\n while ( v2 );\n }\n else\n {\n v4 = 0;\n result = 0LL;\n }\nLABEL_9:\n *a2 = v4;\n return result;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "void *sub_1340(char *a1, uint32_t *a2) {\n char v2;\n char *v3;\n int v4;\n int v5;\n int v6;\n void *result;\n v2 = *a1;\n if (*a1) {\n v3 = a1 + 1;\n v4 = 0;\n v5 = 0;\n v6 = 0;\n result = 0LL;\n do {\n while (v2 == 40) {\n if (v5 < ++v6) v5 = v6;\n v2 = *v3++;\n if (!v2) goto LABEL_9;\n }\n if (v2 == 41 && !--v6) {\n result = realloc(result, 4LL * ++v4);\n *((uint32_t *)result + v4 - 1) = v5;\n v5 = 0;\n }\n v2 = *v3++;\n } while (v2);\n } else {\n v4 = 0;\n result = 0LL;\n }\nLABEL_9:\n *a2 = v4;\n return result;\n}",
+ "ida_pseudo_norm": "void *func0(char *a1, uint32_t *a2) {\n char v2;\n char *v3;\n int v4;\n int v5;\n int v6;\n void *result;\n v2 = *a1;\n if (*a1) {\n v3 = a1 + 1;\n v4 = 0;\n v5 = 0;\n v6 = 0;\n result = 0LL;\n do {\n while (v2 == 40) {\n if (v5 < ++v6) v5 = v6;\n v2 = *v3++;\n if (!v2) goto LABEL_9;\n }\n if (v2 == 41 && !--v6) {\n result = realloc(result, 4LL * ++v4);\n *((uint32_t *)result + v4 - 1) = v5;\n v5 = 0;\n }\n v2 = *v3++;\n } while (v2);\n } else {\n v4 = 0;\n result = 0LL;\n }\nLABEL_9:\n *a2 = v4;\n return result;\n}"
+ },
+ {
+ "index": "HumanEval-C-7",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char **func0(char **strings, int size, const char *substring, int *out_size) {\n char **out = NULL;\n int count = 0;\n for (int i = 0; i < size; i++) {\n if (strstr(strings[i], substring) != NULL) {\n out = (char **)realloc(out, sizeof(char *) * (count + 1));\n out[count] = strings[i];\n count++;\n }\n }\n *out_size = count;\n return out;\n}",
+ "test": "#include \n#include \n#include \n#include \n\nint issame(char **a, char **b, int size_a, int size_b) {\n if (size_a != size_b) return 0;\n for (int i = 0; i < size_a; i++) {\n if (strcmp(a[i], b[i]) != 0) return 0;\n }\n return 1;\n}\n\nint main() {\n int out_size;\n char **result;\n\n // First test case with empty array and substring \"john\"\n result = func0(NULL, 0, \"john\", &out_size);\n assert(out_size == 0 && result == NULL);\n\n // Second test case\n char *strings1[] = {\"xxx\", \"asd\", \"xxy\", \"john doe\", \"xxxAAA\", \"xxx\"};\n char *expected1[] = {\"xxx\", \"xxxAAA\", \"xxx\"};\n result = func0(strings1, 6, \"xxx\", &out_size);\n assert(issame(result, expected1, out_size, 3));\n free(result);\n\n // Third test case\n char *strings2[] = {\"xxx\", \"asd\", \"aaaxxy\", \"john doe\", \"xxxAAA\", \"xxx\"};\n char *expected2[] = {\"xxx\", \"aaaxxy\", \"xxxAAA\", \"xxx\"};\n result = func0(strings2, 6, \"xx\", &out_size);\n assert(issame(result, expected2, out_size, 4));\n free(result);\n\n // Fourth test case\n char *strings3[] = {\"grunt\", \"trumpet\", \"prune\", \"gruesome\"};\n char *expected3[] = {\"grunt\", \"prune\"};\n result = func0(strings3, 4, \"run\", &out_size);\n assert(issame(result, expected3, out_size, 2));\n free(result);\n \n return 0;\n}",
+ "opt": "O0",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\nmov rbp, rsp\nsub rsp, 30h\nmov [rbp+var_18], rdi\nmov [rbp+var_1C], esi\nmov [rbp+needle], rdx\nmov [rbp+var_30], rcx\nmov [rbp+ptr], 0\nmov [rbp+var_10], 0\nmov [rbp+var_C], 0\njmp loc_12A4\nloc_121F:\nmov eax, [rbp+var_C]\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov rax, [rax]\nmov rdx, [rbp+needle]\nmov rsi, rdx; needle\nmov rdi, rax; haystack\ncall _strstr\ntest rax, rax\njz short loc_12A0\nmov eax, [rbp+var_10]\nadd eax, 1\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+ptr]\nmov rsi, rdx; size\nmov rdi, rax; ptr\ncall _realloc\nmov [rbp+ptr], rax\nmov eax, [rbp+var_C]\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov edx, [rbp+var_10]\nmovsxd rdx, edx\nlea rcx, ds:0[rdx*8]\nmov rdx, [rbp+ptr]\nadd rdx, rcx\nmov rax, [rax]\nmov [rdx], rax\nadd [rbp+var_10], 1\nloc_12A0:\nadd [rbp+var_C], 1\nloc_12A4:\nmov eax, [rbp+var_C]\ncmp eax, [rbp+var_1C]\njl loc_121F\nmov rax, [rbp+var_30]\nmov edx, [rbp+var_10]\nmov [rax], edx\nmov rax, [rbp+ptr]\nleave\nretn",
+ "ida_pseudo": "void *__fastcall func0(__int64 a1, int a2, const char *a3, _DWORD *a4)\n{\n int v7; // [rsp+20h] [rbp-10h]\n int i; // [rsp+24h] [rbp-Ch]\n void *ptr; // [rsp+28h] [rbp-8h]\n\n ptr = 0LL;\n v7 = 0;\n for ( i = 0; i < a2; ++i )\n {\n if ( strstr(*(const char **)(8LL * i + a1), a3) )\n {\n ptr = realloc(ptr, 8LL * (v7 + 1));\n *((_QWORD *)ptr + v7++) = *(_QWORD *)(8LL * i + a1);\n }\n }\n *a4 = v7;\n return ptr;\n}",
+ "ida_strip_asm": "sub_11E9:\nendbr64\npush rbp\nmov rbp, rsp\nsub rsp, 30h\nmov [rbp+var_18], rdi\nmov [rbp+var_1C], esi\nmov [rbp+needle], rdx\nmov [rbp+var_30], rcx\nmov [rbp+ptr], 0\nmov [rbp+var_10], 0\nmov [rbp+var_C], 0\njmp loc_12A4\nloc_121F:\nmov eax, [rbp+var_C]\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov rax, [rax]\nmov rdx, [rbp+needle]\nmov rsi, rdx; needle\nmov rdi, rax; haystack\ncall _strstr\ntest rax, rax\njz short loc_12A0\nmov eax, [rbp+var_10]\nadd eax, 1\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+ptr]\nmov rsi, rdx; size\nmov rdi, rax; ptr\ncall _realloc\nmov [rbp+ptr], rax\nmov eax, [rbp+var_C]\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov edx, [rbp+var_10]\nmovsxd rdx, edx\nlea rcx, ds:0[rdx*8]\nmov rdx, [rbp+ptr]\nadd rdx, rcx\nmov rax, [rax]\nmov [rdx], rax\nadd [rbp+var_10], 1\nloc_12A0:\nadd [rbp+var_C], 1\nloc_12A4:\nmov eax, [rbp+var_C]\ncmp eax, [rbp+var_1C]\njl loc_121F\nmov rax, [rbp+var_30]\nmov edx, [rbp+var_10]\nmov [rax], edx\nmov rax, [rbp+ptr]\nleave\nretn",
+ "ida_strip_pseudo": "void *__fastcall sub_11E9(__int64 a1, int a2, const char *a3, _DWORD *a4)\n{\n int v7; // [rsp+20h] [rbp-10h]\n int i; // [rsp+24h] [rbp-Ch]\n void *ptr; // [rsp+28h] [rbp-8h]\n\n ptr = 0LL;\n v7 = 0;\n for ( i = 0; i < a2; ++i )\n {\n if ( strstr(*(const char **)(8LL * i + a1), a3) )\n {\n ptr = realloc(ptr, 8LL * (v7 + 1));\n *((_QWORD *)ptr + v7++) = *(_QWORD *)(8LL * i + a1);\n }\n }\n *a4 = v7;\n return ptr;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "void *sub_11E9(long long a1, int a2, const char *a3, uint32_t *a4) {\n int v7;\n int i;\n void *ptr;\n ptr = 0LL;\n v7 = 0;\n for (i = 0; i < a2; ++i) {\n if (strstr(*(const char **)(8LL * i + a1), a3)) {\n ptr = realloc(ptr, 8LL * (v7 + 1));\n *((uint64_t *)ptr + v7++) = *(uint64_t *)(8LL * i + a1);\n }\n }\n *a4 = v7;\n return ptr;\n}",
+ "ida_pseudo_norm": "void *func0(long long a1, int a2, const char *a3, uint32_t *a4) {\n int v7;\n int i;\n void *ptr;\n ptr = 0LL;\n v7 = 0;\n for (i = 0; i < a2; ++i) {\n if (strstr(*(const char **)(8LL * i + a1), a3)) {\n ptr = realloc(ptr, 8LL * (v7 + 1));\n *((uint64_t *)ptr + v7++) = *(uint64_t *)(8LL * i + a1);\n }\n }\n *a4 = v7;\n return ptr;\n}"
+ },
+ {
+ "index": "HumanEval-C-7",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char **func0(char **strings, int size, const char *substring, int *out_size) {\n char **out = NULL;\n int count = 0;\n for (int i = 0; i < size; i++) {\n if (strstr(strings[i], substring) != NULL) {\n out = (char **)realloc(out, sizeof(char *) * (count + 1));\n out[count] = strings[i];\n count++;\n }\n }\n *out_size = count;\n return out;\n}",
+ "test": "#include \n#include \n#include \n#include \n\nint issame(char **a, char **b, int size_a, int size_b) {\n if (size_a != size_b) return 0;\n for (int i = 0; i < size_a; i++) {\n if (strcmp(a[i], b[i]) != 0) return 0;\n }\n return 1;\n}\n\nint main() {\n int out_size;\n char **result;\n\n // First test case with empty array and substring \"john\"\n result = func0(NULL, 0, \"john\", &out_size);\n assert(out_size == 0 && result == NULL);\n\n // Second test case\n char *strings1[] = {\"xxx\", \"asd\", \"xxy\", \"john doe\", \"xxxAAA\", \"xxx\"};\n char *expected1[] = {\"xxx\", \"xxxAAA\", \"xxx\"};\n result = func0(strings1, 6, \"xxx\", &out_size);\n assert(issame(result, expected1, out_size, 3));\n free(result);\n\n // Third test case\n char *strings2[] = {\"xxx\", \"asd\", \"aaaxxy\", \"john doe\", \"xxxAAA\", \"xxx\"};\n char *expected2[] = {\"xxx\", \"aaaxxy\", \"xxxAAA\", \"xxx\"};\n result = func0(strings2, 6, \"xx\", &out_size);\n assert(issame(result, expected2, out_size, 4));\n free(result);\n\n // Fourth test case\n char *strings3[] = {\"grunt\", \"trumpet\", \"prune\", \"gruesome\"};\n char *expected3[] = {\"grunt\", \"prune\"};\n result = func0(strings3, 4, \"run\", &out_size);\n assert(issame(result, expected3, out_size, 2));\n free(result);\n \n return 0;\n}",
+ "opt": "O1",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r15\npush r14\npush r13\npush r12\npush rbp\npush rbx\nsub rsp, 18h\nmov [rsp+48h+needle], rdx\nmov [rsp+48h+var_40], rcx\ntest esi, esi\njle short loc_125C\nmov rbx, rdi\nmovsxd rsi, esi\nlea r15, [rdi+rsi*8]\nmov r14d, 0\nmov ebp, 0\njmp short loc_1228\nloc_121F:\nadd rbx, 8\ncmp rbx, r15\njz short loc_1267\nloc_1228:\nmov r13, [rbx]\nmov rsi, [rsp+48h+needle]; needle\nmov rdi, r13; haystack\ncall _strstr\ntest rax, rax\njz short loc_121F\nadd r14d, 1\nmovsxd r12, r14d\nshl r12, 3\nmov rsi, r12; size\nmov rdi, rbp; ptr\ncall _realloc\nmov rbp, rax\nmov [rax+r12-8], r13\njmp short loc_121F\nloc_125C:\nmov r14d, 0\nmov ebp, 0\nloc_1267:\nmov rax, [rsp+48h+var_40]\nmov [rax], r14d\nmov rax, rbp\nadd rsp, 18h\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn",
+ "ida_pseudo": "void *__fastcall func0(const char **a1, int a2, const char *a3, _DWORD *a4)\n{\n const char **v4; // rbx\n int v5; // r14d\n void *v6; // rbp\n const char *v7; // r13\n\n if ( a2 <= 0 )\n {\n v5 = 0;\n v6 = 0LL;\n }\n else\n {\n v4 = a1;\n v5 = 0;\n v6 = 0LL;\n do\n {\n v7 = *v4;\n if ( strstr(*v4, a3) )\n {\n v6 = realloc(v6, 8LL * ++v5);\n *((_QWORD *)v6 + v5 - 1) = v7;\n }\n ++v4;\n }\n while ( v4 != &a1[a2] );\n }\n *a4 = v5;\n return v6;\n}",
+ "ida_strip_asm": "sub_11E9:\nendbr64\npush r15\npush r14\npush r13\npush r12\npush rbp\npush rbx\nsub rsp, 18h\nmov [rsp+48h+needle], rdx\nmov [rsp+48h+var_40], rcx\ntest esi, esi\njle short loc_125C\nmov rbx, rdi\nmovsxd rsi, esi\nlea r15, [rdi+rsi*8]\nmov r14d, 0\nmov ebp, 0\njmp short loc_1228\nloc_121F:\nadd rbx, 8\ncmp rbx, r15\njz short loc_1267\nloc_1228:\nmov r13, [rbx]\nmov rsi, [rsp+48h+needle]; needle\nmov rdi, r13; haystack\ncall _strstr\ntest rax, rax\njz short loc_121F\nadd r14d, 1\nmovsxd r12, r14d\nshl r12, 3\nmov rsi, r12; size\nmov rdi, rbp; ptr\ncall _realloc\nmov rbp, rax\nmov [rax+r12-8], r13\njmp short loc_121F\nloc_125C:\nmov r14d, 0\nmov ebp, 0\nloc_1267:\nmov rax, [rsp+48h+var_40]\nmov [rax], r14d\nmov rax, rbp\nadd rsp, 18h\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn",
+ "ida_strip_pseudo": "void *__fastcall sub_11E9(const char **a1, int a2, const char *a3, _DWORD *a4)\n{\n const char **v4; // rbx\n int v5; // r14d\n void *v6; // rbp\n const char *v7; // r13\n\n if ( a2 <= 0 )\n {\n v5 = 0;\n v6 = 0LL;\n }\n else\n {\n v4 = a1;\n v5 = 0;\n v6 = 0LL;\n do\n {\n v7 = *v4;\n if ( strstr(*v4, a3) )\n {\n v6 = realloc(v6, 8LL * ++v5);\n *((_QWORD *)v6 + v5 - 1) = v7;\n }\n ++v4;\n }\n while ( v4 != &a1[a2] );\n }\n *a4 = v5;\n return v6;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "void *sub_11E9(const char **a1, int a2, const char *a3, uint32_t *a4) {\n const char **v4;\n int v5;\n void *v6;\n const char *v7;\n if (a2 <= 0) {\n v5 = 0;\n v6 = 0LL;\n } else {\n v4 = a1;\n v5 = 0;\n v6 = 0LL;\n do {\n v7 = *v4;\n if (strstr(*v4, a3)) {\n v6 = realloc(v6, 8LL * ++v5);\n *((uint64_t *)v6 + v5 - 1) = v7;\n }\n ++v4;\n } while (v4 != &a1[a2]);\n }\n *a4 = v5;\n return v6;\n}",
+ "ida_pseudo_norm": "void *func0(const char **a1, int a2, const char *a3, uint32_t *a4) {\n const char **v4;\n int v5;\n void *v6;\n const char *v7;\n if (a2 <= 0) {\n v5 = 0;\n v6 = 0LL;\n } else {\n v4 = a1;\n v5 = 0;\n v6 = 0LL;\n do {\n v7 = *v4;\n if (strstr(*v4, a3)) {\n v6 = realloc(v6, 8LL * ++v5);\n *((uint64_t *)v6 + v5 - 1) = v7;\n }\n ++v4;\n } while (v4 != &a1[a2]);\n }\n *a4 = v5;\n return v6;\n}"
+ },
+ {
+ "index": "HumanEval-C-7",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char **func0(char **strings, int size, const char *substring, int *out_size) {\n char **out = NULL;\n int count = 0;\n for (int i = 0; i < size; i++) {\n if (strstr(strings[i], substring) != NULL) {\n out = (char **)realloc(out, sizeof(char *) * (count + 1));\n out[count] = strings[i];\n count++;\n }\n }\n *out_size = count;\n return out;\n}",
+ "test": "#include \n#include \n#include \n#include \n\nint issame(char **a, char **b, int size_a, int size_b) {\n if (size_a != size_b) return 0;\n for (int i = 0; i < size_a; i++) {\n if (strcmp(a[i], b[i]) != 0) return 0;\n }\n return 1;\n}\n\nint main() {\n int out_size;\n char **result;\n\n // First test case with empty array and substring \"john\"\n result = func0(NULL, 0, \"john\", &out_size);\n assert(out_size == 0 && result == NULL);\n\n // Second test case\n char *strings1[] = {\"xxx\", \"asd\", \"xxy\", \"john doe\", \"xxxAAA\", \"xxx\"};\n char *expected1[] = {\"xxx\", \"xxxAAA\", \"xxx\"};\n result = func0(strings1, 6, \"xxx\", &out_size);\n assert(issame(result, expected1, out_size, 3));\n free(result);\n\n // Third test case\n char *strings2[] = {\"xxx\", \"asd\", \"aaaxxy\", \"john doe\", \"xxxAAA\", \"xxx\"};\n char *expected2[] = {\"xxx\", \"aaaxxy\", \"xxxAAA\", \"xxx\"};\n result = func0(strings2, 6, \"xx\", &out_size);\n assert(issame(result, expected2, out_size, 4));\n free(result);\n\n // Fourth test case\n char *strings3[] = {\"grunt\", \"trumpet\", \"prune\", \"gruesome\"};\n char *expected3[] = {\"grunt\", \"prune\"};\n result = func0(strings3, 4, \"run\", &out_size);\n assert(issame(result, expected3, out_size, 2));\n free(result);\n \n return 0;\n}",
+ "opt": "O2",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r15\npush r14\npush r13\npush r12\npush rbp\npush rbx\nsub rsp, 18h\nmov [rsp+48h+needle], rdx\nmov [rsp+48h+var_40], rcx\ntest esi, esi\njle short loc_1610\nmovsxd rsi, esi\nmov r15, rdi\nxor r12d, r12d\nxor ebx, ebx\nlea r14, [rdi+rsi*8]\nxchg ax, ax\nloc_15B0:\nmov rbp, [r15]\nmov rsi, [rsp+48h+needle]; needle\nmov rdi, rbp; haystack\ncall _strstr\ntest rax, rax\njz short loc_15E6\nadd r12d, 1\nmov rdi, rbx; ptr\nmovsxd rcx, r12d\nlea r13, ds:0[rcx*8]\nmov rsi, r13; size\ncall _realloc\nmov [rax+r13-8], rbp\nmov rbx, rax\nloc_15E6:\nadd r15, 8\ncmp r15, r14\njnz short loc_15B0\nloc_15EF:\nmov rax, [rsp+48h+var_40]\nmov [rax], r12d\nadd rsp, 18h\nmov rax, rbx\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_1610:\nxor r12d, r12d\nxor ebx, ebx\njmp short loc_15EF",
+ "ida_pseudo": "void *__fastcall func0(const char **a1, int a2, const char *a3, _DWORD *a4)\n{\n const char **v4; // r15\n int v5; // r12d\n void *v6; // rbx\n const char *v7; // rbp\n _QWORD *v8; // rax\n\n if ( a2 <= 0 )\n {\n v5 = 0;\n v6 = 0LL;\n }\n else\n {\n v4 = a1;\n v5 = 0;\n v6 = 0LL;\n do\n {\n v7 = *v4;\n if ( strstr(*v4, a3) )\n {\n v8 = realloc(v6, 8LL * ++v5);\n v8[v5 - 1] = v7;\n v6 = v8;\n }\n ++v4;\n }\n while ( v4 != &a1[a2] );\n }\n *a4 = v5;\n return v6;\n}",
+ "ida_strip_asm": "sub_1580:\nendbr64\npush r15\npush r14\npush r13\npush r12\npush rbp\npush rbx\nsub rsp, 18h\nmov [rsp+48h+needle], rdx\nmov [rsp+48h+var_40], rcx\ntest esi, esi\njle short loc_1610\nmovsxd rsi, esi\nmov r15, rdi\nxor r12d, r12d\nxor ebx, ebx\nlea r14, [rdi+rsi*8]\nxchg ax, ax\nloc_15B0:\nmov rbp, [r15]\nmov rsi, [rsp+48h+needle]; needle\nmov rdi, rbp; haystack\ncall _strstr\ntest rax, rax\njz short loc_15E6\nadd r12d, 1\nmov rdi, rbx; ptr\nmovsxd rcx, r12d\nlea r13, ds:0[rcx*8]\nmov rsi, r13; size\ncall _realloc\nmov [rax+r13-8], rbp\nmov rbx, rax\nloc_15E6:\nadd r15, 8\ncmp r15, r14\njnz short loc_15B0\nloc_15EF:\nmov rax, [rsp+48h+var_40]\nmov [rax], r12d\nadd rsp, 18h\nmov rax, rbx\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_1610:\nxor r12d, r12d\nxor ebx, ebx\njmp short loc_15EF",
+ "ida_strip_pseudo": "void *__fastcall sub_1580(const char **a1, int a2, const char *a3, _DWORD *a4)\n{\n const char **v4; // r15\n int v5; // r12d\n void *v6; // rbx\n const char *v7; // rbp\n _QWORD *v8; // rax\n\n if ( a2 <= 0 )\n {\n v5 = 0;\n v6 = 0LL;\n }\n else\n {\n v4 = a1;\n v5 = 0;\n v6 = 0LL;\n do\n {\n v7 = *v4;\n if ( strstr(*v4, a3) )\n {\n v8 = realloc(v6, 8LL * ++v5);\n v8[v5 - 1] = v7;\n v6 = v8;\n }\n ++v4;\n }\n while ( v4 != &a1[a2] );\n }\n *a4 = v5;\n return v6;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "void *sub_1580(const char **a1, int a2, const char *a3, uint32_t *a4) {\n const char **v4;\n int v5;\n void *v6;\n const char *v7;\n uint64_t *v8;\n if (a2 <= 0) {\n v5 = 0;\n v6 = 0LL;\n } else {\n v4 = a1;\n v5 = 0;\n v6 = 0LL;\n do {\n v7 = *v4;\n if (strstr(*v4, a3)) {\n v8 = realloc(v6, 8LL * ++v5);\n v8[v5 - 1] = v7;\n v6 = v8;\n }\n ++v4;\n } while (v4 != &a1[a2]);\n }\n *a4 = v5;\n return v6;\n}",
+ "ida_pseudo_norm": "void *func0(const char **a1, int a2, const char *a3, uint32_t *a4) {\n const char **v4;\n int v5;\n void *v6;\n const char *v7;\n uint64_t *v8;\n if (a2 <= 0) {\n v5 = 0;\n v6 = 0LL;\n } else {\n v4 = a1;\n v5 = 0;\n v6 = 0LL;\n do {\n v7 = *v4;\n if (strstr(*v4, a3)) {\n v8 = realloc(v6, 8LL * ++v5);\n v8[v5 - 1] = v7;\n v6 = v8;\n }\n ++v4;\n } while (v4 != &a1[a2]);\n }\n *a4 = v5;\n return v6;\n}"
+ },
+ {
+ "index": "HumanEval-C-7",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char **func0(char **strings, int size, const char *substring, int *out_size) {\n char **out = NULL;\n int count = 0;\n for (int i = 0; i < size; i++) {\n if (strstr(strings[i], substring) != NULL) {\n out = (char **)realloc(out, sizeof(char *) * (count + 1));\n out[count] = strings[i];\n count++;\n }\n }\n *out_size = count;\n return out;\n}",
+ "test": "#include \n#include \n#include \n#include \n\nint issame(char **a, char **b, int size_a, int size_b) {\n if (size_a != size_b) return 0;\n for (int i = 0; i < size_a; i++) {\n if (strcmp(a[i], b[i]) != 0) return 0;\n }\n return 1;\n}\n\nint main() {\n int out_size;\n char **result;\n\n // First test case with empty array and substring \"john\"\n result = func0(NULL, 0, \"john\", &out_size);\n assert(out_size == 0 && result == NULL);\n\n // Second test case\n char *strings1[] = {\"xxx\", \"asd\", \"xxy\", \"john doe\", \"xxxAAA\", \"xxx\"};\n char *expected1[] = {\"xxx\", \"xxxAAA\", \"xxx\"};\n result = func0(strings1, 6, \"xxx\", &out_size);\n assert(issame(result, expected1, out_size, 3));\n free(result);\n\n // Third test case\n char *strings2[] = {\"xxx\", \"asd\", \"aaaxxy\", \"john doe\", \"xxxAAA\", \"xxx\"};\n char *expected2[] = {\"xxx\", \"aaaxxy\", \"xxxAAA\", \"xxx\"};\n result = func0(strings2, 6, \"xx\", &out_size);\n assert(issame(result, expected2, out_size, 4));\n free(result);\n\n // Fourth test case\n char *strings3[] = {\"grunt\", \"trumpet\", \"prune\", \"gruesome\"};\n char *expected3[] = {\"grunt\", \"prune\"};\n result = func0(strings3, 4, \"run\", &out_size);\n assert(issame(result, expected3, out_size, 2));\n free(result);\n \n return 0;\n}",
+ "opt": "O3",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r15\npush r14\npush r13\npush r12\npush rbp\npush rbx\nsub rsp, 18h\nmov [rsp+48h+needle], rdx\nmov [rsp+48h+var_40], rcx\ntest esi, esi\njle short loc_1610\nmovsxd rsi, esi\nmov r15, rdi\nxor r12d, r12d\nxor ebx, ebx\nlea r14, [rdi+rsi*8]\nxchg ax, ax\nloc_15B0:\nmov rbp, [r15]\nmov rsi, [rsp+48h+needle]; needle\nmov rdi, rbp; haystack\ncall _strstr\ntest rax, rax\njz short loc_15E6\nadd r12d, 1\nmov rdi, rbx; ptr\nmovsxd rcx, r12d\nlea r13, ds:0[rcx*8]\nmov rsi, r13; size\ncall _realloc\nmov [rax+r13-8], rbp\nmov rbx, rax\nloc_15E6:\nadd r15, 8\ncmp r15, r14\njnz short loc_15B0\nloc_15EF:\nmov rax, [rsp+48h+var_40]\nmov [rax], r12d\nadd rsp, 18h\nmov rax, rbx\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_1610:\nxor r12d, r12d\nxor ebx, ebx\njmp short loc_15EF",
+ "ida_pseudo": "void *__fastcall func0(const char **a1, int a2, const char *a3, _DWORD *a4)\n{\n const char **v4; // r15\n int v5; // r12d\n void *v6; // rbx\n const char *v7; // rbp\n _QWORD *v8; // rax\n\n if ( a2 <= 0 )\n {\n v5 = 0;\n v6 = 0LL;\n }\n else\n {\n v4 = a1;\n v5 = 0;\n v6 = 0LL;\n do\n {\n v7 = *v4;\n if ( strstr(*v4, a3) )\n {\n v8 = realloc(v6, 8LL * ++v5);\n v8[v5 - 1] = v7;\n v6 = v8;\n }\n ++v4;\n }\n while ( v4 != &a1[a2] );\n }\n *a4 = v5;\n return v6;\n}",
+ "ida_strip_asm": "sub_1580:\nendbr64\npush r15\npush r14\npush r13\npush r12\npush rbp\npush rbx\nsub rsp, 18h\nmov [rsp+48h+needle], rdx\nmov [rsp+48h+var_40], rcx\ntest esi, esi\njle short loc_1610\nmovsxd rsi, esi\nmov r15, rdi\nxor r12d, r12d\nxor ebx, ebx\nlea r14, [rdi+rsi*8]\nxchg ax, ax\nloc_15B0:\nmov rbp, [r15]\nmov rsi, [rsp+48h+needle]; needle\nmov rdi, rbp; haystack\ncall _strstr\ntest rax, rax\njz short loc_15E6\nadd r12d, 1\nmov rdi, rbx; ptr\nmovsxd rcx, r12d\nlea r13, ds:0[rcx*8]\nmov rsi, r13; size\ncall _realloc\nmov [rax+r13-8], rbp\nmov rbx, rax\nloc_15E6:\nadd r15, 8\ncmp r15, r14\njnz short loc_15B0\nloc_15EF:\nmov rax, [rsp+48h+var_40]\nmov [rax], r12d\nadd rsp, 18h\nmov rax, rbx\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_1610:\nxor r12d, r12d\nxor ebx, ebx\njmp short loc_15EF",
+ "ida_strip_pseudo": "void *__fastcall sub_1580(const char **a1, int a2, const char *a3, _DWORD *a4)\n{\n const char **v4; // r15\n int v5; // r12d\n void *v6; // rbx\n const char *v7; // rbp\n _QWORD *v8; // rax\n\n if ( a2 <= 0 )\n {\n v5 = 0;\n v6 = 0LL;\n }\n else\n {\n v4 = a1;\n v5 = 0;\n v6 = 0LL;\n do\n {\n v7 = *v4;\n if ( strstr(*v4, a3) )\n {\n v8 = realloc(v6, 8LL * ++v5);\n v8[v5 - 1] = v7;\n v6 = v8;\n }\n ++v4;\n }\n while ( v4 != &a1[a2] );\n }\n *a4 = v5;\n return v6;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "void *sub_1580(const char **a1, int a2, const char *a3, uint32_t *a4) {\n const char **v4;\n int v5;\n void *v6;\n const char *v7;\n uint64_t *v8;\n if (a2 <= 0) {\n v5 = 0;\n v6 = 0LL;\n } else {\n v4 = a1;\n v5 = 0;\n v6 = 0LL;\n do {\n v7 = *v4;\n if (strstr(*v4, a3)) {\n v8 = realloc(v6, 8LL * ++v5);\n v8[v5 - 1] = v7;\n v6 = v8;\n }\n ++v4;\n } while (v4 != &a1[a2]);\n }\n *a4 = v5;\n return v6;\n}",
+ "ida_pseudo_norm": "void *func0(const char **a1, int a2, const char *a3, uint32_t *a4) {\n const char **v4;\n int v5;\n void *v6;\n const char *v7;\n uint64_t *v8;\n if (a2 <= 0) {\n v5 = 0;\n v6 = 0LL;\n } else {\n v4 = a1;\n v5 = 0;\n v6 = 0LL;\n do {\n v7 = *v4;\n if (strstr(*v4, a3)) {\n v8 = realloc(v6, 8LL * ++v5);\n v8[v5 - 1] = v7;\n v6 = v8;\n }\n ++v4;\n } while (v4 != &a1[a2]);\n }\n *a4 = v5;\n return v6;\n}"
+ },
+ {
+ "index": "HumanEval-C-8",
+ "func_name": "func0",
+ "func_dep": "#include \n",
+ "func": "void func0(int *numbers, int size, int *result) {\n int sum = 0, product = 1;\n for (int i = 0; i < size; i++) {\n sum += numbers[i];\n product *= numbers[i];\n }\n result[0] = sum;\n result[1] = product;\n}",
+ "test": "#include \n\nint issame(const int *a, const int *b, int size) {\n for (int i = 0; i < size; i++) {\n if (a[i] != b[i]) return 0;\n }\n return 1;\n}\n\nint main() {\n int result[2];\n\n // First test case\n func0((const int[]){}, 0, result);\n assert(issame(result, (const int[]){0, 1}, 2));\n\n // Second test case\n func0((const int[]){1, 1, 1}, 3, result);\n assert(issame(result, (const int[]){3, 1}, 2));\n\n // Third test case\n func0((const int[]){100, 0}, 2, result);\n assert(issame(result, (const int[]){100, 0}, 2));\n\n // Fourth test case\n func0((const int[]){3, 5, 7}, 3, result);\n assert(issame(result, (const int[]){3 + 5 + 7, 3 * 5 * 7}, 2));\n\n // Fifth test case\n func0((const int[]){10}, 1, result);\n assert(issame(result, (const int[]){10, 10}, 2));\n \n return 0;\n}",
+ "opt": "O0",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\nmov rbp, rsp\nmov [rbp+var_18], rdi\nmov [rbp+var_1C], esi\nmov [rbp+var_28], rdx\nmov [rbp+var_C], 0\nmov [rbp+var_8], 1\nmov [rbp+var_4], 0\njmp short loc_11CF\nloc_1193:\nmov eax, [rbp+var_4]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov eax, [rax]\nadd [rbp+var_C], eax\nmov eax, [rbp+var_4]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov eax, [rax]\nmov edx, [rbp+var_8]\nimul eax, edx\nmov [rbp+var_8], eax\nadd [rbp+var_4], 1\nloc_11CF:\nmov eax, [rbp+var_4]\ncmp eax, [rbp+var_1C]\njl short loc_1193\nmov rax, [rbp+var_28]\nmov edx, [rbp+var_C]\nmov [rax], edx\nmov rax, [rbp+var_28]\nlea rdx, [rax+4]\nmov eax, [rbp+var_8]\nmov [rdx], eax\nnop\npop rbp\nretn",
+ "ida_pseudo": "__int64 __fastcall func0(__int64 a1, int a2, _DWORD *a3)\n{\n __int64 result; // rax\n int v4; // [rsp+1Ch] [rbp-Ch]\n unsigned int v5; // [rsp+20h] [rbp-8h]\n int i; // [rsp+24h] [rbp-4h]\n\n v4 = 0;\n v5 = 1;\n for ( i = 0; i < a2; ++i )\n {\n v4 += *(_DWORD *)(4LL * i + a1);\n v5 *= *(_DWORD *)(4LL * i + a1);\n }\n *a3 = v4;\n result = v5;\n a3[1] = v5;\n return result;\n}",
+ "ida_strip_asm": "sub_1169:\nendbr64\npush rbp\nmov rbp, rsp\nmov [rbp+var_18], rdi\nmov [rbp+var_1C], esi\nmov [rbp+var_28], rdx\nmov [rbp+var_C], 0\nmov [rbp+var_8], 1\nmov [rbp+var_4], 0\njmp short loc_11CF\nloc_1193:\nmov eax, [rbp+var_4]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov eax, [rax]\nadd [rbp+var_C], eax\nmov eax, [rbp+var_4]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov eax, [rax]\nmov edx, [rbp+var_8]\nimul eax, edx\nmov [rbp+var_8], eax\nadd [rbp+var_4], 1\nloc_11CF:\nmov eax, [rbp+var_4]\ncmp eax, [rbp+var_1C]\njl short loc_1193\nmov rax, [rbp+var_28]\nmov edx, [rbp+var_C]\nmov [rax], edx\nmov rax, [rbp+var_28]\nlea rdx, [rax+4]\nmov eax, [rbp+var_8]\nmov [rdx], eax\nnop\npop rbp\nretn",
+ "ida_strip_pseudo": "__int64 __fastcall sub_1169(__int64 a1, int a2, _DWORD *a3)\n{\n __int64 result; // rax\n int v4; // [rsp+1Ch] [rbp-Ch]\n unsigned int v5; // [rsp+20h] [rbp-8h]\n int i; // [rsp+24h] [rbp-4h]\n\n v4 = 0;\n v5 = 1;\n for ( i = 0; i < a2; ++i )\n {\n v4 += *(_DWORD *)(4LL * i + a1);\n v5 *= *(_DWORD *)(4LL * i + a1);\n }\n *a3 = v4;\n result = v5;\n a3[1] = v5;\n return result;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "long long sub_1169(long long a1, int a2, uint32_t *a3) {\n long long result;\n int v4;\n unsigned int v5;\n int i;\n v4 = 0;\n v5 = 1;\n for (i = 0; i < a2; ++i) {\n v4 += *(uint32_t *)(4LL * i + a1);\n v5 *= *(uint32_t *)(4LL * i + a1);\n }\n *a3 = v4;\n result = v5;\n a3[1] = v5;\n return result;\n}",
+ "ida_pseudo_norm": "long long func0(long long a1, int a2, uint32_t *a3) {\n long long result;\n int v4;\n unsigned int v5;\n int i;\n v4 = 0;\n v5 = 1;\n for (i = 0; i < a2; ++i) {\n v4 += *(uint32_t *)(4LL * i + a1);\n v5 *= *(uint32_t *)(4LL * i + a1);\n }\n *a3 = v4;\n result = v5;\n a3[1] = v5;\n return result;\n}"
+ },
+ {
+ "index": "HumanEval-C-8",
+ "func_name": "func0",
+ "func_dep": "#include \n",
+ "func": "void func0(int *numbers, int size, int *result) {\n int sum = 0, product = 1;\n for (int i = 0; i < size; i++) {\n sum += numbers[i];\n product *= numbers[i];\n }\n result[0] = sum;\n result[1] = product;\n}",
+ "test": "#include \n\nint issame(const int *a, const int *b, int size) {\n for (int i = 0; i < size; i++) {\n if (a[i] != b[i]) return 0;\n }\n return 1;\n}\n\nint main() {\n int result[2];\n\n // First test case\n func0((const int[]){}, 0, result);\n assert(issame(result, (const int[]){0, 1}, 2));\n\n // Second test case\n func0((const int[]){1, 1, 1}, 3, result);\n assert(issame(result, (const int[]){3, 1}, 2));\n\n // Third test case\n func0((const int[]){100, 0}, 2, result);\n assert(issame(result, (const int[]){100, 0}, 2));\n\n // Fourth test case\n func0((const int[]){3, 5, 7}, 3, result);\n assert(issame(result, (const int[]){3 + 5 + 7, 3 * 5 * 7}, 2));\n\n // Fifth test case\n func0((const int[]){10}, 1, result);\n assert(issame(result, (const int[]){10, 10}, 2));\n \n return 0;\n}",
+ "opt": "O1",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\ntest esi, esi\njle short loc_119B\nmov rax, rdi\nmovsxd rsi, esi\nlea r8, [rdi+rsi*4]\nmov esi, 1\nmov edi, 0\nloc_1185:\nmov ecx, [rax]\nadd edi, ecx\nimul esi, ecx\nadd rax, 4\ncmp rax, r8\njnz short loc_1185\nloc_1195:\nmov [rdx], edi\nmov [rdx+4], esi\nretn\nloc_119B:\nmov esi, 1\nmov edi, 0\njmp short loc_1195",
+ "ida_pseudo": "void __fastcall func0(_DWORD *a1, int a2, _DWORD *a3)\n{\n _DWORD *v3; // rax\n _DWORD *v4; // r8\n int v5; // esi\n int v6; // edi\n\n if ( a2 <= 0 )\n {\n v5 = 1;\n v6 = 0;\n }\n else\n {\n v3 = a1;\n v4 = &a1[a2];\n v5 = 1;\n v6 = 0;\n do\n {\n v6 += *v3;\n v5 *= *v3++;\n }\n while ( v3 != v4 );\n }\n *a3 = v6;\n a3[1] = v5;\n}",
+ "ida_strip_asm": "sub_1169:\nendbr64\ntest esi, esi\njle short loc_119B\nmov rax, rdi\nmovsxd rsi, esi\nlea r8, [rdi+rsi*4]\nmov esi, 1\nmov edi, 0\nloc_1185:\nmov ecx, [rax]\nadd edi, ecx\nimul esi, ecx\nadd rax, 4\ncmp rax, r8\njnz short loc_1185\nloc_1195:\nmov [rdx], edi\nmov [rdx+4], esi\nretn\nloc_119B:\nmov esi, 1\nmov edi, 0\njmp short loc_1195",
+ "ida_strip_pseudo": "void __fastcall sub_1169(_DWORD *a1, int a2, _DWORD *a3)\n{\n _DWORD *v3; // rax\n _DWORD *v4; // r8\n int v5; // esi\n int v6; // edi\n\n if ( a2 <= 0 )\n {\n v5 = 1;\n v6 = 0;\n }\n else\n {\n v3 = a1;\n v4 = &a1[a2];\n v5 = 1;\n v6 = 0;\n do\n {\n v6 += *v3;\n v5 *= *v3++;\n }\n while ( v3 != v4 );\n }\n *a3 = v6;\n a3[1] = v5;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "void sub_1169(uint32_t *a1, int a2, uint32_t *a3) {\n uint32_t *v3;\n uint32_t *v4;\n int v5;\n int v6;\n if (a2 <= 0) {\n v5 = 1;\n v6 = 0;\n } else {\n v3 = a1;\n v4 = &a1[a2];\n v5 = 1;\n v6 = 0;\n do {\n v6 += *v3;\n v5 *= *v3++;\n } while (v3 != v4);\n }\n *a3 = v6;\n a3[1] = v5;\n}",
+ "ida_pseudo_norm": "void func0(uint32_t *a1, int a2, uint32_t *a3) {\n uint32_t *v3;\n uint32_t *v4;\n int v5;\n int v6;\n if (a2 <= 0) {\n v5 = 1;\n v6 = 0;\n } else {\n v3 = a1;\n v4 = &a1[a2];\n v5 = 1;\n v6 = 0;\n do {\n v6 += *v3;\n v5 *= *v3++;\n } while (v3 != v4);\n }\n *a3 = v6;\n a3[1] = v5;\n}"
+ },
+ {
+ "index": "HumanEval-C-9",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "int *func0(int *numbers, int size) {\n if (size <= 0) {\n return NULL;\n }\n int *out = malloc(size * sizeof(int));\n if (!out) {\n return NULL;\n }\n int max = numbers[0];\n for (int i = 0; i < size; i++) {\n if (numbers[i] > max) max = numbers[i];\n out[i] = max;\n }\n return out;\n}",
+ "test": "#include \n#include \n#include \n\nint issame(int *a, int *b, int size) {\n for (int i = 0; i < size; i++) {\n if (a[i] != b[i]) return 0;\n }\n return 1;\n}\n\nint main() {\n int *result;\n\n // First test case\n result = func0((const int[]){}, 0);\n assert(result == NULL);\n free(result);\n\n // Second test case\n int test1[] = {1, 2, 3, 4};\n result = func0(test1, 4);\n assert(issame(result, (const int[]){1, 2, 3, 4}, 4));\n free(result);\n\n // Third test case\n int test2[] = {4, 3, 2, 1};\n result = func0(test2, 4);\n assert(issame(result, (const int[]){4, 4, 4, 4}, 4));\n free(result);\n\n // Fourth test case\n int test3[] = {3, 2, 3, 100, 3};\n result = func0(test3, 5);\n assert(issame(result, (const int[]){3, 3, 3, 100, 100}, 5));\n free(result);\n \n return 0;\n}",
+ "opt": "O0",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\nmov rbp, rsp\nsub rsp, 20h\nmov [rbp+var_18], rdi\nmov [rbp+var_1C], esi\ncmp [rbp+var_1C], 0\njg short loc_11CC\nmov eax, 0\njmp locret_125E\nloc_11CC:\nmov eax, [rbp+var_1C]\ncdqe\nshl rax, 2\nmov rdi, rax; size\ncall _malloc\nmov [rbp+var_8], rax\ncmp [rbp+var_8], 0\njnz short loc_11EF\nmov eax, 0\njmp short locret_125E\nloc_11EF:\nmov rax, [rbp+var_18]\nmov eax, [rax]\nmov [rbp+var_10], eax\nmov [rbp+var_C], 0\njmp short loc_1252\nloc_1201:\nmov eax, [rbp+var_C]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov eax, [rax]\ncmp [rbp+var_10], eax\njge short loc_1235\nmov eax, [rbp+var_C]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov eax, [rax]\nmov [rbp+var_10], eax\nloc_1235:\nmov eax, [rbp+var_C]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_8]\nadd rdx, rax\nmov eax, [rbp+var_10]\nmov [rdx], eax\nadd [rbp+var_C], 1\nloc_1252:\nmov eax, [rbp+var_C]\ncmp eax, [rbp+var_1C]\njl short loc_1201\nmov rax, [rbp+var_8]\nlocret_125E:\nleave\nretn",
+ "ida_pseudo": "_DWORD *__fastcall func0(int *a1, int a2)\n{\n int v3; // [rsp+10h] [rbp-10h]\n int i; // [rsp+14h] [rbp-Ch]\n _DWORD *v5; // [rsp+18h] [rbp-8h]\n\n if ( a2 <= 0 )\n return 0LL;\n v5 = malloc(4LL * a2);\n if ( !v5 )\n return 0LL;\n v3 = *a1;\n for ( i = 0; i < a2; ++i )\n {\n if ( v3 < a1[i] )\n v3 = a1[i];\n v5[i] = v3;\n }\n return v5;\n}",
+ "ida_strip_asm": "sub_11A9:\nendbr64\npush rbp\nmov rbp, rsp\nsub rsp, 20h\nmov [rbp+var_18], rdi\nmov [rbp+var_1C], esi\ncmp [rbp+var_1C], 0\njg short loc_11CC\nmov eax, 0\njmp locret_125E\nloc_11CC:\nmov eax, [rbp+var_1C]\ncdqe\nshl rax, 2\nmov rdi, rax; size\ncall _malloc\nmov [rbp+var_8], rax\ncmp [rbp+var_8], 0\njnz short loc_11EF\nmov eax, 0\njmp short locret_125E\nloc_11EF:\nmov rax, [rbp+var_18]\nmov eax, [rax]\nmov [rbp+var_10], eax\nmov [rbp+var_C], 0\njmp short loc_1252\nloc_1201:\nmov eax, [rbp+var_C]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov eax, [rax]\ncmp [rbp+var_10], eax\njge short loc_1235\nmov eax, [rbp+var_C]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_18]\nadd rax, rdx\nmov eax, [rax]\nmov [rbp+var_10], eax\nloc_1235:\nmov eax, [rbp+var_C]\ncdqe\nlea rdx, ds:0[rax*4]\nmov rax, [rbp+var_8]\nadd rdx, rax\nmov eax, [rbp+var_10]\nmov [rdx], eax\nadd [rbp+var_C], 1\nloc_1252:\nmov eax, [rbp+var_C]\ncmp eax, [rbp+var_1C]\njl short loc_1201\nmov rax, [rbp+var_8]\nlocret_125E:\nleave\nretn",
+ "ida_strip_pseudo": "_DWORD *__fastcall sub_11A9(int *a1, int a2)\n{\n int v3; // [rsp+10h] [rbp-10h]\n int i; // [rsp+14h] [rbp-Ch]\n _DWORD *v5; // [rsp+18h] [rbp-8h]\n\n if ( a2 <= 0 )\n return 0LL;\n v5 = malloc(4LL * a2);\n if ( !v5 )\n return 0LL;\n v3 = *a1;\n for ( i = 0; i < a2; ++i )\n {\n if ( v3 < a1[i] )\n v3 = a1[i];\n v5[i] = v3;\n }\n return v5;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "uint32_t *sub_11A9(int *a1, int a2) {\n int v3;\n int i;\n uint32_t *v5;\n if (a2 <= 0) return 0LL;\n v5 = malloc(4LL * a2);\n if (!v5) return 0LL;\n v3 = *a1;\n for (i = 0; i < a2; ++i) {\n if (v3 < a1[i]) v3 = a1[i];\n v5[i] = v3;\n }\n return v5;\n}",
+ "ida_pseudo_norm": "uint32_t *func0(int *a1, int a2) {\n int v3;\n int i;\n uint32_t *v5;\n if (a2 <= 0) return 0LL;\n v5 = malloc(4LL * a2);\n if (!v5) return 0LL;\n v3 = *a1;\n for (i = 0; i < a2; ++i) {\n if (v3 < a1[i]) v3 = a1[i];\n v5[i] = v3;\n }\n return v5;\n}"
+ },
+ {
+ "index": "HumanEval-C-9",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "int *func0(int *numbers, int size) {\n if (size <= 0) {\n return NULL;\n }\n int *out = malloc(size * sizeof(int));\n if (!out) {\n return NULL;\n }\n int max = numbers[0];\n for (int i = 0; i < size; i++) {\n if (numbers[i] > max) max = numbers[i];\n out[i] = max;\n }\n return out;\n}",
+ "test": "#include \n#include \n#include \n\nint issame(int *a, int *b, int size) {\n for (int i = 0; i < size; i++) {\n if (a[i] != b[i]) return 0;\n }\n return 1;\n}\n\nint main() {\n int *result;\n\n // First test case\n result = func0((const int[]){}, 0);\n assert(result == NULL);\n free(result);\n\n // Second test case\n int test1[] = {1, 2, 3, 4};\n result = func0(test1, 4);\n assert(issame(result, (const int[]){1, 2, 3, 4}, 4));\n free(result);\n\n // Third test case\n int test2[] = {4, 3, 2, 1};\n result = func0(test2, 4);\n assert(issame(result, (const int[]){4, 4, 4, 4}, 4));\n free(result);\n\n // Fourth test case\n int test3[] = {3, 2, 3, 100, 3};\n result = func0(test3, 5);\n assert(issame(result, (const int[]){3, 3, 3, 100, 100}, 5));\n free(result);\n \n return 0;\n}",
+ "opt": "O1",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\nmov eax, 0\ntest esi, esi\njle short locret_11FB\npush rbp\npush rbx\nsub rsp, 8\nmov rbp, rdi\nmovsxd rsi, esi\nlea rbx, ds:0[rsi*4]\nmov rdi, rbx; size\ncall _malloc\ntest rax, rax\njz short loc_11F4\nmov ecx, [rbp+0]\nmov edx, 0\nloc_11DF:\nmov esi, [rbp+rdx+0]\ncmp ecx, esi\ncmovl ecx, esi\nmov [rax+rdx], ecx\nadd rdx, 4\ncmp rbx, rdx\njnz short loc_11DF\nloc_11F4:\nadd rsp, 8\npop rbx\npop rbp\nretn\nlocret_11FB:\nretn",
+ "ida_pseudo": "char *__fastcall func0(int *a1, int a2)\n{\n char *result; // rax\n int v3; // ecx\n __int64 i; // rdx\n\n result = 0LL;\n if ( a2 > 0 )\n {\n result = (char *)malloc(4LL * a2);\n if ( result )\n {\n v3 = *a1;\n for ( i = 0LL; i != a2; ++i )\n {\n if ( v3 < a1[i] )\n v3 = a1[i];\n *(_DWORD *)&result[i * 4] = v3;\n }\n }\n }\n return result;\n}",
+ "ida_strip_asm": "sub_11A9:\nendbr64\nmov eax, 0\ntest esi, esi\njle short locret_11FB\npush rbp\npush rbx\nsub rsp, 8\nmov rbp, rdi\nmovsxd rsi, esi\nlea rbx, ds:0[rsi*4]\nmov rdi, rbx; size\ncall _malloc\ntest rax, rax\njz short loc_11F4\nmov ecx, [rbp+0]\nmov edx, 0\nloc_11DF:\nmov esi, [rbp+rdx+0]\ncmp ecx, esi\ncmovl ecx, esi\nmov [rax+rdx], ecx\nadd rdx, 4\ncmp rbx, rdx\njnz short loc_11DF\nloc_11F4:\nadd rsp, 8\npop rbx\npop rbp\nretn\nlocret_11FB:\nretn",
+ "ida_strip_pseudo": "char *__fastcall sub_11A9(int *a1, int a2)\n{\n char *result; // rax\n int v3; // ecx\n __int64 i; // rdx\n\n result = 0LL;\n if ( a2 > 0 )\n {\n result = (char *)malloc(4LL * a2);\n if ( result )\n {\n v3 = *a1;\n for ( i = 0LL; i != a2; ++i )\n {\n if ( v3 < a1[i] )\n v3 = a1[i];\n *(_DWORD *)&result[i * 4] = v3;\n }\n }\n }\n return result;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "char *sub_11A9(int *a1, int a2) {\n char *result;\n int v3;\n long long i;\n result = 0LL;\n if (a2 > 0) {\n result = (char *)malloc(4LL * a2);\n if (result) {\n v3 = *a1;\n for (i = 0LL; i != a2; ++i) {\n if (v3 < a1[i]) v3 = a1[i];\n *(uint32_t *)&result[i * 4] = v3;\n }\n }\n }\n return result;\n}",
+ "ida_pseudo_norm": "char *func0(int *a1, int a2) {\n char *result;\n int v3;\n long long i;\n result = 0LL;\n if (a2 > 0) {\n result = (char *)malloc(4LL * a2);\n if (result) {\n v3 = *a1;\n for (i = 0LL; i != a2; ++i) {\n if (v3 < a1[i]) v3 = a1[i];\n *(uint32_t *)&result[i * 4] = v3;\n }\n }\n }\n return result;\n}"
+ },
+ {
+ "index": "HumanEval-C-9",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "int *func0(int *numbers, int size) {\n if (size <= 0) {\n return NULL;\n }\n int *out = malloc(size * sizeof(int));\n if (!out) {\n return NULL;\n }\n int max = numbers[0];\n for (int i = 0; i < size; i++) {\n if (numbers[i] > max) max = numbers[i];\n out[i] = max;\n }\n return out;\n}",
+ "test": "#include \n#include \n#include \n\nint issame(int *a, int *b, int size) {\n for (int i = 0; i < size; i++) {\n if (a[i] != b[i]) return 0;\n }\n return 1;\n}\n\nint main() {\n int *result;\n\n // First test case\n result = func0((const int[]){}, 0);\n assert(result == NULL);\n free(result);\n\n // Second test case\n int test1[] = {1, 2, 3, 4};\n result = func0(test1, 4);\n assert(issame(result, (const int[]){1, 2, 3, 4}, 4));\n free(result);\n\n // Third test case\n int test2[] = {4, 3, 2, 1};\n result = func0(test2, 4);\n assert(issame(result, (const int[]){4, 4, 4, 4}, 4));\n free(result);\n\n // Fourth test case\n int test3[] = {3, 2, 3, 100, 3};\n result = func0(test3, 5);\n assert(issame(result, (const int[]){3, 3, 3, 100, 100}, 5));\n free(result);\n \n return 0;\n}",
+ "opt": "O2",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\ntest esi, esi\njle short loc_13A8\npush rbp\nmovsxd rsi, esi\nmov rbp, rdi\npush rbx\nlea rbx, ds:0[rsi*4]\nmov rdi, rbx; size\nsub rsp, 8\ncall _malloc\ntest rax, rax\njz short loc_139C\nmov ecx, [rbp+0]\nxor edx, edx\nxchg ax, ax\nloc_1380:\nmov esi, [rbp+rdx+0]\ncmp ecx, esi\ncmovl ecx, esi\nmov [rax+rdx], ecx\nadd rdx, 4\ncmp rbx, rdx\njnz short loc_1380\nadd rsp, 8\npop rbx\npop rbp\nretn\nloc_139C:\nadd rsp, 8\nxor eax, eax\npop rbx\npop rbp\nretn\nloc_13A8:\nxor eax, eax\nretn",
+ "ida_pseudo": "char *__fastcall func0(int *a1, int a2)\n{\n char *result; // rax\n int v3; // ecx\n __int64 i; // rdx\n\n if ( a2 <= 0 )\n return 0LL;\n result = (char *)malloc(4LL * a2);\n if ( !result )\n return 0LL;\n v3 = *a1;\n for ( i = 0LL; i != a2; ++i )\n {\n if ( v3 < a1[i] )\n v3 = a1[i];\n *(_DWORD *)&result[i * 4] = v3;\n }\n return result;\n}",
+ "ida_strip_asm": "sub_1350:\nendbr64\ntest esi, esi\njle short loc_13A8\npush rbp\nmovsxd rsi, esi\nmov rbp, rdi\npush rbx\nlea rbx, ds:0[rsi*4]\nmov rdi, rbx; size\nsub rsp, 8\ncall _malloc\ntest rax, rax\njz short loc_139C\nmov ecx, [rbp+0]\nxor edx, edx\nxchg ax, ax\nloc_1380:\nmov esi, [rbp+rdx+0]\ncmp ecx, esi\ncmovl ecx, esi\nmov [rax+rdx], ecx\nadd rdx, 4\ncmp rbx, rdx\njnz short loc_1380\nadd rsp, 8\npop rbx\npop rbp\nretn\nloc_139C:\nadd rsp, 8\nxor eax, eax\npop rbx\npop rbp\nretn\nloc_13A8:\nxor eax, eax\nretn",
+ "ida_strip_pseudo": "char *__fastcall sub_1350(int *a1, int a2)\n{\n char *result; // rax\n int v3; // ecx\n __int64 i; // rdx\n\n if ( a2 <= 0 )\n return 0LL;\n result = (char *)malloc(4LL * a2);\n if ( !result )\n return 0LL;\n v3 = *a1;\n for ( i = 0LL; i != a2; ++i )\n {\n if ( v3 < a1[i] )\n v3 = a1[i];\n *(_DWORD *)&result[i * 4] = v3;\n }\n return result;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "char *sub_1350(int *a1, int a2) {\n char *result;\n int v3;\n long long i;\n if (a2 <= 0) return 0LL;\n result = (char *)malloc(4LL * a2);\n if (!result) return 0LL;\n v3 = *a1;\n for (i = 0LL; i != a2; ++i) {\n if (v3 < a1[i]) v3 = a1[i];\n *(uint32_t *)&result[i * 4] = v3;\n }\n return result;\n}",
+ "ida_pseudo_norm": "char *func0(int *a1, int a2) {\n char *result;\n int v3;\n long long i;\n if (a2 <= 0) return 0LL;\n result = (char *)malloc(4LL * a2);\n if (!result) return 0LL;\n v3 = *a1;\n for (i = 0LL; i != a2; ++i) {\n if (v3 < a1[i]) v3 = a1[i];\n *(uint32_t *)&result[i * 4] = v3;\n }\n return result;\n}"
+ },
+ {
+ "index": "HumanEval-C-9",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "int *func0(int *numbers, int size) {\n if (size <= 0) {\n return NULL;\n }\n int *out = malloc(size * sizeof(int));\n if (!out) {\n return NULL;\n }\n int max = numbers[0];\n for (int i = 0; i < size; i++) {\n if (numbers[i] > max) max = numbers[i];\n out[i] = max;\n }\n return out;\n}",
+ "test": "#include \n#include \n#include \n\nint issame(int *a, int *b, int size) {\n for (int i = 0; i < size; i++) {\n if (a[i] != b[i]) return 0;\n }\n return 1;\n}\n\nint main() {\n int *result;\n\n // First test case\n result = func0((const int[]){}, 0);\n assert(result == NULL);\n free(result);\n\n // Second test case\n int test1[] = {1, 2, 3, 4};\n result = func0(test1, 4);\n assert(issame(result, (const int[]){1, 2, 3, 4}, 4));\n free(result);\n\n // Third test case\n int test2[] = {4, 3, 2, 1};\n result = func0(test2, 4);\n assert(issame(result, (const int[]){4, 4, 4, 4}, 4));\n free(result);\n\n // Fourth test case\n int test3[] = {3, 2, 3, 100, 3};\n result = func0(test3, 5);\n assert(issame(result, (const int[]){3, 3, 3, 100, 100}, 5));\n free(result);\n \n return 0;\n}",
+ "opt": "O3",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\ntest esi, esi\njle short loc_1378\npush rbp\nmovsxd rsi, esi\nmov rbp, rdi\npush rbx\nlea rbx, ds:0[rsi*4]\nmov rdi, rbx; size\nsub rsp, 8\ncall _malloc\ntest rax, rax\njz short loc_136C\nmov ecx, [rbp+0]\nxor edx, edx\nxchg ax, ax\nloc_1350:\nmov esi, [rbp+rdx+0]\ncmp ecx, esi\ncmovl ecx, esi\nmov [rax+rdx], ecx\nadd rdx, 4\ncmp rbx, rdx\njnz short loc_1350\nadd rsp, 8\npop rbx\npop rbp\nretn\nloc_136C:\nadd rsp, 8\nxor eax, eax\npop rbx\npop rbp\nretn\nloc_1378:\nxor eax, eax\nretn",
+ "ida_pseudo": "char *__fastcall func0(int *a1, int a2)\n{\n char *result; // rax\n int v3; // ecx\n __int64 i; // rdx\n\n if ( a2 <= 0 )\n return 0LL;\n result = (char *)malloc(4LL * a2);\n if ( !result )\n return 0LL;\n v3 = *a1;\n for ( i = 0LL; i != a2; ++i )\n {\n if ( v3 < a1[i] )\n v3 = a1[i];\n *(_DWORD *)&result[i * 4] = v3;\n }\n return result;\n}",
+ "ida_strip_asm": "sub_1320:\nendbr64\ntest esi, esi\njle short loc_1378\npush rbp\nmovsxd rsi, esi\nmov rbp, rdi\npush rbx\nlea rbx, ds:0[rsi*4]\nmov rdi, rbx; size\nsub rsp, 8\ncall _malloc\ntest rax, rax\njz short loc_136C\nmov ecx, [rbp+0]\nxor edx, edx\nxchg ax, ax\nloc_1350:\nmov esi, [rbp+rdx+0]\ncmp ecx, esi\ncmovl ecx, esi\nmov [rax+rdx], ecx\nadd rdx, 4\ncmp rbx, rdx\njnz short loc_1350\nadd rsp, 8\npop rbx\npop rbp\nretn\nloc_136C:\nadd rsp, 8\nxor eax, eax\npop rbx\npop rbp\nretn\nloc_1378:\nxor eax, eax\nretn",
+ "ida_strip_pseudo": "char *__fastcall sub_1320(int *a1, int a2)\n{\n char *result; // rax\n int v3; // ecx\n __int64 i; // rdx\n\n if ( a2 <= 0 )\n return 0LL;\n result = (char *)malloc(4LL * a2);\n if ( !result )\n return 0LL;\n v3 = *a1;\n for ( i = 0LL; i != a2; ++i )\n {\n if ( v3 < a1[i] )\n v3 = a1[i];\n *(_DWORD *)&result[i * 4] = v3;\n }\n return result;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "char *sub_1320(int *a1, int a2) {\n char *result;\n int v3;\n long long i;\n if (a2 <= 0) return 0LL;\n result = (char *)malloc(4LL * a2);\n if (!result) return 0LL;\n v3 = *a1;\n for (i = 0LL; i != a2; ++i) {\n if (v3 < a1[i]) v3 = a1[i];\n *(uint32_t *)&result[i * 4] = v3;\n }\n return result;\n}",
+ "ida_pseudo_norm": "char *func0(int *a1, int a2) {\n char *result;\n int v3;\n long long i;\n if (a2 <= 0) return 0LL;\n result = (char *)malloc(4LL * a2);\n if (!result) return 0LL;\n v3 = *a1;\n for (i = 0LL; i != a2; ++i) {\n if (v3 < a1[i]) v3 = a1[i];\n *(uint32_t *)&result[i * 4] = v3;\n }\n return result;\n}"
+ },
+ {
+ "index": "HumanEval-C-10",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char *func0(const char *str) {\n int len = strlen(str), i, j;\n char *result = (char *)malloc(2 * len + 1);\n if (!result) {\n return NULL;\n }\n for (i = 0; i < len; i++) {\n int is_palindrome = 1;\n for (j = 0; j < (len - i) / 2; j++) {\n if (str[i + j] != str[len - 1 - j]) {\n is_palindrome = 0;\n break;\n }\n }\n if (is_palindrome) {\n strncpy(result, str, len);\n for (j = 0; j < i; j++) {\n result[len + j] = str[i - j - 1];\n }\n result[len + i] = '\\0';\n return result;\n }\n }\n strncpy(result, str, len);\n for (j = 0; j < len; j++) {\n result[len + j] = str[len - j - 1];\n }\n result[2 * len] = '\\0';\n return result;\n}",
+ "test": "#include \n#include \n\nint main() {\n char *palindrome;\n\n // First test case\n palindrome = func0(\"\");\n assert(strcmp(palindrome, \"\") == 0);\n free(palindrome);\n\n // Second test case\n palindrome = func0(\"x\");\n assert(strcmp(palindrome, \"x\") == 0);\n free(palindrome);\n\n // Third test case\n palindrome = func0(\"xyz\");\n assert(strcmp(palindrome, \"xyzyx\") == 0);\n free(palindrome);\n\n // Fourth test case\n palindrome = func0(\"xyx\");\n assert(strcmp(palindrome, \"xyx\") == 0);\n free(palindrome);\n\n // Fifth test case\n palindrome = func0(\"jerry\");\n assert(strcmp(palindrome, \"jerryrrej\") == 0);\n free(palindrome);\n\n return 0;\n}",
+ "opt": "O0",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\nmov rbp, rsp\nsub rsp, 30h\nmov [rbp+s], rdi\nmov rax, [rbp+s]\nmov rdi, rax; s\ncall _strlen\nmov [rbp+var_C], eax\nmov eax, [rbp+var_C]\nadd eax, eax\nadd eax, 1\ncdqe\nmov rdi, rax; size\ncall _malloc\nmov [rbp+dest], rax\ncmp [rbp+dest], 0\njnz short loc_122F\nmov eax, 0\njmp locret_1392\nloc_122F:\nmov [rbp+var_18], 0\njmp loc_1318\nloc_123B:\nmov [rbp+var_10], 1\nmov [rbp+var_14], 0\njmp short loc_1287\nloc_124B:\nmov edx, [rbp+var_18]\nmov eax, [rbp+var_14]\nadd eax, edx\nmovsxd rdx, eax\nmov rax, [rbp+s]\nadd rax, rdx\nmovzx edx, byte ptr [rax]\nmov eax, [rbp+var_C]\nsub eax, 1\nsub eax, [rbp+var_14]\nmovsxd rcx, eax\nmov rax, [rbp+s]\nadd rax, rcx\nmovzx eax, byte ptr [rax]\ncmp dl, al\njz short loc_1283\nmov [rbp+var_10], 0\njmp short loc_129B\nloc_1283:\nadd [rbp+var_14], 1\nloc_1287:\nmov eax, [rbp+var_C]\nsub eax, [rbp+var_18]\nmov edx, eax\nshr edx, 1Fh\nadd eax, edx\nsar eax, 1\ncmp [rbp+var_14], eax\njl short loc_124B\nloc_129B:\ncmp [rbp+var_10], 0\njz short loc_1314\nmov eax, [rbp+var_C]\nmovsxd rdx, eax; n\nmov rcx, [rbp+s]\nmov rax, [rbp+dest]\nmov rsi, rcx; src\nmov rdi, rax; dest\ncall _strncpy\nmov [rbp+var_14], 0\njmp short loc_12F1\nloc_12C3:\nmov eax, [rbp+var_18]\nsub eax, [rbp+var_14]\ncdqe\nlea rdx, [rax-1]\nmov rax, [rbp+s]\nadd rax, rdx\nmov ecx, [rbp+var_C]\nmov edx, [rbp+var_14]\nadd edx, ecx\nmovsxd rcx, edx\nmov rdx, [rbp+dest]\nadd rdx, rcx\nmovzx eax, byte ptr [rax]\nmov [rdx], al\nadd [rbp+var_14], 1\nloc_12F1:\nmov eax, [rbp+var_14]\ncmp eax, [rbp+var_18]\njl short loc_12C3\nmov edx, [rbp+var_C]\nmov eax, [rbp+var_18]\nadd eax, edx\nmovsxd rdx, eax\nmov rax, [rbp+dest]\nadd rax, rdx\nmov byte ptr [rax], 0\nmov rax, [rbp+dest]\njmp short locret_1392\nloc_1314:\nadd [rbp+var_18], 1\nloc_1318:\nmov eax, [rbp+var_18]\ncmp eax, [rbp+var_C]\njl loc_123B\nmov eax, [rbp+var_C]\nmovsxd rdx, eax; n\nmov rcx, [rbp+s]\nmov rax, [rbp+dest]\nmov rsi, rcx; src\nmov rdi, rax; dest\ncall _strncpy\nmov [rbp+var_14], 0\njmp short loc_1374\nloc_1346:\nmov eax, [rbp+var_C]\nsub eax, [rbp+var_14]\ncdqe\nlea rdx, [rax-1]\nmov rax, [rbp+s]\nadd rax, rdx\nmov ecx, [rbp+var_C]\nmov edx, [rbp+var_14]\nadd edx, ecx\nmovsxd rcx, edx\nmov rdx, [rbp+dest]\nadd rdx, rcx\nmovzx eax, byte ptr [rax]\nmov [rdx], al\nadd [rbp+var_14], 1\nloc_1374:\nmov eax, [rbp+var_14]\ncmp eax, [rbp+var_C]\njl short loc_1346\nmov eax, [rbp+var_C]\nadd eax, eax\nmovsxd rdx, eax\nmov rax, [rbp+dest]\nadd rax, rdx\nmov byte ptr [rax], 0\nmov rax, [rbp+dest]\nlocret_1392:\nleave\nretn",
+ "ida_pseudo": "char *__fastcall func0(const char *a1)\n{\n int i; // [rsp+18h] [rbp-18h]\n int k; // [rsp+1Ch] [rbp-14h]\n int m; // [rsp+1Ch] [rbp-14h]\n int j; // [rsp+1Ch] [rbp-14h]\n int v6; // [rsp+20h] [rbp-10h]\n int v7; // [rsp+24h] [rbp-Ch]\n char *dest; // [rsp+28h] [rbp-8h]\n\n v7 = strlen(a1);\n dest = (char *)malloc(2 * v7 + 1);\n if ( !dest )\n return 0LL;\n for ( i = 0; ; ++i )\n {\n if ( i >= v7 )\n {\n strncpy(dest, a1, v7);\n for ( j = 0; j < v7; ++j )\n dest[v7 + j] = a1[v7 - j - 1];\n dest[2 * v7] = 0;\n return dest;\n }\n v6 = 1;\n for ( k = 0; k < (v7 - i) / 2; ++k )\n {\n if ( a1[i + k] != a1[v7 - 1 - k] )\n {\n v6 = 0;\n break;\n }\n }\n if ( v6 )\n break;\n }\n strncpy(dest, a1, v7);\n for ( m = 0; m < i; ++m )\n dest[v7 + m] = a1[i - m - 1];\n dest[v7 + i] = 0;\n return dest;\n}",
+ "ida_strip_asm": "sub_11E9:\nendbr64\npush rbp\nmov rbp, rsp\nsub rsp, 30h\nmov [rbp+s], rdi\nmov rax, [rbp+s]\nmov rdi, rax; s\ncall _strlen\nmov [rbp+var_C], eax\nmov eax, [rbp+var_C]\nadd eax, eax\nadd eax, 1\ncdqe\nmov rdi, rax; size\ncall _malloc\nmov [rbp+dest], rax\ncmp [rbp+dest], 0\njnz short loc_122F\nmov eax, 0\njmp locret_1392\nloc_122F:\nmov [rbp+var_18], 0\njmp loc_1318\nloc_123B:\nmov [rbp+var_10], 1\nmov [rbp+var_14], 0\njmp short loc_1287\nloc_124B:\nmov edx, [rbp+var_18]\nmov eax, [rbp+var_14]\nadd eax, edx\nmovsxd rdx, eax\nmov rax, [rbp+s]\nadd rax, rdx\nmovzx edx, byte ptr [rax]\nmov eax, [rbp+var_C]\nsub eax, 1\nsub eax, [rbp+var_14]\nmovsxd rcx, eax\nmov rax, [rbp+s]\nadd rax, rcx\nmovzx eax, byte ptr [rax]\ncmp dl, al\njz short loc_1283\nmov [rbp+var_10], 0\njmp short loc_129B\nloc_1283:\nadd [rbp+var_14], 1\nloc_1287:\nmov eax, [rbp+var_C]\nsub eax, [rbp+var_18]\nmov edx, eax\nshr edx, 1Fh\nadd eax, edx\nsar eax, 1\ncmp [rbp+var_14], eax\njl short loc_124B\nloc_129B:\ncmp [rbp+var_10], 0\njz short loc_1314\nmov eax, [rbp+var_C]\nmovsxd rdx, eax; n\nmov rcx, [rbp+s]\nmov rax, [rbp+dest]\nmov rsi, rcx; src\nmov rdi, rax; dest\ncall _strncpy\nmov [rbp+var_14], 0\njmp short loc_12F1\nloc_12C3:\nmov eax, [rbp+var_18]\nsub eax, [rbp+var_14]\ncdqe\nlea rdx, [rax-1]\nmov rax, [rbp+s]\nadd rax, rdx\nmov ecx, [rbp+var_C]\nmov edx, [rbp+var_14]\nadd edx, ecx\nmovsxd rcx, edx\nmov rdx, [rbp+dest]\nadd rdx, rcx\nmovzx eax, byte ptr [rax]\nmov [rdx], al\nadd [rbp+var_14], 1\nloc_12F1:\nmov eax, [rbp+var_14]\ncmp eax, [rbp+var_18]\njl short loc_12C3\nmov edx, [rbp+var_C]\nmov eax, [rbp+var_18]\nadd eax, edx\nmovsxd rdx, eax\nmov rax, [rbp+dest]\nadd rax, rdx\nmov byte ptr [rax], 0\nmov rax, [rbp+dest]\njmp short locret_1392\nloc_1314:\nadd [rbp+var_18], 1\nloc_1318:\nmov eax, [rbp+var_18]\ncmp eax, [rbp+var_C]\njl loc_123B\nmov eax, [rbp+var_C]\nmovsxd rdx, eax; n\nmov rcx, [rbp+s]\nmov rax, [rbp+dest]\nmov rsi, rcx; src\nmov rdi, rax; dest\ncall _strncpy\nmov [rbp+var_14], 0\njmp short loc_1374\nloc_1346:\nmov eax, [rbp+var_C]\nsub eax, [rbp+var_14]\ncdqe\nlea rdx, [rax-1]\nmov rax, [rbp+s]\nadd rax, rdx\nmov ecx, [rbp+var_C]\nmov edx, [rbp+var_14]\nadd edx, ecx\nmovsxd rcx, edx\nmov rdx, [rbp+dest]\nadd rdx, rcx\nmovzx eax, byte ptr [rax]\nmov [rdx], al\nadd [rbp+var_14], 1\nloc_1374:\nmov eax, [rbp+var_14]\ncmp eax, [rbp+var_C]\njl short loc_1346\nmov eax, [rbp+var_C]\nadd eax, eax\nmovsxd rdx, eax\nmov rax, [rbp+dest]\nadd rax, rdx\nmov byte ptr [rax], 0\nmov rax, [rbp+dest]\nlocret_1392:\nleave\nretn",
+ "ida_strip_pseudo": "char *__fastcall sub_11E9(const char *a1)\n{\n int i; // [rsp+18h] [rbp-18h]\n int k; // [rsp+1Ch] [rbp-14h]\n int m; // [rsp+1Ch] [rbp-14h]\n int j; // [rsp+1Ch] [rbp-14h]\n int v6; // [rsp+20h] [rbp-10h]\n int v7; // [rsp+24h] [rbp-Ch]\n char *dest; // [rsp+28h] [rbp-8h]\n\n v7 = strlen(a1);\n dest = (char *)malloc(2 * v7 + 1);\n if ( !dest )\n return 0LL;\n for ( i = 0; ; ++i )\n {\n if ( i >= v7 )\n {\n strncpy(dest, a1, v7);\n for ( j = 0; j < v7; ++j )\n dest[v7 + j] = a1[v7 - j - 1];\n dest[2 * v7] = 0;\n return dest;\n }\n v6 = 1;\n for ( k = 0; k < (v7 - i) / 2; ++k )\n {\n if ( a1[i + k] != a1[v7 - 1 - k] )\n {\n v6 = 0;\n break;\n }\n }\n if ( v6 )\n break;\n }\n strncpy(dest, a1, v7);\n for ( m = 0; m < i; ++m )\n dest[v7 + m] = a1[i - m - 1];\n dest[v7 + i] = 0;\n return dest;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "char *sub_11E9(const char *a1) {\n int i;\n int k;\n int m;\n int j;\n int v6;\n int v7;\n char *dest;\n v7 = strlen(a1);\n dest = (char *)malloc(2 * v7 + 1);\n if (!dest) return 0LL;\n for (i = 0;; ++i) {\n if (i >= v7) {\n strncpy(dest, a1, v7);\n for (j = 0; j < v7; ++j) dest[v7 + j] = a1[v7 - j - 1];\n dest[2 * v7] = 0;\n return dest;\n }\n v6 = 1;\n for (k = 0; k < (v7 - i) / 2; ++k) {\n if (a1[i + k] != a1[v7 - 1 - k]) {\n v6 = 0;\n break;\n }\n }\n if (v6) break;\n }\n strncpy(dest, a1, v7);\n for (m = 0; m < i; ++m) dest[v7 + m] = a1[i - m - 1];\n dest[v7 + i] = 0;\n return dest;\n}",
+ "ida_pseudo_norm": "char *func0(const char *a1) {\n int i;\n int k;\n int m;\n int j;\n int v6;\n int v7;\n char *dest;\n v7 = strlen(a1);\n dest = (char *)malloc(2 * v7 + 1);\n if (!dest) return 0LL;\n for (i = 0;; ++i) {\n if (i >= v7) {\n strncpy(dest, a1, v7);\n for (j = 0; j < v7; ++j) dest[v7 + j] = a1[v7 - j - 1];\n dest[2 * v7] = 0;\n return dest;\n }\n v6 = 1;\n for (k = 0; k < (v7 - i) / 2; ++k) {\n if (a1[i + k] != a1[v7 - 1 - k]) {\n v6 = 0;\n break;\n }\n }\n if (v6) break;\n }\n strncpy(dest, a1, v7);\n for (m = 0; m < i; ++m) dest[v7 + m] = a1[i - m - 1];\n dest[v7 + i] = 0;\n return dest;\n}"
+ },
+ {
+ "index": "HumanEval-C-10",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char *func0(const char *str) {\n int len = strlen(str), i, j;\n char *result = (char *)malloc(2 * len + 1);\n if (!result) {\n return NULL;\n }\n for (i = 0; i < len; i++) {\n int is_palindrome = 1;\n for (j = 0; j < (len - i) / 2; j++) {\n if (str[i + j] != str[len - 1 - j]) {\n is_palindrome = 0;\n break;\n }\n }\n if (is_palindrome) {\n strncpy(result, str, len);\n for (j = 0; j < i; j++) {\n result[len + j] = str[i - j - 1];\n }\n result[len + i] = '\\0';\n return result;\n }\n }\n strncpy(result, str, len);\n for (j = 0; j < len; j++) {\n result[len + j] = str[len - j - 1];\n }\n result[2 * len] = '\\0';\n return result;\n}",
+ "test": "#include \n#include \n\nint main() {\n char *palindrome;\n\n // First test case\n palindrome = func0(\"\");\n assert(strcmp(palindrome, \"\") == 0);\n free(palindrome);\n\n // Second test case\n palindrome = func0(\"x\");\n assert(strcmp(palindrome, \"x\") == 0);\n free(palindrome);\n\n // Third test case\n palindrome = func0(\"xyz\");\n assert(strcmp(palindrome, \"xyzyx\") == 0);\n free(palindrome);\n\n // Fourth test case\n palindrome = func0(\"xyx\");\n assert(strcmp(palindrome, \"xyx\") == 0);\n free(palindrome);\n\n // Fifth test case\n palindrome = func0(\"jerry\");\n assert(strcmp(palindrome, \"jerryrrej\") == 0);\n free(palindrome);\n\n return 0;\n}",
+ "opt": "O1",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r15\npush r14\npush r13\npush r12\npush rbp\npush rbx\nsub rsp, 18h\nmov rbp, rdi\ncall _strlen\nmov r13, rax\nmov r14d, eax\nlea eax, [rax+rax]\nmov [rsp+48h+var_3C], eax\nadd eax, 1\ncdqe\nmov [rsp+48h+var_48], rax\nmov rdi, rax; size\ncall _malloc\nmov r15, rax\ntest rax, rax\njz loc_1323\ntest r13d, r13d\njle loc_1335\nmov r8d, r13d\nlea r12d, [r13-1]\nmov rsi, rbp\nmov ebx, 0\nmovsxd rdi, r13d\nsub rdi, 1\njmp short loc_125E\nloc_124E:\nadd ebx, 1\nadd rsi, 1\ncmp r14d, ebx\njz loc_12DE\nloc_125E:\nmov eax, r8d\nsub eax, ebx\nmov ecx, eax\nshr ecx, 1Fh\nadd ecx, eax\nsar ecx, 1\ncmp ebx, r12d\njz short loc_12D9\nlea rdx, [rbp+rdi+0]\nmov eax, 0\nloc_127B:\nmovzx r9d, byte ptr [rdx]\ncmp [rsi+rax], r9b\njnz short loc_124E\nadd rax, 1\nsub rdx, 1\ncmp ecx, eax\njg short loc_127B\nloc_1291:\nmovsxd r12, r13d\nmov rcx, [rsp+48h+var_48]\nmov rdx, r12\nmov rsi, rbp\nmov rdi, r15\ncall ___strncpy_chk\ntest ebx, ebx\njle short loc_12CC\nmovsxd rax, ebx\nlea rax, [rbp+rax-1]\nadd r12, r15\nloc_12B5:\nmovzx edx, byte ptr [rax]\nmov [r12], dl\nmov rdx, rax\nsub rax, 1\nadd r12, 1\ncmp rdx, rbp\njnz short loc_12B5\nloc_12CC:\nlea eax, [rbx+r13]\ncdqe\nmov byte ptr [r15+rax], 0\njmp short loc_1323\nloc_12D9:\nmov ebx, r12d\njmp short loc_1291\nloc_12DE:\nmovsxd rbx, ebx\nmov rcx, [rsp+48h+var_48]\nmov rdx, rbx\nmov rsi, rbp\nmov rdi, r15\ncall ___strncpy_chk\nlea rax, [rbp+rbx-1]\nlea rdx, [r15+rbx]\nlea rsi, [rbp+rbx-2]\nmov r12d, r12d\nsub rsi, r12\nloc_1307:\nmovzx ecx, byte ptr [rax]\nmov [rdx], cl\nsub rax, 1\nadd rdx, 1\ncmp rax, rsi\njnz short loc_1307\nloc_1319:\nmovsxd rax, [rsp+48h+var_3C]\nmov byte ptr [r15+rax], 0\nloc_1323:\nmov rax, r15\nadd rsp, 18h\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_1335:\nmovsxd rdx, r13d\nmov rcx, [rsp+48h+var_48]\nmov rsi, rbp\nmov rdi, rax\ncall ___strncpy_chk\njmp short loc_1319",
+ "ida_pseudo": "_BYTE *__fastcall func0(const char *a1)\n{\n int v1; // r13d\n _BYTE *v2; // rax\n _BYTE *v3; // r15\n int v4; // r12d\n const char *v5; // rsi\n int v6; // ebx\n const char *v7; // rdx\n __int64 v8; // rax\n const char *v9; // rax\n char *v10; // r12\n const char *v11; // rdx\n const char *v12; // rax\n _BYTE *v13; // rdx\n size_t v15; // [rsp+0h] [rbp-48h]\n\n v1 = strlen(a1);\n v15 = 2 * v1 + 1;\n v2 = malloc(v15);\n v3 = v2;\n if ( v2 )\n {\n if ( v1 <= 0 )\n {\n __strncpy_chk(v2, a1, v1, v15);\nLABEL_16:\n v3[2 * v1] = 0;\n }\n else\n {\n v4 = v1 - 1;\n v5 = a1;\n v6 = 0;\n while ( v6 != v4 )\n {\n v7 = &a1[v1 - 1];\n v8 = 0LL;\n while ( v5[v8] == *v7 )\n {\n ++v8;\n --v7;\n if ( (v1 - v6) / 2 <= (int)v8 )\n goto LABEL_9;\n }\n ++v6;\n ++v5;\n if ( v1 == v6 )\n {\n __strncpy_chk(v3, a1, v6, v15);\n v12 = &a1[v6 - 1];\n v13 = &v3[v6];\n do\n *v13++ = *v12--;\n while ( v12 != &a1[v6 - 2 - v4] );\n goto LABEL_16;\n }\n }\n v6 = v1 - 1;\nLABEL_9:\n __strncpy_chk(v3, a1, v1, v15);\n if ( v6 > 0 )\n {\n v9 = &a1[v6 - 1];\n v10 = &v3[v1];\n do\n {\n *v10 = *v9;\n v11 = v9--;\n ++v10;\n }\n while ( v11 != a1 );\n }\n v3[v6 + v1] = 0;\n }\n }\n return v3;\n}",
+ "ida_strip_asm": "sub_11E9:\nendbr64\npush r15\npush r14\npush r13\npush r12\npush rbp\npush rbx\nsub rsp, 18h\nmov rbp, rdi\ncall _strlen\nmov r13, rax\nmov r14d, eax\nlea eax, [rax+rax]\nmov [rsp+48h+var_3C], eax\nadd eax, 1\ncdqe\nmov [rsp+48h+var_48], rax\nmov rdi, rax; size\ncall _malloc\nmov r15, rax\ntest rax, rax\njz loc_1323\ntest r13d, r13d\njle loc_1335\nmov r8d, r13d\nlea r12d, [r13-1]\nmov rsi, rbp\nmov ebx, 0\nmovsxd rdi, r13d\nsub rdi, 1\njmp short loc_125E\nloc_124E:\nadd ebx, 1\nadd rsi, 1\ncmp r14d, ebx\njz loc_12DE\nloc_125E:\nmov eax, r8d\nsub eax, ebx\nmov ecx, eax\nshr ecx, 1Fh\nadd ecx, eax\nsar ecx, 1\ncmp ebx, r12d\njz short loc_12D9\nlea rdx, [rbp+rdi+0]\nmov eax, 0\nloc_127B:\nmovzx r9d, byte ptr [rdx]\ncmp [rsi+rax], r9b\njnz short loc_124E\nadd rax, 1\nsub rdx, 1\ncmp ecx, eax\njg short loc_127B\nloc_1291:\nmovsxd r12, r13d\nmov rcx, [rsp+48h+var_48]\nmov rdx, r12\nmov rsi, rbp\nmov rdi, r15\ncall ___strncpy_chk\ntest ebx, ebx\njle short loc_12CC\nmovsxd rax, ebx\nlea rax, [rbp+rax-1]\nadd r12, r15\nloc_12B5:\nmovzx edx, byte ptr [rax]\nmov [r12], dl\nmov rdx, rax\nsub rax, 1\nadd r12, 1\ncmp rdx, rbp\njnz short loc_12B5\nloc_12CC:\nlea eax, [rbx+r13]\ncdqe\nmov byte ptr [r15+rax], 0\njmp short loc_1323\nloc_12D9:\nmov ebx, r12d\njmp short loc_1291\nloc_12DE:\nmovsxd rbx, ebx\nmov rcx, [rsp+48h+var_48]\nmov rdx, rbx\nmov rsi, rbp\nmov rdi, r15\ncall ___strncpy_chk\nlea rax, [rbp+rbx-1]\nlea rdx, [r15+rbx]\nlea rsi, [rbp+rbx-2]\nmov r12d, r12d\nsub rsi, r12\nloc_1307:\nmovzx ecx, byte ptr [rax]\nmov [rdx], cl\nsub rax, 1\nadd rdx, 1\ncmp rax, rsi\njnz short loc_1307\nloc_1319:\nmovsxd rax, [rsp+48h+var_3C]\nmov byte ptr [r15+rax], 0\nloc_1323:\nmov rax, r15\nadd rsp, 18h\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_1335:\nmovsxd rdx, r13d\nmov rcx, [rsp+48h+var_48]\nmov rsi, rbp\nmov rdi, rax\ncall ___strncpy_chk\njmp short loc_1319",
+ "ida_strip_pseudo": "_BYTE *__fastcall sub_11E9(const char *a1)\n{\n int v1; // r13d\n _BYTE *v2; // rax\n _BYTE *v3; // r15\n int v4; // r12d\n const char *v5; // rsi\n int v6; // ebx\n const char *v7; // rdx\n __int64 v8; // rax\n const char *v9; // rax\n char *v10; // r12\n const char *v11; // rdx\n const char *v12; // rax\n _BYTE *v13; // rdx\n size_t v15; // [rsp+0h] [rbp-48h]\n\n v1 = strlen(a1);\n v15 = 2 * v1 + 1;\n v2 = malloc(v15);\n v3 = v2;\n if ( v2 )\n {\n if ( v1 <= 0 )\n {\n __strncpy_chk(v2, a1, v1, v15);\nLABEL_16:\n v3[2 * v1] = 0;\n }\n else\n {\n v4 = v1 - 1;\n v5 = a1;\n v6 = 0;\n while ( v6 != v4 )\n {\n v7 = &a1[v1 - 1];\n v8 = 0LL;\n while ( v5[v8] == *v7 )\n {\n ++v8;\n --v7;\n if ( (v1 - v6) / 2 <= (int)v8 )\n goto LABEL_9;\n }\n ++v6;\n ++v5;\n if ( v1 == v6 )\n {\n __strncpy_chk(v3, a1, v6, v15);\n v12 = &a1[v6 - 1];\n v13 = &v3[v6];\n do\n *v13++ = *v12--;\n while ( v12 != &a1[v6 - 2 - v4] );\n goto LABEL_16;\n }\n }\n v6 = v1 - 1;\nLABEL_9:\n __strncpy_chk(v3, a1, v1, v15);\n if ( v6 > 0 )\n {\n v9 = &a1[v6 - 1];\n v10 = &v3[v1];\n do\n {\n *v10 = *v9;\n v11 = v9--;\n ++v10;\n }\n while ( v11 != a1 );\n }\n v3[v6 + v1] = 0;\n }\n }\n return v3;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "uint8_t *sub_11E9(const char *a1) {\n int v1;\n uint8_t *v2;\n uint8_t *v3;\n int v4;\n const char *v5;\n int v6;\n const char *v7;\n long long v8;\n const char *v9;\n char *v10;\n const char *v11;\n const char *v12;\n uint8_t *v13;\n unsigned int v15;\n v1 = strlen(a1);\n v15 = 2 * v1 + 1;\n v2 = malloc(v15);\n v3 = v2;\n if (v2) {\n if (v1 <= 0) {\n __strncpy_chk(v2, a1, v1, v15);\n LABEL_16:\n v3[2 * v1] = 0;\n } else {\n v4 = v1 - 1;\n v5 = a1;\n v6 = 0;\n while (v6 != v4) {\n v7 = &a1[v1 - 1];\n v8 = 0LL;\n while (v5[v8] == *v7) {\n ++v8;\n --v7;\n if ((v1 - v6) / 2 <= (int)v8) goto LABEL_9;\n }\n ++v6;\n ++v5;\n if (v1 == v6) {\n __strncpy_chk(v3, a1, v6, v15);\n v12 = &a1[v6 - 1];\n v13 = &v3[v6];\n do\n *v13++ = *v12--;\n while (v12 != &a1[v6 - 2 - v4]);\n goto LABEL_16;\n }\n }\n v6 = v1 - 1;\n LABEL_9:\n __strncpy_chk(v3, a1, v1, v15);\n if (v6 > 0) {\n v9 = &a1[v6 - 1];\n v10 = &v3[v1];\n do {\n *v10 = *v9;\n v11 = v9--;\n ++v10;\n } while (v11 != a1);\n }\n v3[v6 + v1] = 0;\n }\n }\n return v3;\n}",
+ "ida_pseudo_norm": "uint8_t *func0(const char *a1) {\n int v1;\n uint8_t *v2;\n uint8_t *v3;\n int v4;\n const char *v5;\n int v6;\n const char *v7;\n long long v8;\n const char *v9;\n char *v10;\n const char *v11;\n const char *v12;\n uint8_t *v13;\n unsigned int v15;\n v1 = strlen(a1);\n v15 = 2 * v1 + 1;\n v2 = malloc(v15);\n v3 = v2;\n if (v2) {\n if (v1 <= 0) {\n __strncpy_chk(v2, a1, v1, v15);\n LABEL_16:\n v3[2 * v1] = 0;\n } else {\n v4 = v1 - 1;\n v5 = a1;\n v6 = 0;\n while (v6 != v4) {\n v7 = &a1[v1 - 1];\n v8 = 0LL;\n while (v5[v8] == *v7) {\n ++v8;\n --v7;\n if ((v1 - v6) / 2 <= (int)v8) goto LABEL_9;\n }\n ++v6;\n ++v5;\n if (v1 == v6) {\n __strncpy_chk(v3, a1, v6, v15);\n v12 = &a1[v6 - 1];\n v13 = &v3[v6];\n do\n *v13++ = *v12--;\n while (v12 != &a1[v6 - 2 - v4]);\n goto LABEL_16;\n }\n }\n v6 = v1 - 1;\n LABEL_9:\n __strncpy_chk(v3, a1, v1, v15);\n if (v6 > 0) {\n v9 = &a1[v6 - 1];\n v10 = &v3[v1];\n do {\n *v10 = *v9;\n v11 = v9--;\n ++v10;\n } while (v11 != a1);\n }\n v3[v6 + v1] = 0;\n }\n }\n return v3;\n}"
+ },
+ {
+ "index": "HumanEval-C-10",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char *func0(const char *str) {\n int len = strlen(str), i, j;\n char *result = (char *)malloc(2 * len + 1);\n if (!result) {\n return NULL;\n }\n for (i = 0; i < len; i++) {\n int is_palindrome = 1;\n for (j = 0; j < (len - i) / 2; j++) {\n if (str[i + j] != str[len - 1 - j]) {\n is_palindrome = 0;\n break;\n }\n }\n if (is_palindrome) {\n strncpy(result, str, len);\n for (j = 0; j < i; j++) {\n result[len + j] = str[i - j - 1];\n }\n result[len + i] = '\\0';\n return result;\n }\n }\n strncpy(result, str, len);\n for (j = 0; j < len; j++) {\n result[len + j] = str[len - j - 1];\n }\n result[2 * len] = '\\0';\n return result;\n}",
+ "test": "#include \n#include \n\nint main() {\n char *palindrome;\n\n // First test case\n palindrome = func0(\"\");\n assert(strcmp(palindrome, \"\") == 0);\n free(palindrome);\n\n // Second test case\n palindrome = func0(\"x\");\n assert(strcmp(palindrome, \"x\") == 0);\n free(palindrome);\n\n // Third test case\n palindrome = func0(\"xyz\");\n assert(strcmp(palindrome, \"xyzyx\") == 0);\n free(palindrome);\n\n // Fourth test case\n palindrome = func0(\"xyx\");\n assert(strcmp(palindrome, \"xyx\") == 0);\n free(palindrome);\n\n // Fifth test case\n palindrome = func0(\"jerry\");\n assert(strcmp(palindrome, \"jerryrrej\") == 0);\n free(palindrome);\n\n return 0;\n}",
+ "opt": "O2",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r15\npush r14\npush r13\npush r12\nmov r12, rdi\npush rbp\npush rbx\nsub rsp, 18h\ncall _strlen\nlea ebx, [rax+rax]\nmov r13, rax\nmov r15d, eax\nlea r8d, [rbx+1]\nmovsxd r8, r8d\nmov rdi, r8; size\nmov [rsp+48h+var_40], r8\ncall _malloc\nmov rdi, rax\ntest rax, rax\njz loc_145A\ntest r13d, r13d\nmov r8, [rsp+48h+var_40]\nmovsxd r14, r13d\njle loc_14B4\nlea r9d, [r13-1]\nmov rsi, r12\nxor ebp, ebp\nmovsxd r9, r9d\nloc_13D0:\nmov ecx, r13d\nsub ecx, ebp\nsar ecx, 1\njz loc_1470\nmovsxd rcx, ecx\nlea rdx, [r12+r9]\nmov rax, rsi\nadd rcx, rsi\njmp short loc_13FD\nloc_13F0:\nadd rax, 1\nsub rdx, 1\ncmp rax, rcx\njz short loc_1470\nloc_13FD:\nmovzx r10d, byte ptr [rdx]\ncmp [rax], r10b\njz short loc_13F0\nadd ebp, 1\nadd rsi, 1\ncmp r15d, ebp\njnz short loc_13D0\nmov rcx, r8\nmov rdx, r14\nmov rsi, r12\ncall ___strncpy_chk\nlea rsi, [r12+r14-2]\nlea ecx, [r13-1]\nmov rdi, rax\nsub rsi, rcx\nlea rax, [r12+r14-1]\nlea rdx, [rdi+r14]\nnop dword ptr [rax+rax+00000000h]\nloc_1440:\nmovzx ecx, byte ptr [rax]\nsub rax, 1\nadd rdx, 1\nmov [rdx-1], cl\ncmp rsi, rax\njnz short loc_1440\nloc_1453:\nmovsxd rbx, ebx\nmov byte ptr [rdi+rbx], 0\nloc_145A:\nadd rsp, 18h\nmov rax, rdi\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_1470:\nmov rcx, r8\nmov rdx, r14\nmov rsi, r12\ncall ___strncpy_chk\nmov rdi, rax\ntest ebp, ebp\njz short loc_14A7\nmovsxd rax, ebp\nadd r14, rdi\nlea rax, [r12+rax-1]\nloc_1490:\nmovzx edx, byte ptr [rax]\nadd r14, 1\nmov [r14-1], dl\nmov rdx, rax\nsub rax, 1\ncmp rdx, r12\njnz short loc_1490\nloc_14A7:\nlea eax, [rbp+r13+0]\ncdqe\nmov byte ptr [rdi+rax], 0\njmp short loc_145A\nloc_14B4:\nmov rcx, r8\nmov rdx, r14\nmov rsi, r12\ncall ___strncpy_chk\nmov rdi, rax\njmp short loc_1453",
+ "ida_pseudo": "_BYTE *__fastcall func0(const char *a1)\n{\n int v2; // eax\n int v3; // ebx\n int v4; // r13d\n int v5; // r15d\n _BYTE *v6; // rdi\n const char *v7; // rsi\n int v8; // ebp\n const char *v9; // rdx\n const char *v10; // rax\n const char *v11; // rax\n _BYTE *v12; // rdx\n char v13; // cl\n __int64 v15; // rax\n char *v16; // r14\n const char *v17; // rax\n const char *v18; // rdx\n size_t v19; // [rsp+8h] [rbp-40h]\n\n v2 = strlen(a1);\n v3 = 2 * v2;\n v4 = v2;\n v5 = v2;\n v19 = 2 * v2 + 1;\n v6 = malloc(v19);\n if ( v6 )\n {\n if ( v4 <= 0 )\n {\n v6 = (_BYTE *)__strncpy_chk(v6, a1, v4, v19);\nLABEL_11:\n v6[v3] = 0;\n }\n else\n {\n v7 = a1;\n v8 = 0;\n while ( (v4 - v8) >> 1 )\n {\n v9 = &a1[v4 - 1];\n v10 = v7;\n while ( *v10 == *v9 )\n {\n ++v10;\n --v9;\n if ( v10 == &v7[(v4 - v8) >> 1] )\n goto LABEL_13;\n }\n ++v8;\n ++v7;\n if ( v5 == v8 )\n {\n v6 = (_BYTE *)__strncpy_chk(v6, a1, v4, v19);\n v11 = &a1[v4 - 1];\n v12 = &v6[v4];\n do\n {\n v13 = *v11--;\n *v12++ = v13;\n }\n while ( &a1[v4 - 2 - (v4 - 1)] != v11 );\n goto LABEL_11;\n }\n }\nLABEL_13:\n v15 = __strncpy_chk(v6, a1, v4, v19);\n v6 = (_BYTE *)v15;\n if ( v8 )\n {\n v16 = (char *)(v15 + v4);\n v17 = &a1[v8 - 1];\n do\n {\n *v16++ = *v17;\n v18 = v17--;\n }\n while ( v18 != a1 );\n }\n v6[v8 + v4] = 0;\n }\n }\n return v6;\n}",
+ "ida_strip_asm": "sub_1370:\nendbr64\npush r15\npush r14\npush r13\npush r12\nmov r12, rdi\npush rbp\npush rbx\nsub rsp, 18h\ncall _strlen\nlea ebx, [rax+rax]\nmov r13, rax\nmov r15d, eax\nlea r8d, [rbx+1]\nmovsxd r8, r8d\nmov rdi, r8; size\nmov [rsp+48h+var_40], r8\ncall _malloc\nmov rdi, rax\ntest rax, rax\njz loc_145A\ntest r13d, r13d\nmov r8, [rsp+48h+var_40]\nmovsxd r14, r13d\njle loc_14B4\nlea r9d, [r13-1]\nmov rsi, r12\nxor ebp, ebp\nmovsxd r9, r9d\nloc_13D0:\nmov ecx, r13d\nsub ecx, ebp\nsar ecx, 1\njz loc_1470\nmovsxd rcx, ecx\nlea rdx, [r12+r9]\nmov rax, rsi\nadd rcx, rsi\njmp short loc_13FD\nloc_13F0:\nadd rax, 1\nsub rdx, 1\ncmp rax, rcx\njz short loc_1470\nloc_13FD:\nmovzx r10d, byte ptr [rdx]\ncmp [rax], r10b\njz short loc_13F0\nadd ebp, 1\nadd rsi, 1\ncmp r15d, ebp\njnz short loc_13D0\nmov rcx, r8\nmov rdx, r14\nmov rsi, r12\ncall ___strncpy_chk\nlea rsi, [r12+r14-2]\nlea ecx, [r13-1]\nmov rdi, rax\nsub rsi, rcx\nlea rax, [r12+r14-1]\nlea rdx, [rdi+r14]\nnop dword ptr [rax+rax+00000000h]\nloc_1440:\nmovzx ecx, byte ptr [rax]\nsub rax, 1\nadd rdx, 1\nmov [rdx-1], cl\ncmp rsi, rax\njnz short loc_1440\nloc_1453:\nmovsxd rbx, ebx\nmov byte ptr [rdi+rbx], 0\nloc_145A:\nadd rsp, 18h\nmov rax, rdi\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_1470:\nmov rcx, r8\nmov rdx, r14\nmov rsi, r12\ncall ___strncpy_chk\nmov rdi, rax\ntest ebp, ebp\njz short loc_14A7\nmovsxd rax, ebp\nadd r14, rdi\nlea rax, [r12+rax-1]\nloc_1490:\nmovzx edx, byte ptr [rax]\nadd r14, 1\nmov [r14-1], dl\nmov rdx, rax\nsub rax, 1\ncmp rdx, r12\njnz short loc_1490\nloc_14A7:\nlea eax, [rbp+r13+0]\ncdqe\nmov byte ptr [rdi+rax], 0\njmp short loc_145A\nloc_14B4:\nmov rcx, r8\nmov rdx, r14\nmov rsi, r12\ncall ___strncpy_chk\nmov rdi, rax\njmp short loc_1453",
+ "ida_strip_pseudo": "_BYTE *__fastcall sub_1370(const char *a1)\n{\n int v2; // eax\n int v3; // ebx\n int v4; // r13d\n int v5; // r15d\n _BYTE *v6; // rdi\n const char *v7; // rsi\n int v8; // ebp\n const char *v9; // rdx\n const char *v10; // rax\n const char *v11; // rax\n _BYTE *v12; // rdx\n char v13; // cl\n __int64 v15; // rax\n char *v16; // r14\n const char *v17; // rax\n const char *v18; // rdx\n size_t v19; // [rsp+8h] [rbp-40h]\n\n v2 = strlen(a1);\n v3 = 2 * v2;\n v4 = v2;\n v5 = v2;\n v19 = 2 * v2 + 1;\n v6 = malloc(v19);\n if ( v6 )\n {\n if ( v4 <= 0 )\n {\n v6 = (_BYTE *)__strncpy_chk(v6, a1, v4, v19);\nLABEL_11:\n v6[v3] = 0;\n }\n else\n {\n v7 = a1;\n v8 = 0;\n while ( (v4 - v8) >> 1 )\n {\n v9 = &a1[v4 - 1];\n v10 = v7;\n while ( *v10 == *v9 )\n {\n ++v10;\n --v9;\n if ( v10 == &v7[(v4 - v8) >> 1] )\n goto LABEL_13;\n }\n ++v8;\n ++v7;\n if ( v5 == v8 )\n {\n v6 = (_BYTE *)__strncpy_chk(v6, a1, v4, v19);\n v11 = &a1[v4 - 1];\n v12 = &v6[v4];\n do\n {\n v13 = *v11--;\n *v12++ = v13;\n }\n while ( &a1[v4 - 2 - (v4 - 1)] != v11 );\n goto LABEL_11;\n }\n }\nLABEL_13:\n v15 = __strncpy_chk(v6, a1, v4, v19);\n v6 = (_BYTE *)v15;\n if ( v8 )\n {\n v16 = (char *)(v15 + v4);\n v17 = &a1[v8 - 1];\n do\n {\n *v16++ = *v17;\n v18 = v17--;\n }\n while ( v18 != a1 );\n }\n v6[v8 + v4] = 0;\n }\n }\n return v6;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "uint8_t *sub_1370(const char *a1) {\n int v2;\n int v3;\n int v4;\n int v5;\n uint8_t *v6;\n const char *v7;\n int v8;\n const char *v9;\n const char *v10;\n const char *v11;\n uint8_t *v12;\n char v13;\n long long v15;\n char *v16;\n const char *v17;\n const char *v18;\n unsigned int v19;\n v2 = strlen(a1);\n v3 = 2 * v2;\n v4 = v2;\n v5 = v2;\n v19 = 2 * v2 + 1;\n v6 = malloc(v19);\n if (v6) {\n if (v4 <= 0) {\n v6 = (uint8_t *)__strncpy_chk(v6, a1, v4, v19);\n LABEL_11:\n v6[v3] = 0;\n } else {\n v7 = a1;\n v8 = 0;\n while ((v4 - v8) >> 1) {\n v9 = &a1[v4 - 1];\n v10 = v7;\n while (*v10 == *v9) {\n ++v10;\n --v9;\n if (v10 == &v7[(v4 - v8) >> 1]) goto LABEL_13;\n }\n ++v8;\n ++v7;\n if (v5 == v8) {\n v6 = (uint8_t *)__strncpy_chk(v6, a1, v4, v19);\n v11 = &a1[v4 - 1];\n v12 = &v6[v4];\n do {\n v13 = *v11--;\n *v12++ = v13;\n } while (&a1[v4 - 2 - (v4 - 1)] != v11);\n goto LABEL_11;\n }\n }\n LABEL_13:\n v15 = __strncpy_chk(v6, a1, v4, v19);\n v6 = (uint8_t *)v15;\n if (v8) {\n v16 = (char *)(v15 + v4);\n v17 = &a1[v8 - 1];\n do {\n *v16++ = *v17;\n v18 = v17--;\n } while (v18 != a1);\n }\n v6[v8 + v4] = 0;\n }\n }\n return v6;\n}",
+ "ida_pseudo_norm": "uint8_t *func0(const char *a1) {\n int v2;\n int v3;\n int v4;\n int v5;\n uint8_t *v6;\n const char *v7;\n int v8;\n const char *v9;\n const char *v10;\n const char *v11;\n uint8_t *v12;\n char v13;\n long long v15;\n char *v16;\n const char *v17;\n const char *v18;\n unsigned int v19;\n v2 = strlen(a1);\n v3 = 2 * v2;\n v4 = v2;\n v5 = v2;\n v19 = 2 * v2 + 1;\n v6 = malloc(v19);\n if (v6) {\n if (v4 <= 0) {\n v6 = (uint8_t *)__strncpy_chk(v6, a1, v4, v19);\n LABEL_11:\n v6[v3] = 0;\n } else {\n v7 = a1;\n v8 = 0;\n while ((v4 - v8) >> 1) {\n v9 = &a1[v4 - 1];\n v10 = v7;\n while (*v10 == *v9) {\n ++v10;\n --v9;\n if (v10 == &v7[(v4 - v8) >> 1]) goto LABEL_13;\n }\n ++v8;\n ++v7;\n if (v5 == v8) {\n v6 = (uint8_t *)__strncpy_chk(v6, a1, v4, v19);\n v11 = &a1[v4 - 1];\n v12 = &v6[v4];\n do {\n v13 = *v11--;\n *v12++ = v13;\n } while (&a1[v4 - 2 - (v4 - 1)] != v11);\n goto LABEL_11;\n }\n }\n LABEL_13:\n v15 = __strncpy_chk(v6, a1, v4, v19);\n v6 = (uint8_t *)v15;\n if (v8) {\n v16 = (char *)(v15 + v4);\n v17 = &a1[v8 - 1];\n do {\n *v16++ = *v17;\n v18 = v17--;\n } while (v18 != a1);\n }\n v6[v8 + v4] = 0;\n }\n }\n return v6;\n}"
+ },
+ {
+ "index": "HumanEval-C-10",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char *func0(const char *str) {\n int len = strlen(str), i, j;\n char *result = (char *)malloc(2 * len + 1);\n if (!result) {\n return NULL;\n }\n for (i = 0; i < len; i++) {\n int is_palindrome = 1;\n for (j = 0; j < (len - i) / 2; j++) {\n if (str[i + j] != str[len - 1 - j]) {\n is_palindrome = 0;\n break;\n }\n }\n if (is_palindrome) {\n strncpy(result, str, len);\n for (j = 0; j < i; j++) {\n result[len + j] = str[i - j - 1];\n }\n result[len + i] = '\\0';\n return result;\n }\n }\n strncpy(result, str, len);\n for (j = 0; j < len; j++) {\n result[len + j] = str[len - j - 1];\n }\n result[2 * len] = '\\0';\n return result;\n}",
+ "test": "#include \n#include \n\nint main() {\n char *palindrome;\n\n // First test case\n palindrome = func0(\"\");\n assert(strcmp(palindrome, \"\") == 0);\n free(palindrome);\n\n // Second test case\n palindrome = func0(\"x\");\n assert(strcmp(palindrome, \"x\") == 0);\n free(palindrome);\n\n // Third test case\n palindrome = func0(\"xyz\");\n assert(strcmp(palindrome, \"xyzyx\") == 0);\n free(palindrome);\n\n // Fourth test case\n palindrome = func0(\"xyx\");\n assert(strcmp(palindrome, \"xyx\") == 0);\n free(palindrome);\n\n // Fifth test case\n palindrome = func0(\"jerry\");\n assert(strcmp(palindrome, \"jerryrrej\") == 0);\n free(palindrome);\n\n return 0;\n}",
+ "opt": "O3",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r15\npush r14\npush r13\npush r12\nmov r12, rdi\npush rbp\npush rbx\nsub rsp, 18h\ncall _strlen\nlea ebx, [rax+rax]\nmov r13, rax\nmov r15d, eax\nlea r8d, [rbx+1]\nmovsxd r8, r8d\nmov rdi, r8; size\nmov [rsp+48h+var_40], r8\ncall _malloc\nmov rdi, rax\ntest rax, rax\njz loc_145A\ntest r13d, r13d\nmov r8, [rsp+48h+var_40]\nmovsxd r14, r13d\njle loc_14B4\nlea r9d, [r13-1]\nmov rsi, r12\nxor ebp, ebp\nmovsxd r9, r9d\nloc_13D0:\nmov ecx, r13d\nsub ecx, ebp\nsar ecx, 1\njz loc_1470\nmovsxd rcx, ecx\nlea rdx, [r12+r9]\nmov rax, rsi\nadd rcx, rsi\njmp short loc_13FD\nloc_13F0:\nadd rax, 1\nsub rdx, 1\ncmp rax, rcx\njz short loc_1470\nloc_13FD:\nmovzx r10d, byte ptr [rdx]\ncmp [rax], r10b\njz short loc_13F0\nadd ebp, 1\nadd rsi, 1\ncmp r15d, ebp\njnz short loc_13D0\nmov rcx, r8\nmov rdx, r14\nmov rsi, r12\ncall ___strncpy_chk\nlea rsi, [r12+r14-2]\nlea ecx, [r13-1]\nmov rdi, rax\nsub rsi, rcx\nlea rax, [r12+r14-1]\nlea rdx, [rdi+r14]\nnop dword ptr [rax+rax+00000000h]\nloc_1440:\nmovzx ecx, byte ptr [rax]\nsub rax, 1\nadd rdx, 1\nmov [rdx-1], cl\ncmp rsi, rax\njnz short loc_1440\nloc_1453:\nmovsxd rbx, ebx\nmov byte ptr [rdi+rbx], 0\nloc_145A:\nadd rsp, 18h\nmov rax, rdi\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_1470:\nmov rcx, r8\nmov rdx, r14\nmov rsi, r12\ncall ___strncpy_chk\nmov rdi, rax\ntest ebp, ebp\njz short loc_14A7\nmovsxd rax, ebp\nadd r14, rdi\nlea rax, [r12+rax-1]\nloc_1490:\nmovzx edx, byte ptr [rax]\nadd r14, 1\nmov [r14-1], dl\nmov rdx, rax\nsub rax, 1\ncmp rdx, r12\njnz short loc_1490\nloc_14A7:\nlea eax, [rbp+r13+0]\ncdqe\nmov byte ptr [rdi+rax], 0\njmp short loc_145A\nloc_14B4:\nmov rcx, r8\nmov rdx, r14\nmov rsi, r12\ncall ___strncpy_chk\nmov rdi, rax\njmp short loc_1453",
+ "ida_pseudo": "_BYTE *__fastcall func0(const char *a1)\n{\n int v2; // eax\n int v3; // ebx\n int v4; // r13d\n int v5; // r15d\n _BYTE *v6; // rdi\n const char *v7; // rsi\n int v8; // ebp\n const char *v9; // rdx\n const char *v10; // rax\n const char *v11; // rax\n _BYTE *v12; // rdx\n char v13; // cl\n __int64 v15; // rax\n char *v16; // r14\n const char *v17; // rax\n const char *v18; // rdx\n size_t v19; // [rsp+8h] [rbp-40h]\n\n v2 = strlen(a1);\n v3 = 2 * v2;\n v4 = v2;\n v5 = v2;\n v19 = 2 * v2 + 1;\n v6 = malloc(v19);\n if ( v6 )\n {\n if ( v4 <= 0 )\n {\n v6 = (_BYTE *)__strncpy_chk(v6, a1, v4, v19);\nLABEL_11:\n v6[v3] = 0;\n }\n else\n {\n v7 = a1;\n v8 = 0;\n while ( (v4 - v8) >> 1 )\n {\n v9 = &a1[v4 - 1];\n v10 = v7;\n while ( *v10 == *v9 )\n {\n ++v10;\n --v9;\n if ( v10 == &v7[(v4 - v8) >> 1] )\n goto LABEL_13;\n }\n ++v8;\n ++v7;\n if ( v5 == v8 )\n {\n v6 = (_BYTE *)__strncpy_chk(v6, a1, v4, v19);\n v11 = &a1[v4 - 1];\n v12 = &v6[v4];\n do\n {\n v13 = *v11--;\n *v12++ = v13;\n }\n while ( &a1[v4 - 2 - (v4 - 1)] != v11 );\n goto LABEL_11;\n }\n }\nLABEL_13:\n v15 = __strncpy_chk(v6, a1, v4, v19);\n v6 = (_BYTE *)v15;\n if ( v8 )\n {\n v16 = (char *)(v15 + v4);\n v17 = &a1[v8 - 1];\n do\n {\n *v16++ = *v17;\n v18 = v17--;\n }\n while ( v18 != a1 );\n }\n v6[v8 + v4] = 0;\n }\n }\n return v6;\n}",
+ "ida_strip_asm": "sub_1370:\nendbr64\npush r15\npush r14\npush r13\npush r12\nmov r12, rdi\npush rbp\npush rbx\nsub rsp, 18h\ncall _strlen\nlea ebx, [rax+rax]\nmov r13, rax\nmov r15d, eax\nlea r8d, [rbx+1]\nmovsxd r8, r8d\nmov rdi, r8; size\nmov [rsp+48h+var_40], r8\ncall _malloc\nmov rdi, rax\ntest rax, rax\njz loc_145A\ntest r13d, r13d\nmov r8, [rsp+48h+var_40]\nmovsxd r14, r13d\njle loc_14B4\nlea r9d, [r13-1]\nmov rsi, r12\nxor ebp, ebp\nmovsxd r9, r9d\nloc_13D0:\nmov ecx, r13d\nsub ecx, ebp\nsar ecx, 1\njz loc_1470\nmovsxd rcx, ecx\nlea rdx, [r12+r9]\nmov rax, rsi\nadd rcx, rsi\njmp short loc_13FD\nloc_13F0:\nadd rax, 1\nsub rdx, 1\ncmp rax, rcx\njz short loc_1470\nloc_13FD:\nmovzx r10d, byte ptr [rdx]\ncmp [rax], r10b\njz short loc_13F0\nadd ebp, 1\nadd rsi, 1\ncmp r15d, ebp\njnz short loc_13D0\nmov rcx, r8\nmov rdx, r14\nmov rsi, r12\ncall ___strncpy_chk\nlea rsi, [r12+r14-2]\nlea ecx, [r13-1]\nmov rdi, rax\nsub rsi, rcx\nlea rax, [r12+r14-1]\nlea rdx, [rdi+r14]\nnop dword ptr [rax+rax+00000000h]\nloc_1440:\nmovzx ecx, byte ptr [rax]\nsub rax, 1\nadd rdx, 1\nmov [rdx-1], cl\ncmp rsi, rax\njnz short loc_1440\nloc_1453:\nmovsxd rbx, ebx\nmov byte ptr [rdi+rbx], 0\nloc_145A:\nadd rsp, 18h\nmov rax, rdi\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn\nloc_1470:\nmov rcx, r8\nmov rdx, r14\nmov rsi, r12\ncall ___strncpy_chk\nmov rdi, rax\ntest ebp, ebp\njz short loc_14A7\nmovsxd rax, ebp\nadd r14, rdi\nlea rax, [r12+rax-1]\nloc_1490:\nmovzx edx, byte ptr [rax]\nadd r14, 1\nmov [r14-1], dl\nmov rdx, rax\nsub rax, 1\ncmp rdx, r12\njnz short loc_1490\nloc_14A7:\nlea eax, [rbp+r13+0]\ncdqe\nmov byte ptr [rdi+rax], 0\njmp short loc_145A\nloc_14B4:\nmov rcx, r8\nmov rdx, r14\nmov rsi, r12\ncall ___strncpy_chk\nmov rdi, rax\njmp short loc_1453",
+ "ida_strip_pseudo": "_BYTE *__fastcall sub_1370(const char *a1)\n{\n int v2; // eax\n int v3; // ebx\n int v4; // r13d\n int v5; // r15d\n _BYTE *v6; // rdi\n const char *v7; // rsi\n int v8; // ebp\n const char *v9; // rdx\n const char *v10; // rax\n const char *v11; // rax\n _BYTE *v12; // rdx\n char v13; // cl\n __int64 v15; // rax\n char *v16; // r14\n const char *v17; // rax\n const char *v18; // rdx\n size_t v19; // [rsp+8h] [rbp-40h]\n\n v2 = strlen(a1);\n v3 = 2 * v2;\n v4 = v2;\n v5 = v2;\n v19 = 2 * v2 + 1;\n v6 = malloc(v19);\n if ( v6 )\n {\n if ( v4 <= 0 )\n {\n v6 = (_BYTE *)__strncpy_chk(v6, a1, v4, v19);\nLABEL_11:\n v6[v3] = 0;\n }\n else\n {\n v7 = a1;\n v8 = 0;\n while ( (v4 - v8) >> 1 )\n {\n v9 = &a1[v4 - 1];\n v10 = v7;\n while ( *v10 == *v9 )\n {\n ++v10;\n --v9;\n if ( v10 == &v7[(v4 - v8) >> 1] )\n goto LABEL_13;\n }\n ++v8;\n ++v7;\n if ( v5 == v8 )\n {\n v6 = (_BYTE *)__strncpy_chk(v6, a1, v4, v19);\n v11 = &a1[v4 - 1];\n v12 = &v6[v4];\n do\n {\n v13 = *v11--;\n *v12++ = v13;\n }\n while ( &a1[v4 - 2 - (v4 - 1)] != v11 );\n goto LABEL_11;\n }\n }\nLABEL_13:\n v15 = __strncpy_chk(v6, a1, v4, v19);\n v6 = (_BYTE *)v15;\n if ( v8 )\n {\n v16 = (char *)(v15 + v4);\n v17 = &a1[v8 - 1];\n do\n {\n *v16++ = *v17;\n v18 = v17--;\n }\n while ( v18 != a1 );\n }\n v6[v8 + v4] = 0;\n }\n }\n return v6;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "uint8_t *sub_1370(const char *a1) {\n int v2;\n int v3;\n int v4;\n int v5;\n uint8_t *v6;\n const char *v7;\n int v8;\n const char *v9;\n const char *v10;\n const char *v11;\n uint8_t *v12;\n char v13;\n long long v15;\n char *v16;\n const char *v17;\n const char *v18;\n unsigned int v19;\n v2 = strlen(a1);\n v3 = 2 * v2;\n v4 = v2;\n v5 = v2;\n v19 = 2 * v2 + 1;\n v6 = malloc(v19);\n if (v6) {\n if (v4 <= 0) {\n v6 = (uint8_t *)__strncpy_chk(v6, a1, v4, v19);\n LABEL_11:\n v6[v3] = 0;\n } else {\n v7 = a1;\n v8 = 0;\n while ((v4 - v8) >> 1) {\n v9 = &a1[v4 - 1];\n v10 = v7;\n while (*v10 == *v9) {\n ++v10;\n --v9;\n if (v10 == &v7[(v4 - v8) >> 1]) goto LABEL_13;\n }\n ++v8;\n ++v7;\n if (v5 == v8) {\n v6 = (uint8_t *)__strncpy_chk(v6, a1, v4, v19);\n v11 = &a1[v4 - 1];\n v12 = &v6[v4];\n do {\n v13 = *v11--;\n *v12++ = v13;\n } while (&a1[v4 - 2 - (v4 - 1)] != v11);\n goto LABEL_11;\n }\n }\n LABEL_13:\n v15 = __strncpy_chk(v6, a1, v4, v19);\n v6 = (uint8_t *)v15;\n if (v8) {\n v16 = (char *)(v15 + v4);\n v17 = &a1[v8 - 1];\n do {\n *v16++ = *v17;\n v18 = v17--;\n } while (v18 != a1);\n }\n v6[v8 + v4] = 0;\n }\n }\n return v6;\n}",
+ "ida_pseudo_norm": "uint8_t *func0(const char *a1) {\n int v2;\n int v3;\n int v4;\n int v5;\n uint8_t *v6;\n const char *v7;\n int v8;\n const char *v9;\n const char *v10;\n const char *v11;\n uint8_t *v12;\n char v13;\n long long v15;\n char *v16;\n const char *v17;\n const char *v18;\n unsigned int v19;\n v2 = strlen(a1);\n v3 = 2 * v2;\n v4 = v2;\n v5 = v2;\n v19 = 2 * v2 + 1;\n v6 = malloc(v19);\n if (v6) {\n if (v4 <= 0) {\n v6 = (uint8_t *)__strncpy_chk(v6, a1, v4, v19);\n LABEL_11:\n v6[v3] = 0;\n } else {\n v7 = a1;\n v8 = 0;\n while ((v4 - v8) >> 1) {\n v9 = &a1[v4 - 1];\n v10 = v7;\n while (*v10 == *v9) {\n ++v10;\n --v9;\n if (v10 == &v7[(v4 - v8) >> 1]) goto LABEL_13;\n }\n ++v8;\n ++v7;\n if (v5 == v8) {\n v6 = (uint8_t *)__strncpy_chk(v6, a1, v4, v19);\n v11 = &a1[v4 - 1];\n v12 = &v6[v4];\n do {\n v13 = *v11--;\n *v12++ = v13;\n } while (&a1[v4 - 2 - (v4 - 1)] != v11);\n goto LABEL_11;\n }\n }\n LABEL_13:\n v15 = __strncpy_chk(v6, a1, v4, v19);\n v6 = (uint8_t *)v15;\n if (v8) {\n v16 = (char *)(v15 + v4);\n v17 = &a1[v8 - 1];\n do {\n *v16++ = *v17;\n v18 = v17--;\n } while (v18 != a1);\n }\n v6[v8 + v4] = 0;\n }\n }\n return v6;\n}"
+ },
+ {
+ "index": "HumanEval-C-11",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char *func0(const char *a, const char *b) {\n int len_a = strlen(a);\n int len_b = strlen(b);\n int min_len = len_a < len_b ? len_a : len_b;\n char *output = malloc((min_len + 1) * sizeof(char));\n if (!output) return NULL;\n for (int i = 0; i < min_len; i++) {\n output[i] = (a[i] == b[i]) ? '0' : '1';\n }\n output[min_len] = '\\0';\n return output;\n}",
+ "test": "#include \n#include \n#include \n#include \n\nint main() {\n char *result;\n\n result = func0(\"111000\", \"101010\");\n assert(strcmp(result, \"010010\") == 0);\n free(result);\n\n result = func0(\"1\", \"1\");\n assert(strcmp(result, \"0\") == 0);\n free(result);\n\n result = func0(\"0101\", \"0000\");\n assert(strcmp(result, \"0101\") == 0);\n free(result);\n\n return 0;\n}",
+ "opt": "O0",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\nmov rbp, rsp\nsub rsp, 30h\nmov [rbp+s], rdi\nmov [rbp+var_30], rsi\nmov rax, [rbp+s]\nmov rdi, rax; s\ncall _strlen\nmov [rbp+var_14], eax\nmov rax, [rbp+var_30]\nmov rdi, rax; s\ncall _strlen\nmov [rbp+var_10], eax\nmov edx, [rbp+var_10]\nmov eax, [rbp+var_14]\ncmp edx, eax\ncmovle eax, edx\nmov [rbp+var_C], eax\nmov eax, [rbp+var_C]\nadd eax, 1\ncdqe\nmov rdi, rax; size\ncall _malloc\nmov [rbp+var_8], rax\ncmp [rbp+var_8], 0\njnz short loc_122B\nmov eax, 0\njmp short locret_1293\nloc_122B:\nmov [rbp+var_18], 0\njmp short loc_1277\nloc_1234:\nmov eax, [rbp+var_18]\nmovsxd rdx, eax\nmov rax, [rbp+s]\nadd rax, rdx\nmovzx edx, byte ptr [rax]\nmov eax, [rbp+var_18]\nmovsxd rcx, eax\nmov rax, [rbp+var_30]\nadd rax, rcx\nmovzx eax, byte ptr [rax]\ncmp dl, al\njnz short loc_125F\nmov ecx, 30h ; '0'\njmp short loc_1264\nloc_125F:\nmov ecx, 31h ; '1'\nloc_1264:\nmov eax, [rbp+var_18]\nmovsxd rdx, eax\nmov rax, [rbp+var_8]\nadd rax, rdx\nmov [rax], cl\nadd [rbp+var_18], 1\nloc_1277:\nmov eax, [rbp+var_18]\ncmp eax, [rbp+var_C]\njl short loc_1234\nmov eax, [rbp+var_C]\nmovsxd rdx, eax\nmov rax, [rbp+var_8]\nadd rax, rdx\nmov byte ptr [rax], 0\nmov rax, [rbp+var_8]\nlocret_1293:\nleave\nretn",
+ "ida_pseudo": "_BYTE *__fastcall func0(const char *a1, const char *a2)\n{\n int v2; // edx\n int v3; // eax\n char v5; // cl\n int i; // [rsp+18h] [rbp-18h]\n int v7; // [rsp+1Ch] [rbp-14h]\n int v8; // [rsp+24h] [rbp-Ch]\n _BYTE *v9; // [rsp+28h] [rbp-8h]\n\n v7 = strlen(a1);\n v2 = strlen(a2);\n v3 = v7;\n if ( v2 <= v7 )\n v3 = v2;\n v8 = v3;\n v9 = malloc(v3 + 1);\n if ( !v9 )\n return 0LL;\n for ( i = 0; i < v8; ++i )\n {\n if ( a1[i] == a2[i] )\n v5 = 48;\n else\n v5 = 49;\n v9[i] = v5;\n }\n v9[v8] = 0;\n return v9;\n}",
+ "ida_strip_asm": "sub_11C9:\nendbr64\npush rbp\nmov rbp, rsp\nsub rsp, 30h\nmov [rbp+s], rdi\nmov [rbp+var_30], rsi\nmov rax, [rbp+s]\nmov rdi, rax; s\ncall _strlen\nmov [rbp+var_14], eax\nmov rax, [rbp+var_30]\nmov rdi, rax; s\ncall _strlen\nmov [rbp+var_10], eax\nmov edx, [rbp+var_10]\nmov eax, [rbp+var_14]\ncmp edx, eax\ncmovle eax, edx\nmov [rbp+var_C], eax\nmov eax, [rbp+var_C]\nadd eax, 1\ncdqe\nmov rdi, rax; size\ncall _malloc\nmov [rbp+var_8], rax\ncmp [rbp+var_8], 0\njnz short loc_122B\nmov eax, 0\njmp short locret_1293\nloc_122B:\nmov [rbp+var_18], 0\njmp short loc_1277\nloc_1234:\nmov eax, [rbp+var_18]\nmovsxd rdx, eax\nmov rax, [rbp+s]\nadd rax, rdx\nmovzx edx, byte ptr [rax]\nmov eax, [rbp+var_18]\nmovsxd rcx, eax\nmov rax, [rbp+var_30]\nadd rax, rcx\nmovzx eax, byte ptr [rax]\ncmp dl, al\njnz short loc_125F\nmov ecx, 30h ; '0'\njmp short loc_1264\nloc_125F:\nmov ecx, 31h ; '1'\nloc_1264:\nmov eax, [rbp+var_18]\nmovsxd rdx, eax\nmov rax, [rbp+var_8]\nadd rax, rdx\nmov [rax], cl\nadd [rbp+var_18], 1\nloc_1277:\nmov eax, [rbp+var_18]\ncmp eax, [rbp+var_C]\njl short loc_1234\nmov eax, [rbp+var_C]\nmovsxd rdx, eax\nmov rax, [rbp+var_8]\nadd rax, rdx\nmov byte ptr [rax], 0\nmov rax, [rbp+var_8]\nlocret_1293:\nleave\nretn",
+ "ida_strip_pseudo": "_BYTE *__fastcall sub_11C9(const char *a1, const char *a2)\n{\n int v2; // edx\n int v3; // eax\n char v5; // cl\n int i; // [rsp+18h] [rbp-18h]\n int v7; // [rsp+1Ch] [rbp-14h]\n int v8; // [rsp+24h] [rbp-Ch]\n _BYTE *v9; // [rsp+28h] [rbp-8h]\n\n v7 = strlen(a1);\n v2 = strlen(a2);\n v3 = v7;\n if ( v2 <= v7 )\n v3 = v2;\n v8 = v3;\n v9 = malloc(v3 + 1);\n if ( !v9 )\n return 0LL;\n for ( i = 0; i < v8; ++i )\n {\n if ( a1[i] == a2[i] )\n v5 = 48;\n else\n v5 = 49;\n v9[i] = v5;\n }\n v9[v8] = 0;\n return v9;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "uint8_t *sub_11C9(const char *a1, const char *a2) {\n int v2;\n int v3;\n char v5;\n int i;\n int v7;\n int v8;\n uint8_t *v9;\n v7 = strlen(a1);\n v2 = strlen(a2);\n v3 = v7;\n if (v2 <= v7) v3 = v2;\n v8 = v3;\n v9 = malloc(v3 + 1);\n if (!v9) return 0LL;\n for (i = 0; i < v8; ++i) {\n if (a1[i] == a2[i])\n v5 = 48;\n else\n v5 = 49;\n v9[i] = v5;\n }\n v9[v8] = 0;\n return v9;\n}",
+ "ida_pseudo_norm": "uint8_t *func0(const char *a1, const char *a2) {\n int v2;\n int v3;\n char v5;\n int i;\n int v7;\n int v8;\n uint8_t *v9;\n v7 = strlen(a1);\n v2 = strlen(a2);\n v3 = v7;\n if (v2 <= v7) v3 = v2;\n v8 = v3;\n v9 = malloc(v3 + 1);\n if (!v9) return 0LL;\n for (i = 0; i < v8; ++i) {\n if (a1[i] == a2[i])\n v5 = 48;\n else\n v5 = 49;\n v9[i] = v5;\n }\n v9[v8] = 0;\n return v9;\n}"
+ },
+ {
+ "index": "HumanEval-C-11",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char *func0(const char *a, const char *b) {\n int len_a = strlen(a);\n int len_b = strlen(b);\n int min_len = len_a < len_b ? len_a : len_b;\n char *output = malloc((min_len + 1) * sizeof(char));\n if (!output) return NULL;\n for (int i = 0; i < min_len; i++) {\n output[i] = (a[i] == b[i]) ? '0' : '1';\n }\n output[min_len] = '\\0';\n return output;\n}",
+ "test": "#include \n#include \n#include \n#include \n\nint main() {\n char *result;\n\n result = func0(\"111000\", \"101010\");\n assert(strcmp(result, \"010010\") == 0);\n free(result);\n\n result = func0(\"1\", \"1\");\n assert(strcmp(result, \"0\") == 0);\n free(result);\n\n result = func0(\"0101\", \"0000\");\n assert(strcmp(result, \"0101\") == 0);\n free(result);\n\n return 0;\n}",
+ "opt": "O1",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r12\npush rbp\npush rbx\nmov rbx, rdi\nmov rbp, rsi\ncall _strlen\nmov r12, rax\nmov rdi, rbp; s\ncall _strlen\ncmp r12d, eax\ncmovg r12d, eax\nlea edi, [r12+1]\nmovsxd rdi, edi; size\ncall _malloc\ntest rax, rax\njz short loc_1230\ntest r12d, r12d\njle short loc_1228\nmovsxd rsi, r12d\nmov edx, 0\nloc_120D:\nmovzx edi, byte ptr [rbp+rdx+0]\ncmp [rbx+rdx], dil\nsetnz cl\nadd ecx, 30h ; '0'\nmov [rax+rdx], cl\nadd rdx, 1\ncmp rdx, rsi\njnz short loc_120D\nloc_1228:\nmovsxd r12, r12d\nmov byte ptr [rax+r12], 0\nloc_1230:\npop rbx\npop rbp\npop r12\nretn",
+ "ida_pseudo": "_BYTE *__fastcall func0(const char *a1, const char *a2)\n{\n int v2; // r12d\n int v3; // eax\n _BYTE *result; // rax\n __int64 i; // rdx\n\n v2 = strlen(a1);\n v3 = strlen(a2);\n if ( v2 > v3 )\n v2 = v3;\n result = malloc(v2 + 1);\n if ( result )\n {\n if ( v2 > 0 )\n {\n for ( i = 0LL; i != v2; ++i )\n result[i] = (a1[i] != a2[i]) + 48;\n }\n result[v2] = 0;\n }\n return result;\n}",
+ "ida_strip_asm": "sub_11C9:\nendbr64\npush r12\npush rbp\npush rbx\nmov rbx, rdi\nmov rbp, rsi\ncall _strlen\nmov r12, rax\nmov rdi, rbp; s\ncall _strlen\ncmp r12d, eax\ncmovg r12d, eax\nlea edi, [r12+1]\nmovsxd rdi, edi; size\ncall _malloc\ntest rax, rax\njz short loc_1230\ntest r12d, r12d\njle short loc_1228\nmovsxd rsi, r12d\nmov edx, 0\nloc_120D:\nmovzx edi, byte ptr [rbp+rdx+0]\ncmp [rbx+rdx], dil\nsetnz cl\nadd ecx, 30h ; '0'\nmov [rax+rdx], cl\nadd rdx, 1\ncmp rdx, rsi\njnz short loc_120D\nloc_1228:\nmovsxd r12, r12d\nmov byte ptr [rax+r12], 0\nloc_1230:\npop rbx\npop rbp\npop r12\nretn",
+ "ida_strip_pseudo": "_BYTE *__fastcall sub_11C9(const char *a1, const char *a2)\n{\n int v2; // r12d\n int v3; // eax\n _BYTE *result; // rax\n __int64 i; // rdx\n\n v2 = strlen(a1);\n v3 = strlen(a2);\n if ( v2 > v3 )\n v2 = v3;\n result = malloc(v2 + 1);\n if ( result )\n {\n if ( v2 > 0 )\n {\n for ( i = 0LL; i != v2; ++i )\n result[i] = (a1[i] != a2[i]) + 48;\n }\n result[v2] = 0;\n }\n return result;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "uint8_t *sub_11C9(const char *a1, const char *a2) {\n int v2;\n int v3;\n uint8_t *result;\n long long i;\n v2 = strlen(a1);\n v3 = strlen(a2);\n if (v2 > v3) v2 = v3;\n result = malloc(v2 + 1);\n if (result) {\n if (v2 > 0) {\n for (i = 0LL; i != v2; ++i) result[i] = (a1[i] != a2[i]) + 48;\n }\n result[v2] = 0;\n }\n return result;\n}",
+ "ida_pseudo_norm": "uint8_t *func0(const char *a1, const char *a2) {\n int v2;\n int v3;\n uint8_t *result;\n long long i;\n v2 = strlen(a1);\n v3 = strlen(a2);\n if (v2 > v3) v2 = v3;\n result = malloc(v2 + 1);\n if (result) {\n if (v2 > 0) {\n for (i = 0LL; i != v2; ++i) result[i] = (a1[i] != a2[i]) + 48;\n }\n result[v2] = 0;\n }\n return result;\n}"
+ },
+ {
+ "index": "HumanEval-C-11",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char *func0(const char *a, const char *b) {\n int len_a = strlen(a);\n int len_b = strlen(b);\n int min_len = len_a < len_b ? len_a : len_b;\n char *output = malloc((min_len + 1) * sizeof(char));\n if (!output) return NULL;\n for (int i = 0; i < min_len; i++) {\n output[i] = (a[i] == b[i]) ? '0' : '1';\n }\n output[min_len] = '\\0';\n return output;\n}",
+ "test": "#include \n#include \n#include \n#include \n\nint main() {\n char *result;\n\n result = func0(\"111000\", \"101010\");\n assert(strcmp(result, \"010010\") == 0);\n free(result);\n\n result = func0(\"1\", \"1\");\n assert(strcmp(result, \"0\") == 0);\n free(result);\n\n result = func0(\"0101\", \"0000\");\n assert(strcmp(result, \"0101\") == 0);\n free(result);\n\n return 0;\n}",
+ "opt": "O2",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r12\nmov r12, rsi\npush rbp\nmov rbp, rdi\npush rbx\ncall _strlen\nmov rdi, r12; s\nmov rbx, rax\ncall _strlen\ncmp ebx, eax\ncmovg ebx, eax\nlea edi, [rbx+1]\nmovsxd rdi, edi; size\ncall _malloc\ntest rax, rax\njz short loc_132F\nmovsxd rsi, ebx\nxor edx, edx\ntest ebx, ebx\njle short loc_132B\nnop dword ptr [rax+00h]\nloc_1310:\nmovzx ebx, byte ptr [r12+rdx]\ncmp [rbp+rdx+0], bl\nsetnz cl\nadd ecx, 30h ; '0'\nmov [rax+rdx], cl\nadd rdx, 1\ncmp rsi, rdx\njnz short loc_1310\nloc_132B:\nmov byte ptr [rax+rsi], 0\nloc_132F:\npop rbx\npop rbp\npop r12\nretn",
+ "ida_pseudo": "_BYTE *__fastcall func0(const char *a1, const char *a2)\n{\n int v2; // ebx\n int v3; // eax\n _BYTE *result; // rax\n __int64 v5; // rdx\n\n v2 = strlen(a1);\n v3 = strlen(a2);\n if ( v2 > v3 )\n v2 = v3;\n result = malloc(v2 + 1);\n if ( result )\n {\n v5 = 0LL;\n if ( v2 > 0 )\n {\n do\n {\n result[v5] = (a1[v5] != a2[v5]) + 48;\n ++v5;\n }\n while ( v2 != v5 );\n }\n result[v2] = 0;\n }\n return result;\n}",
+ "ida_strip_asm": "sub_12D0:\nendbr64\npush r12\nmov r12, rsi\npush rbp\nmov rbp, rdi\npush rbx\ncall _strlen\nmov rdi, r12; s\nmov rbx, rax\ncall _strlen\ncmp ebx, eax\ncmovg ebx, eax\nlea edi, [rbx+1]\nmovsxd rdi, edi; size\ncall _malloc\ntest rax, rax\njz short loc_132F\nmovsxd rsi, ebx\nxor edx, edx\ntest ebx, ebx\njle short loc_132B\nnop dword ptr [rax+00h]\nloc_1310:\nmovzx ebx, byte ptr [r12+rdx]\ncmp [rbp+rdx+0], bl\nsetnz cl\nadd ecx, 30h ; '0'\nmov [rax+rdx], cl\nadd rdx, 1\ncmp rsi, rdx\njnz short loc_1310\nloc_132B:\nmov byte ptr [rax+rsi], 0\nloc_132F:\npop rbx\npop rbp\npop r12\nretn",
+ "ida_strip_pseudo": "_BYTE *__fastcall sub_12D0(const char *a1, const char *a2)\n{\n int v2; // ebx\n int v3; // eax\n _BYTE *result; // rax\n __int64 v5; // rdx\n\n v2 = strlen(a1);\n v3 = strlen(a2);\n if ( v2 > v3 )\n v2 = v3;\n result = malloc(v2 + 1);\n if ( result )\n {\n v5 = 0LL;\n if ( v2 > 0 )\n {\n do\n {\n result[v5] = (a1[v5] != a2[v5]) + 48;\n ++v5;\n }\n while ( v2 != v5 );\n }\n result[v2] = 0;\n }\n return result;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "uint8_t *sub_12D0(const char *a1, const char *a2) {\n int v2;\n int v3;\n uint8_t *result;\n long long v5;\n v2 = strlen(a1);\n v3 = strlen(a2);\n if (v2 > v3) v2 = v3;\n result = malloc(v2 + 1);\n if (result) {\n v5 = 0LL;\n if (v2 > 0) {\n do {\n result[v5] = (a1[v5] != a2[v5]) + 48;\n ++v5;\n } while (v2 != v5);\n }\n result[v2] = 0;\n }\n return result;\n}",
+ "ida_pseudo_norm": "uint8_t *func0(const char *a1, const char *a2) {\n int v2;\n int v3;\n uint8_t *result;\n long long v5;\n v2 = strlen(a1);\n v3 = strlen(a2);\n if (v2 > v3) v2 = v3;\n result = malloc(v2 + 1);\n if (result) {\n v5 = 0LL;\n if (v2 > 0) {\n do {\n result[v5] = (a1[v5] != a2[v5]) + 48;\n ++v5;\n } while (v2 != v5);\n }\n result[v2] = 0;\n }\n return result;\n}"
+ },
+ {
+ "index": "HumanEval-C-11",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char *func0(const char *a, const char *b) {\n int len_a = strlen(a);\n int len_b = strlen(b);\n int min_len = len_a < len_b ? len_a : len_b;\n char *output = malloc((min_len + 1) * sizeof(char));\n if (!output) return NULL;\n for (int i = 0; i < min_len; i++) {\n output[i] = (a[i] == b[i]) ? '0' : '1';\n }\n output[min_len] = '\\0';\n return output;\n}",
+ "test": "#include \n#include \n#include \n#include \n\nint main() {\n char *result;\n\n result = func0(\"111000\", \"101010\");\n assert(strcmp(result, \"010010\") == 0);\n free(result);\n\n result = func0(\"1\", \"1\");\n assert(strcmp(result, \"0\") == 0);\n free(result);\n\n result = func0(\"0101\", \"0000\");\n assert(strcmp(result, \"0101\") == 0);\n free(result);\n\n return 0;\n}",
+ "opt": "O3",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r12\nmov r12, rdi\npush rbp\nmov rbp, rsi\npush rbx\ncall _strlen\nmov rdi, rbp; s\nmov rbx, rax\ncall _strlen\ncmp ebx, eax\ncmovg ebx, eax\nlea edi, [rbx+1]\nmovsxd rdi, edi; size\ncall _malloc\nmov rdx, rax\ntest rax, rax\njz loc_14A0\ntest ebx, ebx\njle loc_1499\nlea eax, [rbx-1]\ncmp eax, 0Eh\njbe loc_14A8\nmov ecx, ebx\nmovdqa xmm3, cs:xmmword_20A0\nmovdqa xmm2, cs:xmmword_20B0\nxor eax, eax\nshr ecx, 4\nshl rcx, 4\nnop dword ptr [rax+00000000h]\nloc_1340:\nmovdqu xmm0, xmmword ptr [r12+rax]\nmovdqu xmm4, xmmword ptr [rbp+rax+0]\nmovdqa xmm1, xmm3\npcmpeqb xmm0, xmm4\npand xmm1, xmm0\npandn xmm0, xmm2\npor xmm0, xmm1\nmovups xmmword ptr [rdx+rax], xmm0\nadd rax, 10h\ncmp rcx, rax\njnz short loc_1340\nmov eax, ebx\nand eax, 0FFFFFFF0h\nmov ecx, eax\ncmp ebx, eax\njz loc_1499\nloc_137C:\nmov esi, ebx\nsub esi, ecx\nlea edi, [rsi-1]\ncmp edi, 6\njbe short loc_13C9\nmovq xmm1, qword ptr [rbp+rcx+0]\nmovq xmm0, qword ptr [r12+rcx]\nmovq xmm2, qword ptr cs:xmmword_20B0\npcmpeqb xmm0, xmm1\nmovq xmm1, qword ptr cs:xmmword_20A0\npand xmm1, xmm0\npandn xmm0, xmm2\npor xmm0, xmm1\nmovq qword ptr [rdx+rcx], xmm0\nmov ecx, esi\nand ecx, 0FFFFFFF8h\nadd eax, ecx\nand esi, 7\njz loc_1499\nloc_13C9:\nmovsxd rcx, eax\nmovzx edi, byte ptr [rbp+rcx+0]\ncmp [r12+rcx], dil\nsetnz sil\nadd esi, 30h ; '0'\nmov [rdx+rcx], sil\nlea ecx, [rax+1]\ncmp ebx, ecx\njle loc_1499\nmovsxd rcx, ecx\nmovzx edi, byte ptr [rbp+rcx+0]\ncmp [r12+rcx], dil\nsetnz sil\nadd esi, 30h ; '0'\nmov [rdx+rcx], sil\nlea ecx, [rax+2]\ncmp ebx, ecx\njle loc_1499\nmovsxd rcx, ecx\nmovzx edi, byte ptr [rbp+rcx+0]\ncmp [r12+rcx], dil\nsetnz sil\nadd esi, 30h ; '0'\nmov [rdx+rcx], sil\nlea ecx, [rax+3]\ncmp ebx, ecx\njle short loc_1499\nmovsxd rcx, ecx\nmovzx edi, byte ptr [rbp+rcx+0]\ncmp [r12+rcx], dil\nsetnz sil\nadd esi, 30h ; '0'\nmov [rdx+rcx], sil\nlea ecx, [rax+4]\ncmp ebx, ecx\njle short loc_1499\nmovsxd rcx, ecx\nmovzx edi, byte ptr [rbp+rcx+0]\ncmp [r12+rcx], dil\nsetnz sil\nadd esi, 30h ; '0'\nmov [rdx+rcx], sil\nlea ecx, [rax+5]\ncmp ebx, ecx\njle short loc_1499\nmovsxd rcx, ecx\nmovzx edi, byte ptr [rbp+rcx+0]\ncmp [r12+rcx], dil\nsetnz sil\nadd eax, 6\nadd esi, 30h ; '0'\nmov [rdx+rcx], sil\ncmp ebx, eax\njle short loc_1499\ncdqe\nmovzx edi, byte ptr [rbp+rax+0]\ncmp [r12+rax], dil\nsetnz cl\nadd ecx, 30h ; '0'\nmov [rdx+rax], cl\nloc_1499:\nmovsxd rbx, ebx\nmov byte ptr [rdx+rbx], 0\nloc_14A0:\npop rbx\nmov rax, rdx\npop rbp\npop r12\nretn\nloc_14A8:\nxor ecx, ecx\nxor eax, eax\njmp loc_137C",
+ "ida_pseudo": "_BYTE *__fastcall func0(const char *a1, const char *a2)\n{\n int v3; // ebx\n int v4; // eax\n _BYTE *v5; // rdx\n __m128i si128; // xmm3\n __m128i v7; // xmm2\n __int64 v8; // rax\n __m128i v9; // xmm0\n int v10; // eax\n __int64 v11; // rcx\n int v12; // esi\n __m128i v13; // xmm0\n int v14; // ecx\n int v15; // eax\n\n v3 = strlen(a1);\n v4 = strlen(a2);\n if ( v3 > v4 )\n v3 = v4;\n v5 = malloc(v3 + 1);\n if ( v5 )\n {\n if ( v3 > 0 )\n {\n if ( (unsigned int)(v3 - 1) <= 0xE )\n {\n v11 = 0LL;\n v10 = 0;\n goto LABEL_9;\n }\n si128 = _mm_load_si128((const __m128i *)&xmmword_20A0);\n v7 = _mm_load_si128((const __m128i *)&xmmword_20B0);\n v8 = 0LL;\n do\n {\n v9 = _mm_cmpeq_epi8(_mm_loadu_si128((const __m128i *)&a1[v8]), _mm_loadu_si128((const __m128i *)&a2[v8]));\n *(__m128i *)&v5[v8] = _mm_or_si128(_mm_andnot_si128(v9, v7), _mm_and_si128(si128, v9));\n v8 += 16LL;\n }\n while ( 16LL * ((unsigned int)v3 >> 4) != v8 );\n v10 = v3 & 0x7FFFFFF0;\n v11 = v3 & 0xFFFFFFF0;\n if ( v3 != (v3 & 0xFFFFFFF0) )\n {\nLABEL_9:\n v12 = v3 - v11;\n if ( (unsigned int)(v3 - v11 - 1) <= 6\n || (v13 = _mm_cmpeq_epi8(\n _mm_loadl_epi64((const __m128i *)&a1[v11]),\n _mm_loadl_epi64((const __m128i *)&a2[v11])),\n *(_QWORD *)&v5[v11] = _mm_or_si128(\n _mm_andnot_si128(v13, _mm_loadl_epi64((const __m128i *)&xmmword_20B0)),\n _mm_and_si128(_mm_loadl_epi64((const __m128i *)&xmmword_20A0), v13)).m128i_u64[0],\n v10 += v12 & 0xFFFFFFF8,\n (v12 & 7) != 0) )\n {\n v5[v10] = (a1[v10] != a2[v10]) + 48;\n if ( v3 > v10 + 1 )\n {\n v5[v10 + 1] = (a1[v10 + 1] != a2[v10 + 1]) + 48;\n if ( v3 > v10 + 2 )\n {\n v5[v10 + 2] = (a1[v10 + 2] != a2[v10 + 2]) + 48;\n if ( v3 > v10 + 3 )\n {\n v5[v10 + 3] = (a1[v10 + 3] != a2[v10 + 3]) + 48;\n if ( v3 > v10 + 4 )\n {\n v5[v10 + 4] = (a1[v10 + 4] != a2[v10 + 4]) + 48;\n v14 = v10 + 5;\n if ( v3 > v10 + 5 )\n {\n v15 = v10 + 6;\n v5[v14] = (a1[v14] != a2[v14]) + 48;\n if ( v3 > v15 )\n v5[v15] = (a1[v15] != a2[v15]) + 48;\n }\n }\n }\n }\n }\n }\n }\n }\n v5[v3] = 0;\n }\n return v5;\n}",
+ "ida_strip_asm": "sub_12D0:\nendbr64\npush r12\nmov r12, rdi\npush rbp\nmov rbp, rsi\npush rbx\ncall _strlen\nmov rdi, rbp; s\nmov rbx, rax\ncall _strlen\ncmp ebx, eax\ncmovg ebx, eax\nlea edi, [rbx+1]\nmovsxd rdi, edi; size\ncall _malloc\nmov rdx, rax\ntest rax, rax\njz loc_14A0\ntest ebx, ebx\njle loc_1499\nlea eax, [rbx-1]\ncmp eax, 0Eh\njbe loc_14A8\nmov ecx, ebx\nmovdqa xmm3, cs:xmmword_20A0\nmovdqa xmm2, cs:xmmword_20B0\nxor eax, eax\nshr ecx, 4\nshl rcx, 4\nnop dword ptr [rax+00000000h]\nloc_1340:\nmovdqu xmm0, xmmword ptr [r12+rax]\nmovdqu xmm4, xmmword ptr [rbp+rax+0]\nmovdqa xmm1, xmm3\npcmpeqb xmm0, xmm4\npand xmm1, xmm0\npandn xmm0, xmm2\npor xmm0, xmm1\nmovups xmmword ptr [rdx+rax], xmm0\nadd rax, 10h\ncmp rcx, rax\njnz short loc_1340\nmov eax, ebx\nand eax, 0FFFFFFF0h\nmov ecx, eax\ncmp ebx, eax\njz loc_1499\nloc_137C:\nmov esi, ebx\nsub esi, ecx\nlea edi, [rsi-1]\ncmp edi, 6\njbe short loc_13C9\nmovq xmm1, qword ptr [rbp+rcx+0]\nmovq xmm0, qword ptr [r12+rcx]\nmovq xmm2, qword ptr cs:xmmword_20B0\npcmpeqb xmm0, xmm1\nmovq xmm1, qword ptr cs:xmmword_20A0\npand xmm1, xmm0\npandn xmm0, xmm2\npor xmm0, xmm1\nmovq qword ptr [rdx+rcx], xmm0\nmov ecx, esi\nand ecx, 0FFFFFFF8h\nadd eax, ecx\nand esi, 7\njz loc_1499\nloc_13C9:\nmovsxd rcx, eax\nmovzx edi, byte ptr [rbp+rcx+0]\ncmp [r12+rcx], dil\nsetnz sil\nadd esi, 30h ; '0'\nmov [rdx+rcx], sil\nlea ecx, [rax+1]\ncmp ebx, ecx\njle loc_1499\nmovsxd rcx, ecx\nmovzx edi, byte ptr [rbp+rcx+0]\ncmp [r12+rcx], dil\nsetnz sil\nadd esi, 30h ; '0'\nmov [rdx+rcx], sil\nlea ecx, [rax+2]\ncmp ebx, ecx\njle loc_1499\nmovsxd rcx, ecx\nmovzx edi, byte ptr [rbp+rcx+0]\ncmp [r12+rcx], dil\nsetnz sil\nadd esi, 30h ; '0'\nmov [rdx+rcx], sil\nlea ecx, [rax+3]\ncmp ebx, ecx\njle short loc_1499\nmovsxd rcx, ecx\nmovzx edi, byte ptr [rbp+rcx+0]\ncmp [r12+rcx], dil\nsetnz sil\nadd esi, 30h ; '0'\nmov [rdx+rcx], sil\nlea ecx, [rax+4]\ncmp ebx, ecx\njle short loc_1499\nmovsxd rcx, ecx\nmovzx edi, byte ptr [rbp+rcx+0]\ncmp [r12+rcx], dil\nsetnz sil\nadd esi, 30h ; '0'\nmov [rdx+rcx], sil\nlea ecx, [rax+5]\ncmp ebx, ecx\njle short loc_1499\nmovsxd rcx, ecx\nmovzx edi, byte ptr [rbp+rcx+0]\ncmp [r12+rcx], dil\nsetnz sil\nadd eax, 6\nadd esi, 30h ; '0'\nmov [rdx+rcx], sil\ncmp ebx, eax\njle short loc_1499\ncdqe\nmovzx edi, byte ptr [rbp+rax+0]\ncmp [r12+rax], dil\nsetnz cl\nadd ecx, 30h ; '0'\nmov [rdx+rax], cl\nloc_1499:\nmovsxd rbx, ebx\nmov byte ptr [rdx+rbx], 0\nloc_14A0:\npop rbx\nmov rax, rdx\npop rbp\npop r12\nretn\nloc_14A8:\nxor ecx, ecx\nxor eax, eax\njmp loc_137C",
+ "ida_strip_pseudo": "_BYTE *__fastcall sub_12D0(const char *a1, const char *a2)\n{\n int v3; // ebx\n int v4; // eax\n _BYTE *v5; // rdx\n __m128i si128; // xmm3\n __m128i v7; // xmm2\n __int64 v8; // rax\n __m128i v9; // xmm0\n int v10; // eax\n __int64 v11; // rcx\n int v12; // esi\n __m128i v13; // xmm0\n int v14; // ecx\n int v15; // eax\n\n v3 = strlen(a1);\n v4 = strlen(a2);\n if ( v3 > v4 )\n v3 = v4;\n v5 = malloc(v3 + 1);\n if ( v5 )\n {\n if ( v3 > 0 )\n {\n if ( (unsigned int)(v3 - 1) <= 0xE )\n {\n v11 = 0LL;\n v10 = 0;\n goto LABEL_9;\n }\n si128 = _mm_load_si128((const __m128i *)&xmmword_20A0);\n v7 = _mm_load_si128((const __m128i *)&xmmword_20B0);\n v8 = 0LL;\n do\n {\n v9 = _mm_cmpeq_epi8(_mm_loadu_si128((const __m128i *)&a1[v8]), _mm_loadu_si128((const __m128i *)&a2[v8]));\n *(__m128i *)&v5[v8] = _mm_or_si128(_mm_andnot_si128(v9, v7), _mm_and_si128(si128, v9));\n v8 += 16LL;\n }\n while ( 16LL * ((unsigned int)v3 >> 4) != v8 );\n v10 = v3 & 0x7FFFFFF0;\n v11 = v3 & 0xFFFFFFF0;\n if ( v3 != (v3 & 0xFFFFFFF0) )\n {\nLABEL_9:\n v12 = v3 - v11;\n if ( (unsigned int)(v3 - v11 - 1) <= 6\n || (v13 = _mm_cmpeq_epi8(\n _mm_loadl_epi64((const __m128i *)&a1[v11]),\n _mm_loadl_epi64((const __m128i *)&a2[v11])),\n *(_QWORD *)&v5[v11] = _mm_or_si128(\n _mm_andnot_si128(v13, _mm_loadl_epi64((const __m128i *)&xmmword_20B0)),\n _mm_and_si128(_mm_loadl_epi64((const __m128i *)&xmmword_20A0), v13)).m128i_u64[0],\n v10 += v12 & 0xFFFFFFF8,\n (v12 & 7) != 0) )\n {\n v5[v10] = (a1[v10] != a2[v10]) + 48;\n if ( v3 > v10 + 1 )\n {\n v5[v10 + 1] = (a1[v10 + 1] != a2[v10 + 1]) + 48;\n if ( v3 > v10 + 2 )\n {\n v5[v10 + 2] = (a1[v10 + 2] != a2[v10 + 2]) + 48;\n if ( v3 > v10 + 3 )\n {\n v5[v10 + 3] = (a1[v10 + 3] != a2[v10 + 3]) + 48;\n if ( v3 > v10 + 4 )\n {\n v5[v10 + 4] = (a1[v10 + 4] != a2[v10 + 4]) + 48;\n v14 = v10 + 5;\n if ( v3 > v10 + 5 )\n {\n v15 = v10 + 6;\n v5[v14] = (a1[v14] != a2[v14]) + 48;\n if ( v3 > v15 )\n v5[v15] = (a1[v15] != a2[v15]) + 48;\n }\n }\n }\n }\n }\n }\n }\n }\n v5[v3] = 0;\n }\n return v5;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "uint8_t *sub_12D0(const char *a1, const char *a2) {\n int v3;\n int v4;\n uint8_t *v5;\n __m128i si128;\n __m128i v7;\n long long v8;\n __m128i v9;\n int v10;\n long long v11;\n int v12;\n __m128i v13;\n int v14;\n int v15;\n v3 = strlen(a1);\n v4 = strlen(a2);\n if (v3 > v4) v3 = v4;\n v5 = malloc(v3 + 1);\n if (v5) {\n if (v3 > 0) {\n if ((unsigned int)(v3 - 1) <= 14) {\n v11 = 0LL;\n v10 = 0;\n goto LABEL_9;\n }\n si128 = _mm_load_si128((const __m128i *)&xmmword_20A0);\n v7 = _mm_load_si128((const __m128i *)&xmmword_20B0);\n v8 = 0LL;\n do {\n v9 = _mm_cmpeq_epi8(_mm_loadu_si128((const __m128i *)&a1[v8]),\n _mm_loadu_si128((const __m128i *)&a2[v8]));\n *(__m128i *)&v5[v8] =\n _mm_or_si128(_mm_andnot_si128(v9, v7), _mm_and_si128(si128, v9));\n v8 += 16LL;\n } while (16LL * ((unsigned int)v3 >> 4) != v8);\n v10 = v3 & 2147483632;\n v11 = v3 & 4294967280;\n if (v3 != (v3 & 4294967280)) {\n LABEL_9:\n v12 = v3 - v11;\n if ((unsigned int)(v3 - v11 - 1) <= 6 ||\n (v13 = _mm_cmpeq_epi8(_mm_loadl_epi64((const __m128i *)&a1[v11]),\n _mm_loadl_epi64((const __m128i *)&a2[v11])),\n *(uint64_t *)&v5[v11] =\n _mm_or_si128(\n _mm_andnot_si128(\n v13, _mm_loadl_epi64((const __m128i *)&xmmword_20B0)),\n _mm_and_si128(\n _mm_loadl_epi64((const __m128i *)&xmmword_20A0), v13))\n .m128i_u64[0],\n v10 += v12 & 4294967288, (v12 & 7) != 0)) {\n v5[v10] = (a1[v10] != a2[v10]) + 48;\n if (v3 > v10 + 1) {\n v5[v10 + 1] = (a1[v10 + 1] != a2[v10 + 1]) + 48;\n if (v3 > v10 + 2) {\n v5[v10 + 2] = (a1[v10 + 2] != a2[v10 + 2]) + 48;\n if (v3 > v10 + 3) {\n v5[v10 + 3] = (a1[v10 + 3] != a2[v10 + 3]) + 48;\n if (v3 > v10 + 4) {\n v5[v10 + 4] = (a1[v10 + 4] != a2[v10 + 4]) + 48;\n v14 = v10 + 5;\n if (v3 > v10 + 5) {\n v15 = v10 + 6;\n v5[v14] = (a1[v14] != a2[v14]) + 48;\n if (v3 > v15) v5[v15] = (a1[v15] != a2[v15]) + 48;\n }\n }\n }\n }\n }\n }\n }\n }\n v5[v3] = 0;\n }\n return v5;\n}",
+ "ida_pseudo_norm": "uint8_t *func0(const char *a1, const char *a2) {\n int v3;\n int v4;\n uint8_t *v5;\n __m128i si128;\n __m128i v7;\n long long v8;\n __m128i v9;\n int v10;\n long long v11;\n int v12;\n __m128i v13;\n int v14;\n int v15;\n v3 = strlen(a1);\n v4 = strlen(a2);\n if (v3 > v4) v3 = v4;\n v5 = malloc(v3 + 1);\n if (v5) {\n if (v3 > 0) {\n if ((unsigned int)(v3 - 1) <= 14) {\n v11 = 0LL;\n v10 = 0;\n goto LABEL_9;\n }\n si128 = _mm_load_si128((const __m128i *)&xmmword_20A0);\n v7 = _mm_load_si128((const __m128i *)&xmmword_20B0);\n v8 = 0LL;\n do {\n v9 = _mm_cmpeq_epi8(_mm_loadu_si128((const __m128i *)&a1[v8]),\n _mm_loadu_si128((const __m128i *)&a2[v8]));\n *(__m128i *)&v5[v8] =\n _mm_or_si128(_mm_andnot_si128(v9, v7), _mm_and_si128(si128, v9));\n v8 += 16LL;\n } while (16LL * ((unsigned int)v3 >> 4) != v8);\n v10 = v3 & 2147483632;\n v11 = v3 & 4294967280;\n if (v3 != (v3 & 4294967280)) {\n LABEL_9:\n v12 = v3 - v11;\n if ((unsigned int)(v3 - v11 - 1) <= 6 ||\n (v13 = _mm_cmpeq_epi8(_mm_loadl_epi64((const __m128i *)&a1[v11]),\n _mm_loadl_epi64((const __m128i *)&a2[v11])),\n *(uint64_t *)&v5[v11] =\n _mm_or_si128(\n _mm_andnot_si128(\n v13, _mm_loadl_epi64((const __m128i *)&xmmword_20B0)),\n _mm_and_si128(\n _mm_loadl_epi64((const __m128i *)&xmmword_20A0), v13))\n .m128i_u64[0],\n v10 += v12 & 4294967288, (v12 & 7) != 0)) {\n v5[v10] = (a1[v10] != a2[v10]) + 48;\n if (v3 > v10 + 1) {\n v5[v10 + 1] = (a1[v10 + 1] != a2[v10 + 1]) + 48;\n if (v3 > v10 + 2) {\n v5[v10 + 2] = (a1[v10 + 2] != a2[v10 + 2]) + 48;\n if (v3 > v10 + 3) {\n v5[v10 + 3] = (a1[v10 + 3] != a2[v10 + 3]) + 48;\n if (v3 > v10 + 4) {\n v5[v10 + 4] = (a1[v10 + 4] != a2[v10 + 4]) + 48;\n v14 = v10 + 5;\n if (v3 > v10 + 5) {\n v15 = v10 + 6;\n v5[v14] = (a1[v14] != a2[v14]) + 48;\n if (v3 > v15) v5[v15] = (a1[v15] != a2[v15]) + 48;\n }\n }\n }\n }\n }\n }\n }\n }\n v5[v3] = 0;\n }\n return v5;\n}"
+ },
+ {
+ "index": "HumanEval-C-12",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "char *func0(char **strings, int count) {\n char *out = \"\";\n int longest_length = 0;\n for (int i = 0; i < count; i++) {\n int current_length = strlen(strings[i]);\n if (current_length > longest_length) {\n out = strings[i];\n longest_length = current_length;\n }\n }\n return out;\n}",
+ "test": "#include \n#include \n#include \n\nint main() {\n char *empty_array[] = {\"\"};\n char *array1[] = {\"x\", \"y\", \"z\"};\n char *array2[] = {\"x\", \"yyy\", \"zzzz\", \"www\", \"kkkk\", \"abc\"};\n\n assert(strcmp(func0(empty_array, 0), \"\") == 0);\n assert(strcmp(func0(array1, 3), \"x\") == 0);\n assert(strcmp(func0(array2, 6), \"zzzz\") == 0);\n\n return 0;\n}",
+ "opt": "O0",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\nmov rbp, rsp\nsub rsp, 30h\nmov [rbp+var_28], rdi\nmov [rbp+var_2C], esi\nlea rax, unk_2008\nmov [rbp+var_8], rax\nmov [rbp+var_14], 0\nmov [rbp+var_10], 0\njmp short loc_1226\nloc_11D7:\nmov eax, [rbp+var_10]\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+var_28]\nadd rax, rdx\nmov rax, [rax]\nmov rdi, rax; s\ncall _strlen\nmov [rbp+var_C], eax\nmov eax, [rbp+var_C]\ncmp eax, [rbp+var_14]\njle short loc_1222\nmov eax, [rbp+var_10]\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+var_28]\nadd rax, rdx\nmov rax, [rax]\nmov [rbp+var_8], rax\nmov eax, [rbp+var_C]\nmov [rbp+var_14], eax\nloc_1222:\nadd [rbp+var_10], 1\nloc_1226:\nmov eax, [rbp+var_10]\ncmp eax, [rbp+var_2C]\njl short loc_11D7\nmov rax, [rbp+var_8]\nleave\nretn",
+ "ida_pseudo": "void *__fastcall func0(__int64 a1, int a2)\n{\n int v3; // [rsp+1Ch] [rbp-14h]\n int i; // [rsp+20h] [rbp-10h]\n int v5; // [rsp+24h] [rbp-Ch]\n void *v6; // [rsp+28h] [rbp-8h]\n\n v6 = &unk_2008;\n v3 = 0;\n for ( i = 0; i < a2; ++i )\n {\n v5 = strlen(*(const char **)(8LL * i + a1));\n if ( v5 > v3 )\n {\n v6 = *(void **)(8LL * i + a1);\n v3 = v5;\n }\n }\n return v6;\n}",
+ "ida_strip_asm": "sub_11A9:\nendbr64\npush rbp\nmov rbp, rsp\nsub rsp, 30h\nmov [rbp+var_28], rdi\nmov [rbp+var_2C], esi\nlea rax, unk_2008\nmov [rbp+var_8], rax\nmov [rbp+var_14], 0\nmov [rbp+var_10], 0\njmp short loc_1226\nloc_11D7:\nmov eax, [rbp+var_10]\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+var_28]\nadd rax, rdx\nmov rax, [rax]\nmov rdi, rax; s\ncall _strlen\nmov [rbp+var_C], eax\nmov eax, [rbp+var_C]\ncmp eax, [rbp+var_14]\njle short loc_1222\nmov eax, [rbp+var_10]\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+var_28]\nadd rax, rdx\nmov rax, [rax]\nmov [rbp+var_8], rax\nmov eax, [rbp+var_C]\nmov [rbp+var_14], eax\nloc_1222:\nadd [rbp+var_10], 1\nloc_1226:\nmov eax, [rbp+var_10]\ncmp eax, [rbp+var_2C]\njl short loc_11D7\nmov rax, [rbp+var_8]\nleave\nretn",
+ "ida_strip_pseudo": "void *__fastcall sub_11A9(__int64 a1, int a2)\n{\n int v3; // [rsp+1Ch] [rbp-14h]\n int i; // [rsp+20h] [rbp-10h]\n int v5; // [rsp+24h] [rbp-Ch]\n void *v6; // [rsp+28h] [rbp-8h]\n\n v6 = &unk_2008;\n v3 = 0;\n for ( i = 0; i < a2; ++i )\n {\n v5 = strlen(*(const char **)(8LL * i + a1));\n if ( v5 > v3 )\n {\n v6 = *(void **)(8LL * i + a1);\n v3 = v5;\n }\n }\n return v6;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "void *sub_11A9(long long a1, int a2) {\n int v3;\n int i;\n int v5;\n void *v6;\n v6 = &unk_2008;\n v3 = 0;\n for (i = 0; i < a2; ++i) {\n v5 = strlen(*(const char **)(8LL * i + a1));\n if (v5 > v3) {\n v6 = *(void **)(8LL * i + a1);\n v3 = v5;\n }\n }\n return v6;\n}",
+ "ida_pseudo_norm": "void *func0(long long a1, int a2) {\n int v3;\n int i;\n int v5;\n void *v6;\n v6 = &unk_2008;\n v3 = 0;\n for (i = 0; i < a2; ++i) {\n v5 = strlen(*(const char **)(8LL * i + a1));\n if (v5 > v3) {\n v6 = *(void **)(8LL * i + a1);\n v3 = v5;\n }\n }\n return v6;\n}"
+ },
+ {
+ "index": "HumanEval-C-12",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "char *func0(char **strings, int count) {\n char *out = \"\";\n int longest_length = 0;\n for (int i = 0; i < count; i++) {\n int current_length = strlen(strings[i]);\n if (current_length > longest_length) {\n out = strings[i];\n longest_length = current_length;\n }\n }\n return out;\n}",
+ "test": "#include \n#include \n#include \n\nint main() {\n char *empty_array[] = {\"\"};\n char *array1[] = {\"x\", \"y\", \"z\"};\n char *array2[] = {\"x\", \"yyy\", \"zzzz\", \"www\", \"kkkk\", \"abc\"};\n\n assert(strcmp(func0(empty_array, 0), \"\") == 0);\n assert(strcmp(func0(array1, 3), \"x\") == 0);\n assert(strcmp(func0(array2, 6), \"zzzz\") == 0);\n\n return 0;\n}",
+ "opt": "O1",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r14\npush r13\npush r12\npush rbp\npush rbx\nlea r13, aAbc+3; \"\"\ntest esi, esi\njle short loc_11EC\nmov rbx, rdi\nmovsxd rsi, esi\nlea r14, [rdi+rsi*8]\nmov ebp, 0\nloc_11CF:\nmov r12, [rbx]\nmov rdi, r12; s\ncall _strlen\ncmp eax, ebp\ncmovg ebp, eax\ncmovg r13, r12\nadd rbx, 8\ncmp rbx, r14\njnz short loc_11CF\nloc_11EC:\nmov rax, r13\npop rbx\npop rbp\npop r12\npop r13\npop r14\nretn",
+ "ida_pseudo": "char *__fastcall func0(const char **a1, int a2)\n{\n char *v2; // r13\n const char **v3; // rbx\n int v4; // ebp\n const char *v5; // r12\n int v6; // eax\n\n v2 = \"\";\n if ( a2 > 0 )\n {\n v3 = a1;\n v4 = 0;\n do\n {\n v5 = *v3;\n v6 = strlen(*v3);\n if ( v6 > v4 )\n {\n v4 = v6;\n v2 = (char *)v5;\n }\n ++v3;\n }\n while ( v3 != &a1[a2] );\n }\n return v2;\n}",
+ "ida_strip_asm": "sub_11A9:\nendbr64\npush r14\npush r13\npush r12\npush rbp\npush rbx\nlea r13, aAbc+3; \"\"\ntest esi, esi\njle short loc_11EC\nmov rbx, rdi\nmovsxd rsi, esi\nlea r14, [rdi+rsi*8]\nmov ebp, 0\nloc_11CF:\nmov r12, [rbx]\nmov rdi, r12; s\ncall _strlen\ncmp eax, ebp\ncmovg ebp, eax\ncmovg r13, r12\nadd rbx, 8\ncmp rbx, r14\njnz short loc_11CF\nloc_11EC:\nmov rax, r13\npop rbx\npop rbp\npop r12\npop r13\npop r14\nretn",
+ "ida_strip_pseudo": "char *__fastcall sub_11A9(const char **a1, int a2)\n{\n char *v2; // r13\n const char **v3; // rbx\n int v4; // ebp\n const char *v5; // r12\n int v6; // eax\n\n v2 = \"\";\n if ( a2 > 0 )\n {\n v3 = a1;\n v4 = 0;\n do\n {\n v5 = *v3;\n v6 = strlen(*v3);\n if ( v6 > v4 )\n {\n v4 = v6;\n v2 = (char *)v5;\n }\n ++v3;\n }\n while ( v3 != &a1[a2] );\n }\n return v2;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "char *sub_11A9(const char **a1, int a2) {\n char *v2;\n const char **v3;\n int v4;\n const char *v5;\n int v6;\n v2 = \"\";\n if (a2 > 0) {\n v3 = a1;\n v4 = 0;\n do {\n v5 = *v3;\n v6 = strlen(*v3);\n if (v6 > v4) {\n v4 = v6;\n v2 = (char *)v5;\n }\n ++v3;\n } while (v3 != &a1[a2]);\n }\n return v2;\n}",
+ "ida_pseudo_norm": "char *func0(const char **a1, int a2) {\n char *v2;\n const char **v3;\n int v4;\n const char *v5;\n int v6;\n v2 = \"\";\n if (a2 > 0) {\n v3 = a1;\n v4 = 0;\n do {\n v5 = *v3;\n v6 = strlen(*v3);\n if (v6 > v4) {\n v4 = v6;\n v2 = (char *)v5;\n }\n ++v3;\n } while (v3 != &a1[a2]);\n }\n return v2;\n}"
+ },
+ {
+ "index": "HumanEval-C-12",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "char *func0(char **strings, int count) {\n char *out = \"\";\n int longest_length = 0;\n for (int i = 0; i < count; i++) {\n int current_length = strlen(strings[i]);\n if (current_length > longest_length) {\n out = strings[i];\n longest_length = current_length;\n }\n }\n return out;\n}",
+ "test": "#include \n#include \n#include \n\nint main() {\n char *empty_array[] = {\"\"};\n char *array1[] = {\"x\", \"y\", \"z\"};\n char *array2[] = {\"x\", \"yyy\", \"zzzz\", \"www\", \"kkkk\", \"abc\"};\n\n assert(strcmp(func0(empty_array, 0), \"\") == 0);\n assert(strcmp(func0(array1, 3), \"x\") == 0);\n assert(strcmp(func0(array2, 6), \"zzzz\") == 0);\n\n return 0;\n}",
+ "opt": "O2",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r14\nlea r14, aAbc+3; \"\"\npush r13\npush r12\npush rbp\npush rbx\ntest esi, esi\njle short loc_1365\nmovsxd rsi, esi\nmov rbx, rdi\nxor ebp, ebp\nlea r13, [rdi+rsi*8]\nnop dword ptr [rax+rax+00h]\nloc_1348:\nmov r12, [rbx]\nmov rdi, r12; s\ncall _strlen\ncmp eax, ebp\ncmovg ebp, eax\ncmovg r14, r12\nadd rbx, 8\ncmp rbx, r13\njnz short loc_1348\nloc_1365:\npop rbx\nmov rax, r14\npop rbp\npop r12\npop r13\npop r14\nretn",
+ "ida_pseudo": "char *__fastcall func0(const char **a1, int a2)\n{\n char *v2; // r14\n const char **v3; // rbx\n int v4; // ebp\n const char *v5; // r12\n int v6; // eax\n\n v2 = \"\";\n if ( a2 > 0 )\n {\n v3 = a1;\n v4 = 0;\n do\n {\n v5 = *v3;\n v6 = strlen(*v3);\n if ( v6 > v4 )\n {\n v4 = v6;\n v2 = (char *)v5;\n }\n ++v3;\n }\n while ( v3 != &a1[a2] );\n }\n return v2;\n}",
+ "ida_strip_asm": "sub_1320:\nendbr64\npush r14\nlea r14, aAbc+3; \"\"\npush r13\npush r12\npush rbp\npush rbx\ntest esi, esi\njle short loc_1365\nmovsxd rsi, esi\nmov rbx, rdi\nxor ebp, ebp\nlea r13, [rdi+rsi*8]\nnop dword ptr [rax+rax+00h]\nloc_1348:\nmov r12, [rbx]\nmov rdi, r12; s\ncall _strlen\ncmp eax, ebp\ncmovg ebp, eax\ncmovg r14, r12\nadd rbx, 8\ncmp rbx, r13\njnz short loc_1348\nloc_1365:\npop rbx\nmov rax, r14\npop rbp\npop r12\npop r13\npop r14\nretn",
+ "ida_strip_pseudo": "char *__fastcall sub_1320(const char **a1, int a2)\n{\n char *v2; // r14\n const char **v3; // rbx\n int v4; // ebp\n const char *v5; // r12\n int v6; // eax\n\n v2 = \"\";\n if ( a2 > 0 )\n {\n v3 = a1;\n v4 = 0;\n do\n {\n v5 = *v3;\n v6 = strlen(*v3);\n if ( v6 > v4 )\n {\n v4 = v6;\n v2 = (char *)v5;\n }\n ++v3;\n }\n while ( v3 != &a1[a2] );\n }\n return v2;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "char *sub_1320(const char **a1, int a2) {\n char *v2;\n const char **v3;\n int v4;\n const char *v5;\n int v6;\n v2 = \"\";\n if (a2 > 0) {\n v3 = a1;\n v4 = 0;\n do {\n v5 = *v3;\n v6 = strlen(*v3);\n if (v6 > v4) {\n v4 = v6;\n v2 = (char *)v5;\n }\n ++v3;\n } while (v3 != &a1[a2]);\n }\n return v2;\n}",
+ "ida_pseudo_norm": "char *func0(const char **a1, int a2) {\n char *v2;\n const char **v3;\n int v4;\n const char *v5;\n int v6;\n v2 = \"\";\n if (a2 > 0) {\n v3 = a1;\n v4 = 0;\n do {\n v5 = *v3;\n v6 = strlen(*v3);\n if (v6 > v4) {\n v4 = v6;\n v2 = (char *)v5;\n }\n ++v3;\n } while (v3 != &a1[a2]);\n }\n return v2;\n}"
+ },
+ {
+ "index": "HumanEval-C-12",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n",
+ "func": "char *func0(char **strings, int count) {\n char *out = \"\";\n int longest_length = 0;\n for (int i = 0; i < count; i++) {\n int current_length = strlen(strings[i]);\n if (current_length > longest_length) {\n out = strings[i];\n longest_length = current_length;\n }\n }\n return out;\n}",
+ "test": "#include \n#include \n#include \n\nint main() {\n char *empty_array[] = {\"\"};\n char *array1[] = {\"x\", \"y\", \"z\"};\n char *array2[] = {\"x\", \"yyy\", \"zzzz\", \"www\", \"kkkk\", \"abc\"};\n\n assert(strcmp(func0(empty_array, 0), \"\") == 0);\n assert(strcmp(func0(array1, 3), \"x\") == 0);\n assert(strcmp(func0(array2, 6), \"zzzz\") == 0);\n\n return 0;\n}",
+ "opt": "O3",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r14\nlea r14, unk_2004\npush r13\npush r12\npush rbp\npush rbx\ntest esi, esi\njle short loc_11A5\nmovsxd rsi, esi\nmov rbx, rdi\nxor ebp, ebp\nlea r13, [rdi+rsi*8]\nnop dword ptr [rax+rax+00h]\nloc_1188:\nmov r12, [rbx]\nmov rdi, r12; s\ncall _strlen\ncmp eax, ebp\ncmovg ebp, eax\ncmovg r14, r12\nadd rbx, 8\ncmp rbx, r13\njnz short loc_1188\nloc_11A5:\npop rbx\nmov rax, r14\npop rbp\npop r12\npop r13\npop r14\nretn",
+ "ida_pseudo": "const char *__fastcall func0(const char **a1, int a2)\n{\n const char *v2; // r14\n const char **v3; // rbx\n int v4; // ebp\n const char *v5; // r12\n int v6; // eax\n\n v2 = (const char *)&unk_2004;\n if ( a2 > 0 )\n {\n v3 = a1;\n v4 = 0;\n do\n {\n v5 = *v3;\n v6 = strlen(*v3);\n if ( v6 > v4 )\n {\n v4 = v6;\n v2 = v5;\n }\n ++v3;\n }\n while ( v3 != &a1[a2] );\n }\n return v2;\n}",
+ "ida_strip_asm": "sub_1160:\nendbr64\npush r14\nlea r14, unk_2004\npush r13\npush r12\npush rbp\npush rbx\ntest esi, esi\njle short loc_11A5\nmovsxd rsi, esi\nmov rbx, rdi\nxor ebp, ebp\nlea r13, [rdi+rsi*8]\nnop dword ptr [rax+rax+00h]\nloc_1188:\nmov r12, [rbx]\nmov rdi, r12; s\ncall _strlen\ncmp eax, ebp\ncmovg ebp, eax\ncmovg r14, r12\nadd rbx, 8\ncmp rbx, r13\njnz short loc_1188\nloc_11A5:\npop rbx\nmov rax, r14\npop rbp\npop r12\npop r13\npop r14\nretn",
+ "ida_strip_pseudo": "const char *__fastcall sub_1160(const char **a1, int a2)\n{\n const char *v2; // r14\n const char **v3; // rbx\n int v4; // ebp\n const char *v5; // r12\n int v6; // eax\n\n v2 = (const char *)&unk_2004;\n if ( a2 > 0 )\n {\n v3 = a1;\n v4 = 0;\n do\n {\n v5 = *v3;\n v6 = strlen(*v3);\n if ( v6 > v4 )\n {\n v4 = v6;\n v2 = v5;\n }\n ++v3;\n }\n while ( v3 != &a1[a2] );\n }\n return v2;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "const char *sub_1160(const char **a1, int a2) {\n const char *v2;\n const char **v3;\n int v4;\n const char *v5;\n int v6;\n v2 = (const char *)&unk_2004;\n if (a2 > 0) {\n v3 = a1;\n v4 = 0;\n do {\n v5 = *v3;\n v6 = strlen(*v3);\n if (v6 > v4) {\n v4 = v6;\n v2 = v5;\n }\n ++v3;\n } while (v3 != &a1[a2]);\n }\n return v2;\n}",
+ "ida_pseudo_norm": "const char *func0(const char **a1, int a2) {\n const char *v2;\n const char **v3;\n int v4;\n const char *v5;\n int v6;\n v2 = (const char *)&unk_2004;\n if (a2 > 0) {\n v3 = a1;\n v4 = 0;\n do {\n v5 = *v3;\n v6 = strlen(*v3);\n if (v6 > v4) {\n v4 = v6;\n v2 = v5;\n }\n ++v3;\n } while (v3 != &a1[a2]);\n }\n return v2;\n}"
+ },
+ {
+ "index": "HumanEval-C-13",
+ "func_name": "func0",
+ "func_dep": "#include \n",
+ "func": "int func0(int a, int b) {\n while (b != 0) {\n int m = a % b;\n a = b;\n b = m;\n }\n return a;\n}",
+ "test": "#include \n\nint main() {\n assert(func0(3, 7) == 1);\n assert(func0(10, 15) == 5);\n assert(func0(49, 14) == 7);\n assert(func0(144, 60) == 12);\n\n return 0;\n}",
+ "opt": "O0",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\nmov rbp, rsp\nmov [rbp+var_14], edi\nmov [rbp+var_18], esi\njmp short loc_116F\nloc_1159:\nmov eax, [rbp+var_14]\ncdq\nidiv [rbp+var_18]\nmov [rbp+var_4], edx\nmov eax, [rbp+var_18]\nmov [rbp+var_14], eax\nmov eax, [rbp+var_4]\nmov [rbp+var_18], eax\nloc_116F:\ncmp [rbp+var_18], 0\njnz short loc_1159\nmov eax, [rbp+var_14]\npop rbp\nretn",
+ "ida_pseudo": "__int64 __fastcall func0(int a1, int a2)\n{\n int v5; // [rsp+14h] [rbp-4h]\n\n while ( a2 )\n {\n v5 = a1 % a2;\n a1 = a2;\n a2 = v5;\n }\n return (unsigned int)a1;\n}",
+ "ida_strip_asm": "sub_1149:\nendbr64\npush rbp\nmov rbp, rsp\nmov [rbp+var_14], edi\nmov [rbp+var_18], esi\njmp short loc_116F\nloc_1159:\nmov eax, [rbp+var_14]\ncdq\nidiv [rbp+var_18]\nmov [rbp+var_4], edx\nmov eax, [rbp+var_18]\nmov [rbp+var_14], eax\nmov eax, [rbp+var_4]\nmov [rbp+var_18], eax\nloc_116F:\ncmp [rbp+var_18], 0\njnz short loc_1159\nmov eax, [rbp+var_14]\npop rbp\nretn",
+ "ida_strip_pseudo": "__int64 __fastcall sub_1149(int a1, int a2)\n{\n int v5; // [rsp+14h] [rbp-4h]\n\n while ( a2 )\n {\n v5 = a1 % a2;\n a1 = a2;\n a2 = v5;\n }\n return (unsigned int)a1;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "long long sub_1149(int a1, int a2) {\n int v5;\n while (a2) {\n v5 = a1 % a2;\n a1 = a2;\n a2 = v5;\n }\n return (unsigned int)a1;\n}",
+ "ida_pseudo_norm": "long long func0(int a1, int a2) {\n int v5;\n while (a2) {\n v5 = a1 % a2;\n a1 = a2;\n a2 = v5;\n }\n return (unsigned int)a1;\n}"
+ },
+ {
+ "index": "HumanEval-C-14",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char **func0(const char *str, int *count) {\n int len = strlen(str);\n char **out = malloc(len * sizeof(char *));\n char *current = malloc(len + 1);\n current[0] = '\\0';\n for (int i = 0; i < len; ++i) {\n size_t current_len = strlen(current);\n current = realloc(current, current_len + 2);\n current[current_len] = str[i];\n current[current_len + 1] = '\\0';\n out[i] = malloc(strlen(current) + 1);\n strcpy(out[i], current);\n }\n free(current);\n *count = len;\n return out;\n}",
+ "test": "#include \n#include \n\nint issame(char **a, int a_size, char **b, int b_size) {\n if (a_size != b_size) return 0;\n for (int i = 0; i < a_size; i++) {\n if (strcmp(a[i], b[i]) != 0) return 0;\n }\n return 1;\n}\n\nvoid free_prefixes(char **prefixes, int count) {\n for (int i = 0; i < count; i++) {\n free(prefixes[i]);\n }\n free(prefixes);\n}\n\nint main() {\n int count;\n char **result;\n \n result = func0(\"\", &count);\n assert(issame(result, 0, NULL, 0));\n free_prefixes(result, count);\n\n char *expected1[] = {\"a\", \"as\", \"asd\", \"asdf\", \"asdfg\", \"asdfgh\"};\n result = func0(\"asdfgh\", &count);\n assert(issame(result, count, expected1, 6));\n free_prefixes(result, count);\n\n char *expected2[] = {\"W\", \"WW\", \"WWW\"};\n result = func0(\"WWW\", &count);\n assert(issame(result, count, expected2, 3));\n free_prefixes(result, count);\n\n return 0;\n}",
+ "opt": "O0",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush rbp\nmov rbp, rsp\npush rbx\nsub rsp, 38h\nmov [rbp+s], rdi\nmov [rbp+var_40], rsi\nmov rax, [rbp+s]\nmov rdi, rax; s\ncall _strlen\nmov [rbp+var_2C], eax\nmov eax, [rbp+var_2C]\ncdqe\nshl rax, 3\nmov rdi, rax; size\ncall _malloc\nmov [rbp+var_20], rax\nmov eax, [rbp+var_2C]\nadd eax, 1\ncdqe\nmov rdi, rax; size\ncall _malloc\nmov [rbp+src], rax\nmov rax, [rbp+src]\nmov byte ptr [rax], 0\nmov [rbp+var_30], 0\njmp loc_133E\nloc_1289:\nmov rax, [rbp+src]\nmov rdi, rax; s\ncall _strlen\nmov [rbp+var_18], rax\nmov rax, [rbp+var_18]\nlea rdx, [rax+2]\nmov rax, [rbp+src]\nmov rsi, rdx; size\nmov rdi, rax; ptr\ncall _realloc\nmov [rbp+src], rax\nmov eax, [rbp+var_30]\nmovsxd rdx, eax\nmov rax, [rbp+s]\nadd rax, rdx\nmov rcx, [rbp+src]\nmov rdx, [rbp+var_18]\nadd rdx, rcx\nmovzx eax, byte ptr [rax]\nmov [rdx], al\nmov rax, [rbp+var_18]\nlea rdx, [rax+1]\nmov rax, [rbp+src]\nadd rax, rdx\nmov byte ptr [rax], 0\nmov rax, [rbp+src]\nmov rdi, rax; s\ncall _strlen\nadd rax, 1\nmov edx, [rbp+var_30]\nmovsxd rdx, edx\nlea rcx, ds:0[rdx*8]\nmov rdx, [rbp+var_20]\nlea rbx, [rcx+rdx]\nmov rdi, rax; size\ncall _malloc\nmov [rbx], rax\nmov eax, [rbp+var_30]\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+var_20]\nadd rax, rdx\nmov rax, [rax]\nmov rdx, [rbp+src]\nmov rsi, rdx; src\nmov rdi, rax; dest\ncall _strcpy\nadd [rbp+var_30], 1\nloc_133E:\nmov eax, [rbp+var_30]\ncmp eax, [rbp+var_2C]\njl loc_1289\nmov rax, [rbp+src]\nmov rdi, rax; ptr\ncall _free\nmov rax, [rbp+var_40]\nmov edx, [rbp+var_2C]\nmov [rax], edx\nmov rax, [rbp+var_20]\nmov rbx, [rbp+var_8]\nleave\nretn",
+ "ida_pseudo": "_QWORD *__fastcall func0(const char *a1, _DWORD *a2)\n{\n size_t v2; // rax\n int i; // [rsp+10h] [rbp-30h]\n int v5; // [rsp+14h] [rbp-2Ch]\n char *src; // [rsp+18h] [rbp-28h]\n _QWORD *v7; // [rsp+20h] [rbp-20h]\n size_t v8; // [rsp+28h] [rbp-18h]\n\n v5 = strlen(a1);\n v7 = malloc(8LL * v5);\n src = (char *)malloc(v5 + 1);\n *src = 0;\n for ( i = 0; i < v5; ++i )\n {\n v8 = strlen(src);\n src = (char *)realloc(src, v8 + 2);\n src[v8] = a1[i];\n src[v8 + 1] = 0;\n v2 = strlen(src);\n v7[i] = malloc(v2 + 1);\n strcpy((char *)v7[i], src);\n }\n free(src);\n *a2 = v5;\n return v7;\n}",
+ "ida_strip_asm": "sub_1229:\nendbr64\npush rbp\nmov rbp, rsp\npush rbx\nsub rsp, 38h\nmov [rbp+s], rdi\nmov [rbp+var_40], rsi\nmov rax, [rbp+s]\nmov rdi, rax; s\ncall _strlen\nmov [rbp+var_2C], eax\nmov eax, [rbp+var_2C]\ncdqe\nshl rax, 3\nmov rdi, rax; size\ncall _malloc\nmov [rbp+var_20], rax\nmov eax, [rbp+var_2C]\nadd eax, 1\ncdqe\nmov rdi, rax; size\ncall _malloc\nmov [rbp+src], rax\nmov rax, [rbp+src]\nmov byte ptr [rax], 0\nmov [rbp+var_30], 0\njmp loc_133E\nloc_1289:\nmov rax, [rbp+src]\nmov rdi, rax; s\ncall _strlen\nmov [rbp+var_18], rax\nmov rax, [rbp+var_18]\nlea rdx, [rax+2]\nmov rax, [rbp+src]\nmov rsi, rdx; size\nmov rdi, rax; ptr\ncall _realloc\nmov [rbp+src], rax\nmov eax, [rbp+var_30]\nmovsxd rdx, eax\nmov rax, [rbp+s]\nadd rax, rdx\nmov rcx, [rbp+src]\nmov rdx, [rbp+var_18]\nadd rdx, rcx\nmovzx eax, byte ptr [rax]\nmov [rdx], al\nmov rax, [rbp+var_18]\nlea rdx, [rax+1]\nmov rax, [rbp+src]\nadd rax, rdx\nmov byte ptr [rax], 0\nmov rax, [rbp+src]\nmov rdi, rax; s\ncall _strlen\nadd rax, 1\nmov edx, [rbp+var_30]\nmovsxd rdx, edx\nlea rcx, ds:0[rdx*8]\nmov rdx, [rbp+var_20]\nlea rbx, [rcx+rdx]\nmov rdi, rax; size\ncall _malloc\nmov [rbx], rax\nmov eax, [rbp+var_30]\ncdqe\nlea rdx, ds:0[rax*8]\nmov rax, [rbp+var_20]\nadd rax, rdx\nmov rax, [rax]\nmov rdx, [rbp+src]\nmov rsi, rdx; src\nmov rdi, rax; dest\ncall _strcpy\nadd [rbp+var_30], 1\nloc_133E:\nmov eax, [rbp+var_30]\ncmp eax, [rbp+var_2C]\njl loc_1289\nmov rax, [rbp+src]\nmov rdi, rax; ptr\ncall _free\nmov rax, [rbp+var_40]\nmov edx, [rbp+var_2C]\nmov [rax], edx\nmov rax, [rbp+var_20]\nmov rbx, [rbp+var_8]\nleave\nretn",
+ "ida_strip_pseudo": "_QWORD *__fastcall sub_1229(const char *a1, _DWORD *a2)\n{\n size_t v2; // rax\n int i; // [rsp+10h] [rbp-30h]\n int v5; // [rsp+14h] [rbp-2Ch]\n char *src; // [rsp+18h] [rbp-28h]\n _QWORD *v7; // [rsp+20h] [rbp-20h]\n size_t v8; // [rsp+28h] [rbp-18h]\n\n v5 = strlen(a1);\n v7 = malloc(8LL * v5);\n src = (char *)malloc(v5 + 1);\n *src = 0;\n for ( i = 0; i < v5; ++i )\n {\n v8 = strlen(src);\n src = (char *)realloc(src, v8 + 2);\n src[v8] = a1[i];\n src[v8 + 1] = 0;\n v2 = strlen(src);\n v7[i] = malloc(v2 + 1);\n strcpy((char *)v7[i], src);\n }\n free(src);\n *a2 = v5;\n return v7;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "uint64_t *sub_1229(const char *a1, uint32_t *a2) {\n unsigned int v2;\n int i;\n int v5;\n char *src;\n uint64_t *v7;\n unsigned int v8;\n v5 = strlen(a1);\n v7 = malloc(8LL * v5);\n src = (char *)malloc(v5 + 1);\n *src = 0;\n for (i = 0; i < v5; ++i) {\n v8 = strlen(src);\n src = (char *)realloc(src, v8 + 2);\n src[v8] = a1[i];\n src[v8 + 1] = 0;\n v2 = strlen(src);\n v7[i] = malloc(v2 + 1);\n strcpy((char *)v7[i], src);\n }\n free(src);\n *a2 = v5;\n return v7;\n}",
+ "ida_pseudo_norm": "uint64_t *func0(const char *a1, uint32_t *a2) {\n unsigned int v2;\n int i;\n int v5;\n char *src;\n uint64_t *v7;\n unsigned int v8;\n v5 = strlen(a1);\n v7 = malloc(8LL * v5);\n src = (char *)malloc(v5 + 1);\n *src = 0;\n for (i = 0; i < v5; ++i) {\n v8 = strlen(src);\n src = (char *)realloc(src, v8 + 2);\n src[v8] = a1[i];\n src[v8 + 1] = 0;\n v2 = strlen(src);\n v7[i] = malloc(v2 + 1);\n strcpy((char *)v7[i], src);\n }\n free(src);\n *a2 = v5;\n return v7;\n}"
+ },
+ {
+ "index": "HumanEval-C-14",
+ "func_name": "func0",
+ "func_dep": "#include \n#include \n#include \n",
+ "func": "char **func0(const char *str, int *count) {\n int len = strlen(str);\n char **out = malloc(len * sizeof(char *));\n char *current = malloc(len + 1);\n current[0] = '\\0';\n for (int i = 0; i < len; ++i) {\n size_t current_len = strlen(current);\n current = realloc(current, current_len + 2);\n current[current_len] = str[i];\n current[current_len + 1] = '\\0';\n out[i] = malloc(strlen(current) + 1);\n strcpy(out[i], current);\n }\n free(current);\n *count = len;\n return out;\n}",
+ "test": "#include \n#include \n\nint issame(char **a, int a_size, char **b, int b_size) {\n if (a_size != b_size) return 0;\n for (int i = 0; i < a_size; i++) {\n if (strcmp(a[i], b[i]) != 0) return 0;\n }\n return 1;\n}\n\nvoid free_prefixes(char **prefixes, int count) {\n for (int i = 0; i < count; i++) {\n free(prefixes[i]);\n }\n free(prefixes);\n}\n\nint main() {\n int count;\n char **result;\n \n result = func0(\"\", &count);\n assert(issame(result, 0, NULL, 0));\n free_prefixes(result, count);\n\n char *expected1[] = {\"a\", \"as\", \"asd\", \"asdf\", \"asdfg\", \"asdfgh\"};\n result = func0(\"asdfgh\", &count);\n assert(issame(result, count, expected1, 6));\n free_prefixes(result, count);\n\n char *expected2[] = {\"W\", \"WW\", \"WWW\"};\n result = func0(\"WWW\", &count);\n assert(issame(result, count, expected2, 3));\n free_prefixes(result, count);\n\n return 0;\n}",
+ "opt": "O1",
+ "language": "c",
+ "asm": "",
+ "ida_asm": "func0:\nendbr64\npush r15\npush r14\npush r13\npush r12\npush rbp\npush rbx\nsub rsp, 18h\nmov r14, rdi\nmov [rsp+48h+var_48], rsi\ncall _strlen\nmov r15, rax\nmov [rsp+48h+var_40], rax\nmovsxd rdi, eax\nshl rdi, 3; size\ncall _malloc\nmov r13, rax\nlea edi, [r15+1]\nmovsxd rdi, edi; size\ncall _malloc\nmov rbx, rax\nmov byte ptr [rax], 0\ntest r15d, r15d\njle short loc_12D9\nlea r15d, [r15-1]\nmov r12d, 0\nloc_127F:\nmov rdi, rbx; s\ncall _strlen\nmov rbp, rax\nlea rsi, [rax+2]; size\nmov rdi, rbx; ptr\ncall _realloc\nmov rbx, rax\nmovzx eax, byte ptr [r14+r12]\nmov [rbx+rbp], al\nmov byte ptr [rbx+rbp+1], 0\nmov rdi, rbx; s\ncall _strlen\nlea rbp, [rax+1]\nmov rdi, rbp; size\ncall _malloc\nmov rdi, rax\nmov [r13+r12*8+0], rax\nmov rdx, rbp\nmov rsi, rbx\ncall ___strcpy_chk\nmov rax, r12\nadd r12, 1\ncmp rax, r15\njnz short loc_127F\nloc_12D9:\nmov rdi, rbx; ptr\ncall _free\nmov rax, [rsp+48h+var_48]\nmov ecx, dword ptr [rsp+48h+var_40]\nmov [rax], ecx\nmov rax, r13\nadd rsp, 18h\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn",
+ "ida_pseudo": "_QWORD *__fastcall func0(const char *a1, int *a2)\n{\n int v2; // r15d\n _QWORD *v3; // r13\n char *v4; // rbx\n __int64 v5; // r15\n __int64 v6; // r12\n size_t v7; // rbp\n size_t v8; // rbp\n void *v9; // rax\n __int64 v10; // rax\n int v12; // [rsp+8h] [rbp-40h]\n\n v2 = strlen(a1);\n v12 = v2;\n v3 = malloc(8LL * v2);\n v4 = (char *)malloc(v2 + 1);\n *v4 = 0;\n if ( v2 > 0 )\n {\n v5 = (unsigned int)(v2 - 1);\n v6 = 0LL;\n do\n {\n v7 = strlen(v4);\n v4 = (char *)realloc(v4, v7 + 2);\n *(_WORD *)&v4[v7] = (unsigned __int8)a1[v6];\n v8 = strlen(v4) + 1;\n v9 = malloc(v8);\n v3[v6] = v9;\n __strcpy_chk(v9, v4, v8);\n v10 = v6++;\n }\n while ( v10 != v5 );\n }\n free(v4);\n *a2 = v12;\n return v3;\n}",
+ "ida_strip_asm": "sub_1229:\nendbr64\npush r15\npush r14\npush r13\npush r12\npush rbp\npush rbx\nsub rsp, 18h\nmov r14, rdi\nmov [rsp+48h+var_48], rsi\ncall _strlen\nmov r15, rax\nmov [rsp+48h+var_40], rax\nmovsxd rdi, eax\nshl rdi, 3; size\ncall _malloc\nmov r13, rax\nlea edi, [r15+1]\nmovsxd rdi, edi; size\ncall _malloc\nmov rbx, rax\nmov byte ptr [rax], 0\ntest r15d, r15d\njle short loc_12D9\nlea r15d, [r15-1]\nmov r12d, 0\nloc_127F:\nmov rdi, rbx; s\ncall _strlen\nmov rbp, rax\nlea rsi, [rax+2]; size\nmov rdi, rbx; ptr\ncall _realloc\nmov rbx, rax\nmovzx eax, byte ptr [r14+r12]\nmov [rbx+rbp], al\nmov byte ptr [rbx+rbp+1], 0\nmov rdi, rbx; s\ncall _strlen\nlea rbp, [rax+1]\nmov rdi, rbp; size\ncall _malloc\nmov rdi, rax\nmov [r13+r12*8+0], rax\nmov rdx, rbp\nmov rsi, rbx\ncall ___strcpy_chk\nmov rax, r12\nadd r12, 1\ncmp rax, r15\njnz short loc_127F\nloc_12D9:\nmov rdi, rbx; ptr\ncall _free\nmov rax, [rsp+48h+var_48]\nmov ecx, dword ptr [rsp+48h+var_40]\nmov [rax], ecx\nmov rax, r13\nadd rsp, 18h\npop rbx\npop rbp\npop r12\npop r13\npop r14\npop r15\nretn",
+ "ida_strip_pseudo": "_QWORD *__fastcall sub_1229(const char *a1, int *a2)\n{\n int v2; // r15d\n _QWORD *v3; // r13\n char *v4; // rbx\n __int64 v5; // r15\n __int64 v6; // r12\n size_t v7; // rbp\n size_t v8; // rbp\n void *v9; // rax\n __int64 v10; // rax\n int v12; // [rsp+8h] [rbp-40h]\n\n v2 = strlen(a1);\n v12 = v2;\n v3 = malloc(8LL * v2);\n v4 = (char *)malloc(v2 + 1);\n *v4 = 0;\n if ( v2 > 0 )\n {\n v5 = (unsigned int)(v2 - 1);\n v6 = 0LL;\n do\n {\n v7 = strlen(v4);\n v4 = (char *)realloc(v4, v7 + 2);\n *(_WORD *)&v4[v7] = (unsigned __int8)a1[v6];\n v8 = strlen(v4) + 1;\n v9 = malloc(v8);\n v3[v6] = v9;\n __strcpy_chk(v9, v4, v8);\n v10 = v6++;\n }\n while ( v10 != v5 );\n }\n free(v4);\n *a2 = v12;\n return v3;\n}",
+ "func_name_ori": "func0",
+ "ida_strip_pseudo_norm": "uint64_t *sub_1229(const char *a1, int *a2) {\n int v2;\n uint64_t *v3;\n char *v4;\n long long v5;\n long long v6;\n unsigned int v7;\n unsigned int v8;\n void *v9;\n long long v10;\n int v12;\n v2 = strlen(a1);\n v12 = v2;\n v3 = malloc(8LL * v2);\n v4 = (char *)malloc(v2 + 1);\n *v4 = 0;\n if (v2 > 0) {\n v5 = (unsigned int)(v2 - 1);\n v6 = 0LL;\n do {\n v7 = strlen(v4);\n v4 = (char *)realloc(v4, v7 + 2);\n *(unsigned short *)&v4[v7] = (unsigned char)a1[v6];\n v8 = strlen(v4) + 1;\n v9 = malloc(v8);\n v3[v6] = v9;\n __strcpy_chk(v9, v4, v8);\n v10 = v6++;\n } while (v10 != v5);\n }\n free(v4);\n *a2 = v12;\n return v3;\n}",
+ "ida_pseudo_norm": "uint64_t *func0(const char *a1, int *a2) {\n int v2;\n uint64_t *v3;\n char *v4;\n long long v5;\n long long v6;\n unsigned int v7;\n unsigned int v8;\n void *v9;\n long long v10;\n int v12;\n v2 = strlen(a1);\n v12 = v2;\n v3 = malloc(8LL * v2);\n v4 = (char *)malloc(v2 + 1);\n *v4 = 0;\n if (v2 > 0) {\n v5 = (unsigned int)(v2 - 1);\n v6 = 0LL;\n do {\n v7 = strlen(v4);\n v4 = (char *)realloc(v4, v7 + 2);\n *(unsigned short *)&v4[v7] = (unsigned char)a1[v6];\n v8 = strlen(v4) + 1;\n v9 = malloc(v8);\n v3[v6] = v9;\n __strcpy_chk(v9, v4, v8);\n v10 = v6++;\n } while (v10 != v5);\n }\n free(v4);\n *a2 = v12;\n return v3;\n}"
+ },
+ {
+ "index": "HumanEval-C-14",
+ "func_name": "func0",
+ "func_dep": "#include \n#include