{
  "schema_version": 1,
  "ghidra_version": "12.1.3",
  "program": "fixture-O2.dll",
  "language": "x86:LE:64:default",
  "compiler_spec": "clangwindows",
  "binary_sha256": "27b3d6256af582636d29f0bc424d0c9c4eaea95e8643ad55d5cb052e2de34117",
  "method": "Headless import and auto-analysis; default inferred types; no prototype or symbol corrections supplied.",
  "functions": [
    {
      "name": "legacy_boolean",
      "entry": "180001000",
      "decompiled_c": "\r\nbool legacy_boolean(char param_1)\r\n\r\n{\r\n                    /* 0x1000  3  legacy_boolean */\r\n  return param_1 !\u003d \u0027\\0\u0027;\r\n}\r\n\r\n",
      "instruction_count": 4,
      "blocks": [
        {
          "start": "180001000",
          "instructions": [
            {
              "address": "180001000",
              "text": "XOR EAX,EAX",
              "bytes": "31 c0"
            },
            {
              "address": "180001002",
              "text": "TEST CL,CL",
              "bytes": "84 c9"
            },
            {
              "address": "180001004",
              "text": "SETNZ AL",
              "bytes": "0f 95 c0"
            },
            {
              "address": "180001007",
              "text": "RET",
              "bytes": "c3"
            }
          ],
          "edges": []
        }
      ]
    },
    {
      "name": "canonical_boolean",
      "entry": "180001010",
      "decompiled_c": "\r\nulonglong canonical_boolean(byte param_1)\r\n\r\n{\r\n  ulonglong uVar1;\r\n  \r\n                    /* 0x1010  2  canonical_boolean */\r\n  uVar1 \u003d 0xffffffff;\r\n  if (param_1 \u003c 2) {\r\n    uVar1 \u003d (ulonglong)param_1;\r\n  }\r\n  return uVar1;\r\n}\r\n\r\n",
      "instruction_count": 5,
      "blocks": [
        {
          "start": "180001010",
          "instructions": [
            {
              "address": "180001010",
              "text": "MOVZX ECX,CL",
              "bytes": "0f b6 c9"
            },
            {
              "address": "180001013",
              "text": "CMP CL,0x2",
              "bytes": "80 f9 02"
            },
            {
              "address": "180001016",
              "text": "MOV EAX,0xffffffff",
              "bytes": "b8 ff ff ff ff"
            },
            {
              "address": "18000101b",
              "text": "CMOVC EAX,ECX",
              "bytes": "0f 42 c1"
            },
            {
              "address": "18000101e",
              "text": "RET",
              "bytes": "c3"
            }
          ],
          "edges": []
        }
      ]
    },
    {
      "name": "legacy_range",
      "entry": "180001020",
      "decompiled_c": "\r\nbool legacy_range(uint param_1,int param_2,int param_3)\r\n\r\n{\r\n                    /* 0x1020  4  legacy_range */\r\n  return (uint)(param_2 + param_3) \u003c\u003d param_1;\r\n}\r\n\r\n",
      "instruction_count": 5,
      "blocks": [
        {
          "start": "180001020",
          "instructions": [
            {
              "address": "180001020",
              "text": "ADD EDX,R8D",
              "bytes": "44 01 c2"
            },
            {
              "address": "180001023",
              "text": "XOR EAX,EAX",
              "bytes": "31 c0"
            },
            {
              "address": "180001025",
              "text": "CMP EDX,ECX",
              "bytes": "39 ca"
            },
            {
              "address": "180001027",
              "text": "SETBE AL",
              "bytes": "0f 96 c0"
            },
            {
              "address": "18000102a",
              "text": "RET",
              "bytes": "c3"
            }
          ],
          "edges": []
        }
      ]
    },
    {
      "name": "bounded_range",
      "entry": "180001030",
      "decompiled_c": "\r\nbool bounded_range(uint param_1,uint param_2,uint param_3)\r\n\r\n{\r\n                    /* 0x1030  1  bounded_range */\r\n  return param_3 \u003c\u003d param_1 - param_2 \u0026\u0026 param_2 \u003c\u003d param_1;\r\n}\r\n\r\n",
      "instruction_count": 7,
      "blocks": [
        {
          "start": "180001030",
          "instructions": [
            {
              "address": "180001030",
              "text": "SUB ECX,EDX",
              "bytes": "29 d1"
            },
            {
              "address": "180001032",
              "text": "SETNC AL",
              "bytes": "0f 93 c0"
            },
            {
              "address": "180001035",
              "text": "CMP R8D,ECX",
              "bytes": "41 39 c8"
            },
            {
              "address": "180001038",
              "text": "SETBE CL",
              "bytes": "0f 96 c1"
            },
            {
              "address": "18000103b",
              "text": "AND CL,AL",
              "bytes": "20 c1"
            },
            {
              "address": "18000103d",
              "text": "MOVZX EAX,CL",
              "bytes": "0f b6 c1"
            },
            {
              "address": "180001040",
              "text": "RET",
              "bytes": "c3"
            }
          ],
          "edges": []
        }
      ]
    }
  ]
}
