{
  "asm": [
    {
      "labels": [],
      "source": null,
      "text": "; https://godbolt.org/z/87G9vf3qq"
    },
    {
      "labels": [],
      "source": null,
      "text": "# GNU C++23 (Compiler-Explorer-Build-gcc-53c64dc5a8fb3d85d67b2f7555a11d9afc4dbee1-binutils-2.44) version 16.0.0 20250810 (experimental) (x86_64-linux-gnu)"
    },
    {
      "labels": [],
      "source": null,
      "text": "#       compiled by GNU C version 11.4.0, GMP version 6.3.0, MPFR version 4.2.2, MPC version 1.3.1, isl version isl-0.24-GMP"
    },
    {
      "labels": [],
      "source": null,
      "text": ""
    },
    {
      "labels": [],
      "source": null,
      "text": "# GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096"
    },
    {
      "labels": [],
      "source": null,
      "text": "# options passed: -masm=intel -mtune=generic -march=x86-64 -g -O3 -std=c++23"
    },
    {
      "labels": [],
      "source": null,
      "text": "\"_Z8functionib.constprop.0\":"
    },
    {
      "labels": [],
      "source": null,
      "text": "# /app/example.cpp:3:         return num * num;"
    },
    {
      "labels": [],
      "source": {
        "column": 22,
        "file": null,
        "line": 3
      },
      "text": "        imul    edi, edi        # _2, num"
    },
    {
      "labels": [],
      "source": null,
      "text": "# /app/example.cpp:8: }"
    },
    {
      "labels": [],
      "source": {
        "column": 1,
        "file": null,
        "line": 8
      },
      "text": "        mov     eax, edi  #, _2"
    },
    {
      "labels": [],
      "source": {
        "column": 1,
        "file": null,
        "line": 8
      },
      "text": "        ret"
    },
    {
      "labels": [],
      "source": null,
      "text": "\"_Z8functionib.constprop.1\":"
    },
    {
      "labels": [],
      "source": null,
      "text": "# /app/example.cpp:6:         return num + num;"
    },
    {
      "labels": [],
      "source": {
        "column": 22,
        "file": null,
        "line": 6
      },
      "text": "        lea     eax, [rdi+rdi]    # _3,"
    },
    {
      "labels": [],
      "source": null,
      "text": "# /app/example.cpp:8: }"
    },
    {
      "labels": [],
      "source": {
        "column": 1,
        "file": null,
        "line": 8
      },
      "text": "        ret"
    },
    {
      "labels": [],
      "source": null,
      "text": "\"_Z8functionib\":"
    },
    {
      "labels": [],
      "source": null,
      "text": "# /app/example.cpp:3:         return num * num;"
    },
    {
      "labels": [],
      "source": {
        "column": 22,
        "file": null,
        "line": 3
      },
      "text": "        mov     eax, edi  # tmp103, num"
    },
    {
      "labels": [],
      "source": {
        "column": 22,
        "file": null,
        "line": 3
      },
      "text": "        imul    eax, edi        # tmp103, num"
    },
    {
      "labels": [],
      "source": {
        "column": 22,
        "file": null,
        "line": 3
      },
      "text": "        add     edi, edi  # tmp102"
    },
    {
      "labels": [],
      "source": {
        "column": 22,
        "file": null,
        "line": 3
      },
      "text": "        test    sil, sil        # b"
    },
    {
      "labels": [],
      "source": {
        "column": 22,
        "file": null,
        "line": 3
      },
      "text": "        cmove   eax, edi      # tmp102,, <retval>"
    },
    {
      "labels": [],
      "source": null,
      "text": "# /app/example.cpp:8: }"
    },
    {
      "labels": [],
      "source": {
        "column": 1,
        "file": null,
        "line": 8
      },
      "text": "        ret"
    },
    {
      "labels": [],
      "source": null,
      "text": "\"main\":"
    },
    {
      "labels": [],
      "source": null,
      "text": "# /app/example.cpp:11:     return function(argc, false) + function(argc, true);"
    },
    {
      "labels": [
        {
          "name": "\"_Z8functionib.constprop.1\"",
          "range": {
            "endCol": 44,
            "startCol": 17
          }
        }
      ],
      "source": {
        "column": 20,
        "file": null,
        "line": 11
      },
      "text": "        call    \"_Z8functionib.constprop.1\"     #"
    },
    {
      "labels": [],
      "source": {
        "column": 20,
        "file": null,
        "line": 11
      },
      "text": "        mov     edx, eax  # _1,"
    },
    {
      "labels": [],
      "source": null,
      "text": "# /app/example.cpp:11:     return function(argc, false) + function(argc, true);"
    },
    {
      "labels": [
        {
          "name": "\"_Z8functionib.constprop.0\"",
          "range": {
            "endCol": 44,
            "startCol": 17
          }
        }
      ],
      "source": {
        "column": 44,
        "file": null,
        "line": 11
      },
      "text": "        call    \"_Z8functionib.constprop.0\"     #"
    },
    {
      "labels": [],
      "source": null,
      "text": "# /app/example.cpp:11:     return function(argc, false) + function(argc, true);"
    },
    {
      "labels": [],
      "source": {
        "column": 55,
        "file": null,
        "line": 11
      },
      "text": "        add     eax, edx  # _5, _1"
    },
    {
      "labels": [],
      "source": null,
      "text": "# /app/example.cpp:12: }"
    },
    {
      "labels": [],
      "source": {
        "column": 1,
        "file": null,
        "line": 12
      },
      "text": "        ret"
    }
  ],
  "labelDefinitions": {
    "\"_Z8functionib\"": 18,
    "\"_Z8functionib.constprop.0\"": 7,
    "\"_Z8functionib.constprop.1\"": 13,
    "\"main\"": 27
  }
}
