{
  "asm": [
    {
      "labels": [],
      "source": null,
      "text": "std::_Function_handler<void (), main::{lambda()#1}>::_M_invoke(std::_Any_data const&):"
    },
    {
      "labels": [],
      "source": {
        "column": 25,
        "file": null,
        "line": 23
      },
      "text": "        mov     rdi, QWORD PTR [rdi]"
    },
    {
      "labels": [],
      "source": {
        "column": 25,
        "file": null,
        "line": 23
      },
      "text": "        jmp     fclose"
    },
    {
      "labels": [],
      "source": null,
      "text": "std::_Function_handler<void (), main::{lambda()#1}>::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation):"
    },
    {
      "labels": [],
      "source": {
        "column": 2,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 270
      },
      "text": "        test    edx, edx"
    },
    {
      "labels": [
        {
          "name": ".L4",
          "range": {
            "endCol": 20,
            "startCol": 17
          }
        }
      ],
      "source": {
        "column": 2,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 270
      },
      "text": "        je      .L4"
    },
    {
      "labels": [],
      "source": {
        "column": 2,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 270
      },
      "text": "        cmp     edx, 1"
    },
    {
      "labels": [
        {
          "name": ".L5",
          "range": {
            "endCol": 20,
            "startCol": 17
          }
        }
      ],
      "source": {
        "column": 2,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 270
      },
      "text": "        je      .L5"
    },
    {
      "labels": [],
      "source": {
        "column": 4,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 183
      },
      "text": "        cmp     edx, 2"
    },
    {
      "labels": [
        {
          "name": ".L9",
          "range": {
            "endCol": 20,
            "startCol": 17
          }
        }
      ],
      "source": {
        "column": 4,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 183
      },
      "text": "        je      .L9"
    },
    {
      "labels": [],
      "source": null,
      "text": ".L7:"
    },
    {
      "labels": [],
      "source": {
        "column": 7,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 285
      },
      "text": "        xor     eax, eax"
    },
    {
      "labels": [],
      "source": {
        "column": 7,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 285
      },
      "text": "        ret"
    },
    {
      "labels": [],
      "source": null,
      "text": ".L4:"
    },
    {
      "labels": [
        {
          "name": "main",
          "range": {
            "endCol": 63,
            "startCol": 59
          }
        }
      ],
      "source": {
        "column": 43,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 274
      },
      "text": "        mov     QWORD PTR [rdi], OFFSET FLAT:typeinfo for main::{lambda()#1}"
    },
    {
      "labels": [],
      "source": {
        "column": 7,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 285
      },
      "text": "        xor     eax, eax"
    },
    {
      "labels": [],
      "source": {
        "column": 7,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 285
      },
      "text": "        ret"
    },
    {
      "labels": [],
      "source": null,
      "text": ".L5:"
    },
    {
      "labels": [],
      "source": {
        "column": 36,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 278
      },
      "text": "        mov     QWORD PTR [rdi], rsi"
    },
    {
      "labels": [],
      "source": {
        "column": 7,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 285
      },
      "text": "        xor     eax, eax"
    },
    {
      "labels": [],
      "source": {
        "column": 7,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 285
      },
      "text": "        ret"
    },
    {
      "labels": [],
      "source": null,
      "text": ".L9:"
    },
    {
      "labels": [],
      "source": {
        "column": 6,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 152
      },
      "text": "        mov     rax, QWORD PTR [rsi]"
    },
    {
      "labels": [],
      "source": {
        "column": 6,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 152
      },
      "text": "        mov     QWORD PTR [rdi], rax"
    },
    {
      "labels": [
        {
          "name": ".L7",
          "range": {
            "endCol": 20,
            "startCol": 17
          }
        }
      ],
      "source": {
        "column": 4,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 216
      },
      "text": "        jmp     .L7"
    },
    {
      "labels": [],
      "source": null,
      "text": "std::_Function_base::~_Function_base() [base object destructor]:"
    },
    {
      "labels": [],
      "source": {
        "column": 11,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 243
      },
      "text": "        mov     rax, QWORD PTR [rdi+16]"
    },
    {
      "labels": [],
      "source": {
        "column": 7,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 243
      },
      "text": "        test    rax, rax"
    },
    {
      "labels": [
        {
          "name": ".L16",
          "range": {
            "endCol": 21,
            "startCol": 17
          }
        }
      ],
      "source": {
        "column": 7,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 243
      },
      "text": "        je      .L16"
    },
    {
      "labels": [],
      "source": {
        "column": 5,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 241
      },
      "text": "        sub     rsp, 8"
    },
    {
      "labels": [],
      "source": {
        "column": 12,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 244
      },
      "text": "        mov     edx, 3"
    },
    {
      "labels": [],
      "source": {
        "column": 12,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 244
      },
      "text": "        mov     rsi, rdi"
    },
    {
      "labels": [],
      "source": {
        "column": 12,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 244
      },
      "text": "        call    rax"
    },
    {
      "labels": [],
      "source": {
        "column": 5,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 245
      },
      "text": "        add     rsp, 8"
    },
    {
      "labels": [],
      "source": {
        "column": 5,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 245
      },
      "text": "        ret"
    },
    {
      "labels": [],
      "source": null,
      "text": ".L16:"
    },
    {
      "labels": [],
      "source": {
        "column": 5,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 245
      },
      "text": "        ret"
    },
    {
      "labels": [],
      "source": null,
      "text": ".LC0:"
    },
    {
      "labels": [],
      "source": null,
      "text": "        .string \"r\""
    },
    {
      "labels": [],
      "source": null,
      "text": ".LC1:"
    },
    {
      "labels": [],
      "source": null,
      "text": "        .string \"\""
    },
    {
      "labels": [],
      "source": null,
      "text": "main:"
    },
    {
      "labels": [
        {
          "name": "std",
          "range": {
            "endCol": 37,
            "startCol": 34
          }
        },
        {
          "name": "main",
          "range": {
            "endCol": 70,
            "startCol": 66
          }
        }
      ],
      "source": {
        "column": 1,
        "file": null,
        "line": 21
      },
      "text": "        mov     eax, OFFSET FLAT:std::_Function_handler<void (), main::{lambda()#1}>::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation)"
    },
    {
      "labels": [],
      "source": {
        "column": 1,
        "file": null,
        "line": 21
      },
      "text": "        sub     rsp, 88"
    },
    {
      "labels": [
        {
          "name": ".LC0",
          "range": {
            "endCol": 38,
            "startCol": 34
          }
        }
      ],
      "source": {
        "column": 20,
        "file": null,
        "line": 22
      },
      "text": "        mov     esi, OFFSET FLAT:.LC0"
    },
    {
      "labels": [
        {
          "name": ".LC1",
          "range": {
            "endCol": 38,
            "startCol": 34
          }
        }
      ],
      "source": {
        "column": 20,
        "file": null,
        "line": 22
      },
      "text": "        mov     edi, OFFSET FLAT:.LC1"
    },
    {
      "labels": [],
      "source": {
        "column": 20,
        "file": null,
        "line": 22
      },
      "text": "        movq    xmm0, rax"
    },
    {
      "labels": [
        {
          "name": ".LC2",
          "range": {
            "endCol": 37,
            "startCol": 33
          }
        }
      ],
      "source": {
        "column": 20,
        "file": null,
        "line": 22
      },
      "text": "        movhps  xmm0, QWORD PTR .LC2[rip]"
    },
    {
      "labels": [],
      "source": {
        "column": 20,
        "file": null,
        "line": 22
      },
      "text": "        movaps  XMMWORD PTR [rsp], xmm0"
    },
    {
      "labels": [],
      "source": {
        "column": 20,
        "file": null,
        "line": 22
      },
      "text": "        call    fopen"
    },
    {
      "labels": [],
      "source": {
        "column": 19,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 452
      },
      "text": "        movdqa  xmm0, XMMWORD PTR [rsp]"
    },
    {
      "labels": [],
      "source": {
        "column": 11,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 334
      },
      "text": "        lea     rdi, [rsp+48]"
    },
    {
      "labels": [],
      "source": {
        "column": 19,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 437
      },
      "text": "        mov     QWORD PTR [rsp+56], 0"
    },
    {
      "labels": [],
      "source": {
        "column": 6,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 152
      },
      "text": "        mov     QWORD PTR [rsp+48], rax"
    },
    {
      "labels": [],
      "source": {
        "column": 24,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 387
      },
      "text": "        mov     QWORD PTR [rsp+24], 0"
    },
    {
      "labels": [],
      "source": {
        "column": 6,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 152
      },
      "text": "        mov     QWORD PTR [rsp+16], rax"
    },
    {
      "labels": [],
      "source": {
        "column": 19,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 452
      },
      "text": "        movaps  XMMWORD PTR [rsp+64], xmm0"
    },
    {
      "labels": [],
      "source": {
        "column": 17,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 393
      },
      "text": "        movaps  XMMWORD PTR [rsp+32], xmm0"
    },
    {
      "labels": [
        {
          "name": "std",
          "range": {
            "endCol": 20,
            "startCol": 17
          }
        }
      ],
      "source": {
        "column": 11,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 334
      },
      "text": "        call    std::_Function_base::~_Function_base() [base object destructor]"
    },
    {
      "labels": [],
      "source": {
        "column": 2,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 589
      },
      "text": "        cmp     QWORD PTR [rsp+32], 0"
    },
    {
      "labels": [
        {
          "name": ".L22",
          "range": {
            "endCol": 21,
            "startCol": 17
          }
        }
      ],
      "source": {
        "column": 2,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 589
      },
      "text": "        je      .L22"
    },
    {
      "labels": [],
      "source": {
        "column": 9,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 591
      },
      "text": "        lea     rdi, [rsp+16]"
    },
    {
      "labels": [],
      "source": {
        "column": 9,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 591
      },
      "text": "        call    [QWORD PTR [rsp+40]]"
    },
    {
      "labels": [],
      "source": {
        "column": 11,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 334
      },
      "text": "        lea     rdi, [rsp+16]"
    },
    {
      "labels": [
        {
          "name": "std",
          "range": {
            "endCol": 20,
            "startCol": 17
          }
        }
      ],
      "source": {
        "column": 11,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 334
      },
      "text": "        call    std::_Function_base::~_Function_base() [base object destructor]"
    },
    {
      "labels": [],
      "source": {
        "column": 1,
        "file": null,
        "line": 24
      },
      "text": "        xor     eax, eax"
    },
    {
      "labels": [],
      "source": {
        "column": 1,
        "file": null,
        "line": 24
      },
      "text": "        add     rsp, 88"
    },
    {
      "labels": [],
      "source": {
        "column": 1,
        "file": null,
        "line": 24
      },
      "text": "        ret"
    },
    {
      "labels": [],
      "source": null,
      "text": ".L22:"
    },
    {
      "labels": [
        {
          "name": "std",
          "range": {
            "endCol": 20,
            "startCol": 17
          }
        }
      ],
      "source": {
        "column": 29,
        "file": "/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/std_function.h",
        "line": 590
      },
      "text": "        call    std::__throw_bad_function_call()"
    },
    {
      "labels": [
        {
          "name": "main",
          "range": {
            "endCol": 18,
            "startCol": 14
          }
        }
      ],
      "source": null,
      "text": "typeinfo for main::{lambda()#1}:"
    },
    {
      "labels": [
        {
          "name": "main",
          "range": {
            "endCol": 23,
            "startCol": 19
          }
        }
      ],
      "source": null,
      "text": "typeinfo name for main::{lambda()#1}:"
    },
    {
      "labels": [],
      "source": null,
      "text": ".LC2:"
    },
    {
      "labels": [
        {
          "name": "std",
          "range": {
            "endCol": 20,
            "startCol": 17
          }
        },
        {
          "name": "main",
          "range": {
            "endCol": 53,
            "startCol": 49
          }
        }
      ],
      "source": null,
      "text": "        .quad   std::_Function_handler<void (), main::{lambda()#1}>::_M_invoke(std::_Any_data const&)"
    }
  ],
  "labelDefinitions": {
    ".L16": 36,
    ".L22": 69,
    ".L4": 14,
    ".L5": 18,
    ".L7": 11,
    ".L9": 22,
    ".LC0": 38,
    ".LC1": 40,
    ".LC2": 73,
    "main": 42,
    "std": 26
  }
}
