{"artifacts":[{"architecture":"arm64","digest":{"sha256":"01b5d08b08fb94678be5919d0e753d44b505a53107c95b94634f0e5d41c9e375"},"format":"mach-o"}],"captures":[],"environments":[],"providers":[{"id":"ghidra","name":"Ghidra","version":"12.1.4"}],"records":[{"analysis_profile":{"digest":"3fc72c9b4b78498fb992b938f8f3389dc670244a293c1d40abf5e1d10162ed3b","parameters":{"analyzer_preset":"ghidra-default","annotation_policy":"atomic-function-entry-metadata-v1","architecture":"arm64","available_architectures":["arm64"],"call_relationship_coverage":"function-body-call-coverage-v5","compiler_spec_id":"auto-default","decompiler_jump_loads":true,"function_body_evidence":"complete-inclusive-ranges-v1","function_boundary_observations":"ghidra-function-boundary-limitations-v4","function_dossier_coverage":"observed-facets-and-call-relationships-v1","function_references":"complete-body-and-entry-reference-manager-v2","import_mode":"ephemeral-source-immutable","instruction_flow_evidence":"decoded-return-pcode-v1","instruction_references":"exact-address-incoming-without-synthetic-entry-v2","jump_table_evidence":"typed-case-default-blocks-v1","language_id":"auto-from-header","load_image_observations":"source-mappings-entry-context-v2","loader":"auto-from-header","location_resolution":"explicit-address-exact-entry-symbol-first-v3","no_return_repair":"returning-imports-decoded-return-v2","procedure_file_offset_resolution":"address-first-unique-target-source-mapping-v2","process_launch":"inspected-jvm-launch-support-v1","string_inventory_evidence":"defined-data-coverage-v1","target_format":"mach-o","target_kind":"executable"},"provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"}},"authority":"shipped-artifact","confidence":"observed","environment":null,"evidence_id":"ev_2c883c7b915976c5f4d3ab0b2b3bec32ffae8048575ef6d0d9538f512f0b34d1","evidence_links":[],"limitations":["The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.","The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.","Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.","Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.","Assembly is Ghidra Listing text and does not claim textual equivalence with Hopper output.","macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state."],"locations":[],"normalized_result":"0x100000518: mov w8, #0x6667\n0x10000051c: movk w8, #0x6666, LSL #16\n0x100000520: smull x8, w0, w8\n0x100000524: lsr x9, x8, #0x3f\n0x100000528: asr x8, x8, #0x22\n0x10000052c: add w8, w8, w9\n0x100000530: sub w8, w8, #0x6\n0x100000534: cmp w8, #0x4\n0x100000538: b.hi 0x10000054c\n0x10000053c: adrp x9, 0x100000000\n0x100000540: add x9, x9, #0x7d0\n0x100000544: ldr w0, [x9, w8, UXTW #0x2]\n0x100000548: ret\n0x10000054c: mov w0, #0x0\n0x100000550: ret","operation":"procedure_assembly","parameters":{"procedure":"_grade"},"predicate_type":"rea.analysis","provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"},"raw_result":{"limitations":[],"value":"0x100000518: mov w8, #0x6667\n0x10000051c: movk w8, #0x6666, LSL #16\n0x100000520: smull x8, w0, w8\n0x100000524: lsr x9, x8, #0x3f\n0x100000528: asr x8, x8, #0x22\n0x10000052c: add w8, w8, w9\n0x100000530: sub w8, w8, #0x6\n0x100000534: cmp w8, #0x4\n0x100000538: b.hi 0x10000054c\n0x10000053c: adrp x9, 0x100000000\n0x100000540: add x9, x9, #0x7d0\n0x100000544: ldr w0, [x9, w8, UXTW #0x2]\n0x100000548: ret\n0x10000054c: mov w0, #0x0\n0x100000550: ret"},"relationship_coverage":null,"subject":{"architecture":"arm64","digest":{"sha256":"01b5d08b08fb94678be5919d0e753d44b505a53107c95b94634f0e5d41c9e375"},"format":"mach-o","local_path":"$CAPTURE/fixtures/ledger-arm64-O1","name":"ledger-arm64-O1"}},{"analysis_profile":{"digest":"3fc72c9b4b78498fb992b938f8f3389dc670244a293c1d40abf5e1d10162ed3b","parameters":{"analyzer_preset":"ghidra-default","annotation_policy":"atomic-function-entry-metadata-v1","architecture":"arm64","available_architectures":["arm64"],"call_relationship_coverage":"function-body-call-coverage-v5","compiler_spec_id":"auto-default","decompiler_jump_loads":true,"function_body_evidence":"complete-inclusive-ranges-v1","function_boundary_observations":"ghidra-function-boundary-limitations-v4","function_dossier_coverage":"observed-facets-and-call-relationships-v1","function_references":"complete-body-and-entry-reference-manager-v2","import_mode":"ephemeral-source-immutable","instruction_flow_evidence":"decoded-return-pcode-v1","instruction_references":"exact-address-incoming-without-synthetic-entry-v2","jump_table_evidence":"typed-case-default-blocks-v1","language_id":"auto-from-header","load_image_observations":"source-mappings-entry-context-v2","loader":"auto-from-header","location_resolution":"explicit-address-exact-entry-symbol-first-v3","no_return_repair":"returning-imports-decoded-return-v2","procedure_file_offset_resolution":"address-first-unique-target-source-mapping-v2","process_launch":"inspected-jvm-launch-support-v1","string_inventory_evidence":"defined-data-coverage-v1","target_format":"mach-o","target_kind":"executable"},"provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"}},"authority":"shipped-artifact","confidence":"observed","environment":null,"evidence_id":"ev_3c6350b28fc1f5b61a3318b8898e3169a87e83d7f75fed829907e439963b50e6","evidence_links":[],"limitations":["The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.","The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.","Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.","Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.","External functions and local thunks are distinct; procedure metadata identifies both and preserves a thunk target when Ghidra resolves one.","macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state."],"locations":[],"normalized_result":[{"address":"EXTERNAL:0x1","procedure":{"external":true,"thunk":false,"thunk_target":null},"value":"/usr/lib/libSystem.B.dylib::___stack_chk_fail"},{"address":"EXTERNAL:0x2","procedure":{"external":true,"thunk":false,"thunk_target":null},"value":"/usr/lib/libSystem.B.dylib::_atoi"},{"address":"EXTERNAL:0x3","procedure":{"external":true,"thunk":false,"thunk_target":null},"value":"/usr/lib/libSystem.B.dylib::_fwrite"},{"address":"EXTERNAL:0x4","procedure":{"external":true,"thunk":false,"thunk_target":null},"value":"/usr/lib/libSystem.B.dylib::_printf"},{"address":"0x100000500","procedure":{"external":false,"thunk":false,"thunk_target":null},"value":"_percent_change"},{"address":"0x100000518","procedure":{"external":false,"thunk":false,"thunk_target":null},"value":"_grade"},{"address":"0x100000554","procedure":{"external":false,"thunk":false,"thunk_target":null},"value":"_total"},{"address":"0x100000588","procedure":{"external":false,"thunk":false,"thunk_target":null},"value":"_grade_label"},{"address":"0x1000005d0","procedure":{"external":false,"thunk":false,"thunk_target":null},"value":"entry"},{"address":"0x100000740","procedure":{"external":false,"thunk":true,"thunk_target":"EXTERNAL:0x1"},"value":"___stack_chk_fail"},{"address":"0x10000074c","procedure":{"external":false,"thunk":true,"thunk_target":"EXTERNAL:0x2"},"value":"_atoi"},{"address":"0x100000758","procedure":{"external":false,"thunk":true,"thunk_target":"EXTERNAL:0x3"},"value":"_fwrite"},{"address":"0x100000764","procedure":{"external":false,"thunk":true,"thunk_target":"EXTERNAL:0x4"},"value":"_printf"}],"operation":"list_procedures","parameters":{},"predicate_type":"rea.analysis","provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"},"raw_result":[{"address":"EXTERNAL:0x1","procedure":{"external":true,"thunk":false,"thunk_target":null},"value":"/usr/lib/libSystem.B.dylib::___stack_chk_fail"},{"address":"EXTERNAL:0x2","procedure":{"external":true,"thunk":false,"thunk_target":null},"value":"/usr/lib/libSystem.B.dylib::_atoi"},{"address":"EXTERNAL:0x3","procedure":{"external":true,"thunk":false,"thunk_target":null},"value":"/usr/lib/libSystem.B.dylib::_fwrite"},{"address":"EXTERNAL:0x4","procedure":{"external":true,"thunk":false,"thunk_target":null},"value":"/usr/lib/libSystem.B.dylib::_printf"},{"address":"0x100000500","procedure":{"external":false,"thunk":false,"thunk_target":null},"value":"_percent_change"},{"address":"0x100000518","procedure":{"external":false,"thunk":false,"thunk_target":null},"value":"_grade"},{"address":"0x100000554","procedure":{"external":false,"thunk":false,"thunk_target":null},"value":"_total"},{"address":"0x100000588","procedure":{"external":false,"thunk":false,"thunk_target":null},"value":"_grade_label"},{"address":"0x1000005d0","procedure":{"external":false,"thunk":false,"thunk_target":null},"value":"entry"},{"address":"0x100000740","procedure":{"external":false,"thunk":true,"thunk_target":"EXTERNAL:0x1"},"value":"___stack_chk_fail"},{"address":"0x10000074c","procedure":{"external":false,"thunk":true,"thunk_target":"EXTERNAL:0x2"},"value":"_atoi"},{"address":"0x100000758","procedure":{"external":false,"thunk":true,"thunk_target":"EXTERNAL:0x3"},"value":"_fwrite"},{"address":"0x100000764","procedure":{"external":false,"thunk":true,"thunk_target":"EXTERNAL:0x4"},"value":"_printf"}],"relationship_coverage":null,"subject":{"architecture":"arm64","digest":{"sha256":"01b5d08b08fb94678be5919d0e753d44b505a53107c95b94634f0e5d41c9e375"},"format":"mach-o","local_path":"$CAPTURE/fixtures/ledger-arm64-O1","name":"ledger-arm64-O1"}},{"analysis_profile":{"digest":"3fc72c9b4b78498fb992b938f8f3389dc670244a293c1d40abf5e1d10162ed3b","parameters":{"analyzer_preset":"ghidra-default","annotation_policy":"atomic-function-entry-metadata-v1","architecture":"arm64","available_architectures":["arm64"],"call_relationship_coverage":"function-body-call-coverage-v5","compiler_spec_id":"auto-default","decompiler_jump_loads":true,"function_body_evidence":"complete-inclusive-ranges-v1","function_boundary_observations":"ghidra-function-boundary-limitations-v4","function_dossier_coverage":"observed-facets-and-call-relationships-v1","function_references":"complete-body-and-entry-reference-manager-v2","import_mode":"ephemeral-source-immutable","instruction_flow_evidence":"decoded-return-pcode-v1","instruction_references":"exact-address-incoming-without-synthetic-entry-v2","jump_table_evidence":"typed-case-default-blocks-v1","language_id":"auto-from-header","load_image_observations":"source-mappings-entry-context-v2","loader":"auto-from-header","location_resolution":"explicit-address-exact-entry-symbol-first-v3","no_return_repair":"returning-imports-decoded-return-v2","procedure_file_offset_resolution":"address-first-unique-target-source-mapping-v2","process_launch":"inspected-jvm-launch-support-v1","string_inventory_evidence":"defined-data-coverage-v1","target_format":"mach-o","target_kind":"executable"},"provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"}},"authority":"shipped-artifact","confidence":"observed","environment":null,"evidence_id":"ev_41e8ca1c51e0f01a0a0d2e1e5485358e6c14b7262bcbb152e218cef8be6bdcde","evidence_links":[],"limitations":["The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.","The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.","Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.","Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.","References cover the complete Ghidra function-body AddressSet and exact entry. Dossier incoming edges omit sources owned by that function; procedure_references also retains those internal edges.","The dossier combines Ghidra FunctionManager, Listing, ReferenceManager, BasicBlockModel, and decompiler observations; provider-specific pseudocode and assembly are not cross-provider text invariants.","Resolved reference metadata identifies computed, indirect, external, call, jump, and data edges; unresolved targetless flows remain unknown, and function classifications distinguish thunks and externals.","Synthetic Ghidra entry-point references without actionable memory sources are omitted.","The Java bridge serializes one function request per Program and lets each decompilation run until it completes or the caller cancels.","macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state."],"locations":[],"normalized_result":{"assembly":["0x100000518: mov w8, #0x6667","0x10000051c: movk w8, #0x6666, LSL #16","0x100000520: smull x8, w0, w8","0x100000524: lsr x9, x8, #0x3f","0x100000528: asr x8, x8, #0x22","0x10000052c: add w8, w8, w9","0x100000530: sub w8, w8, #0x6","0x100000534: cmp w8, #0x4","0x100000538: b.hi 0x10000054c","0x10000053c: adrp x9, 0x100000000","0x100000540: add x9, x9, #0x7d0","0x100000544: ldr w0, [x9, w8, UXTW #0x2]","0x100000548: ret","0x10000054c: mov w0, #0x0","0x100000550: ret"],"basic_blocks":[{"end":"0x10000053c","start":"0x100000518","successors":["0x10000053c","0x10000054c"]},{"end":"0x10000054c","start":"0x10000053c","successors":[]},{"end":"0x100000554","start":"0x10000054c","successors":[]}],"callees":[],"callers":[],"comments":[],"facet_availability":{"assembly":{"available":true},"callees":{"available":true},"callers":{"available":true},"cfg":{"available":true},"comments":{"available":true},"pseudocode":{"available":true},"references":{"available":true},"strings_names":{"available":true}},"incoming_references":[{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"DATA","write":false},"source_address":"0x10000811a","source_procedure":null,"target_address":"0x100000518","target_procedure":{"address":"0x100000518","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000553","start":"0x100000518"}],"span_bytes":60,"total_bytes":60},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade"}}],"limitations":["Unresolved computed or indirect flows without target addresses are not represented as reference edges.","Thunk and external classifications are Ghidra FunctionManager observations; they do not resolve targetless calls.","Pseudocode and assembly are Ghidra-specific representations, not original source or Hopper-equivalent text.","Synthetic Ghidra entry-point references without actionable memory sources are omitted."],"native_api":{"available":true,"calling_convention":"__cdecl","decompiler_artifacts":["recovered-signature","register-and-stack-variables","compiler-generated-control-flow","pointer-arithmetic","pseudocode"],"jump_tables":[],"limitations":["Types and calling conventions are Ghidra decompiler observations, not source declarations.","Register variables, compiler-generated blocks, and pointer arithmetic remain decompiler artifacts.","Pseudocode is neither original source nor guaranteed to compile."],"parameters":[{"confidence":"low","data_type":"int","decompiler_artifacts":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type int.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":"param_1","ordinal":0,"role":"parameter","size_bytes":4,"storage":"w0:4"}],"provenance":"ghidra-high-function","pseudocode":{"classification":"decompiler-generated-non-source","compilable":false},"return_type":{"confidence":"low","data_type":"undefined4","decompiler_artifacts":["recovered-signature","register-or-stack-storage"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type undefined4.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":null,"ordinal":null,"role":"return","size_bytes":4,"storage":"w0:4"},"signature_source":"default"},"native_value_flow":{"available":true,"def_use":[{"definition":"0x10000052c#70","input_index":0,"use":"0x100000530#16"},{"definition":"0x100000530#16","input_index":0,"use":"0x100000538#29"},{"definition":"0x100000538#29","input_index":1,"use":"0x100000538#30"},{"definition":"0x100000530#16","input_index":0,"use":"0x100000544#39"},{"definition":"0x100000544#39","input_index":0,"use":"0x100000544#41"},{"definition":"0x100000544#75","input_index":0,"use":"0x100000544#42"},{"definition":"0x100000544#41","input_index":1,"use":"0x100000544#42"},{"definition":"0x100000544#76","input_index":1,"use":"0x100000544#43"},{"definition":"0x100000544#43","input_index":0,"use":"0x100000544#73"},{"definition":"0x100000544#42","input_index":0,"use":"0x100000544#76"},{"definition":"0x100000544#73","input_index":1,"use":"0x100000548#46"},{"definition":"0x10000054c#74","input_index":1,"use":"0x100000550#49"}],"effects":[{"kind":"conditional_branch","operand_input":null,"operation":"0x100000538#30","value_input":1},{"kind":"memory_read","operand_input":1,"operation":"0x100000544#43","value_input":null}],"known_omitted_edges":0,"known_omitted_inputs":0,"limitations":["High p-code is decompiler-derived, not original source or runtime behavior. is_dead preserves the Java AST flag; decoded block members can retain that flag, so block_membership separately reports actual syntax-tree membership.","Def-use links do not cross function boundaries and may omit memory aliasing, call side effects, or unresolved indirect flow.","Memory read/write effects include stack and temporary memory operations; they do not identify persistent state or business meaning.","Operation, input, and def-use limits can truncate large functions; inspect truncation, omitted lower bounds, and known omitted counts before drawing conclusions.","Known omitted-edge counts cover links omitted from retained operations; omitted operations may contain additional uncounted links."],"omitted_operations_lower_bound":0,"operations":[{"address":"0x10000052c","block_membership":"member","id":"0x10000052c#70","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},{"constant_hex":"a","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_SDIV","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1000001c","size_bytes":4},"sequence":70},{"address":"0x100000530","block_membership":"member","id":"0x100000530#16","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x1000001c","size_bytes":4},{"constant_hex":"6","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_SUB","output":{"constant_hex":null,"kind":"unique","location":"unique:0x78d00","size_bytes":4},"sequence":16},{"address":"0x100000538","block_membership":"member","id":"0x100000538#29","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x78d00","size_bytes":4},{"constant_hex":"5","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_LESS","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1d00","size_bytes":1},"sequence":29},{"address":"0x100000538","block_membership":"member","id":"0x100000538#30","inputs":[{"constant_hex":null,"kind":"address","location":"0x10000054c","size_bytes":1},{"constant_hex":null,"kind":"unique","location":"unique:0x1d00","size_bytes":1}],"is_dead":true,"opcode":"CBRANCH","output":null,"sequence":30},{"address":"0x100000544","block_membership":"member","id":"0x100000544#39","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x78d00","size_bytes":4}],"is_dead":true,"opcode":"INT_ZEXT","output":{"constant_hex":null,"kind":"unique","location":"unique:0xab00","size_bytes":8},"sequence":39},{"address":"0x100000544","block_membership":"member","id":"0x100000544#41","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0xab00","size_bytes":8},{"constant_hex":"4","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"INT_MULT","output":{"constant_hex":null,"kind":"unique","location":"unique:0xd900","size_bytes":8},"sequence":41},{"address":"0x100000544","block_membership":"member","id":"0x100000544#42","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x10000025","size_bytes":8},{"constant_hex":null,"kind":"unique","location":"unique:0xd900","size_bytes":8},{"constant_hex":"1","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"PTRADD","output":{"constant_hex":null,"kind":"unique","location":"unique:0xe400","size_bytes":8},"sequence":42},{"address":"0x100000544","block_membership":"member","id":"0x100000544#43","inputs":[{"constant_hex":"1b1","kind":"constant","location":null,"size_bytes":4},{"constant_hex":null,"kind":"unique","location":"unique:0x1000002d","size_bytes":8}],"is_dead":true,"opcode":"LOAD","output":{"constant_hex":null,"kind":"unique","location":"unique:0x49b00","size_bytes":4},"sequence":43},{"address":"0x100000544","block_membership":"member","id":"0x100000544#73","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x49b00","size_bytes":4}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},"sequence":73},{"address":"0x100000544","block_membership":"member","id":"0x100000544#75","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":"1000007d0","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"PTRSUB","output":{"constant_hex":null,"kind":"unique","location":"unique:0x10000025","size_bytes":8},"sequence":75},{"address":"0x100000544","block_membership":"member","id":"0x100000544#76","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0xe400","size_bytes":8}],"is_dead":true,"opcode":"CAST","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1000002d","size_bytes":8},"sequence":76},{"address":"0x100000548","block_membership":"member","id":"0x100000548#46","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4}],"is_dead":true,"opcode":"RETURN","output":null,"sequence":46},{"address":"0x10000054c","block_membership":"member","id":"0x10000054c#74","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},"sequence":74},{"address":"0x100000550","block_membership":"member","id":"0x100000550#49","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4}],"is_dead":true,"opcode":"RETURN","output":null,"sequence":49}],"parameter_uses":[{"input_index":0,"ordinal":0,"use":"0x10000052c#70"}],"parameters":[{"data_type":"/int","name":"param_1","ordinal":0}],"provenance":"ghidra-high-pcode","truncated":false},"outgoing_references":[{"kind":{"available":true,"call":false,"computed":false,"conditional":true,"data":false,"external":false,"flow":true,"indirect":false,"jump":true,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"CONDITIONAL_JUMP","write":false},"source_address":"0x100000538","source_procedure":{"address":"0x100000518","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000553","start":"0x100000518"}],"span_bytes":60,"total_bytes":60},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade"},"target_address":"0x10000054c","target_procedure":{"address":"0x100000518","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000553","start":"0x100000518"}],"span_bytes":60,"total_bytes":60},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade"}},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":1,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"DATA","write":false},"source_address":"0x100000544","source_procedure":{"address":"0x100000518","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000553","start":"0x100000518"}],"span_bytes":60,"total_bytes":60},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade"},"target_address":"0x1000007d0","target_procedure":null}],"procedure":{"address":"0x100000518","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000553","start":"0x100000518"}],"span_bytes":60,"total_bytes":60},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"locals":[],"name":"_grade","signature":"undefined _grade()"},"pseudocode":"\nundefined4 _grade(int param_1)\n\n{\n uint uVar1;\n \n uVar1 = param_1 / 10 - 6;\n if (uVar1 < 5) {\n return *(undefined4 *)(&DAT_1000007d0 + (ulong)uVar1 * 4);\n }\n return 0;\n}\n\n","referenced_names":[{"address":"0x10000054c","source_address":"0x100000538","value":"LAB_10000054c"},{"address":"0x1000007d0","source_address":"0x100000544","value":"DAT_1000007d0"}],"referenced_strings":[],"unresolved_calls":[]},"operation":"analyze_function","parameters":{"procedure":"_grade"},"predicate_type":"rea.analysis","provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"},"raw_result":{"limitations":[],"relationship_coverage":{"diagnostics":["Only resolved Ghidra call references are returned; unresolved computed or indirect calls remain unknown, while function classifications distinguish thunks and externals."],"status":"complete"},"value":{"assembly":["0x100000518: mov w8, #0x6667","0x10000051c: movk w8, #0x6666, LSL #16","0x100000520: smull x8, w0, w8","0x100000524: lsr x9, x8, #0x3f","0x100000528: asr x8, x8, #0x22","0x10000052c: add w8, w8, w9","0x100000530: sub w8, w8, #0x6","0x100000534: cmp w8, #0x4","0x100000538: b.hi 0x10000054c","0x10000053c: adrp x9, 0x100000000","0x100000540: add x9, x9, #0x7d0","0x100000544: ldr w0, [x9, w8, UXTW #0x2]","0x100000548: ret","0x10000054c: mov w0, #0x0","0x100000550: ret"],"basic_blocks":[{"end":"0x10000053c","start":"0x100000518","successors":["0x10000053c","0x10000054c"]},{"end":"0x10000054c","start":"0x10000053c","successors":[]},{"end":"0x100000554","start":"0x10000054c","successors":[]}],"callees":[],"callers":[],"comments":[],"facet_availability":{"assembly":{"available":true},"callees":{"available":true},"callers":{"available":true},"cfg":{"available":true},"comments":{"available":true},"pseudocode":{"available":true},"references":{"available":true},"strings_names":{"available":true}},"incoming_references":[{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"DATA","write":false},"source_address":"0x10000811a","source_procedure":null,"target_address":"0x100000518","target_procedure":{"address":"0x100000518","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000553","start":"0x100000518"}],"span_bytes":60,"total_bytes":60},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade"}}],"limitations":["Unresolved computed or indirect flows without target addresses are not represented as reference edges.","Thunk and external classifications are Ghidra FunctionManager observations; they do not resolve targetless calls.","Pseudocode and assembly are Ghidra-specific representations, not original source or Hopper-equivalent text.","Synthetic Ghidra entry-point references without actionable memory sources are omitted."],"native_api":{"available":true,"calling_convention":"__cdecl","decompiler_artifacts":["recovered-signature","register-and-stack-variables","compiler-generated-control-flow","pointer-arithmetic","pseudocode"],"jump_tables":[],"limitations":["Types and calling conventions are Ghidra decompiler observations, not source declarations.","Register variables, compiler-generated blocks, and pointer arithmetic remain decompiler artifacts.","Pseudocode is neither original source nor guaranteed to compile."],"parameters":[{"confidence":"low","data_type":"int","decompiler_artifacts":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type int.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":"param_1","ordinal":0,"role":"parameter","size_bytes":4,"storage":"w0:4"}],"provenance":"ghidra-high-function","pseudocode":{"classification":"decompiler-generated-non-source","compilable":false},"return_type":{"confidence":"low","data_type":"undefined4","decompiler_artifacts":["recovered-signature","register-or-stack-storage"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type undefined4.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":null,"ordinal":null,"role":"return","size_bytes":4,"storage":"w0:4"},"signature_source":"default"},"native_value_flow":{"available":true,"def_use":[{"definition":"0x10000052c#70","input_index":0,"use":"0x100000530#16"},{"definition":"0x100000530#16","input_index":0,"use":"0x100000538#29"},{"definition":"0x100000538#29","input_index":1,"use":"0x100000538#30"},{"definition":"0x100000530#16","input_index":0,"use":"0x100000544#39"},{"definition":"0x100000544#39","input_index":0,"use":"0x100000544#41"},{"definition":"0x100000544#75","input_index":0,"use":"0x100000544#42"},{"definition":"0x100000544#41","input_index":1,"use":"0x100000544#42"},{"definition":"0x100000544#76","input_index":1,"use":"0x100000544#43"},{"definition":"0x100000544#43","input_index":0,"use":"0x100000544#73"},{"definition":"0x100000544#42","input_index":0,"use":"0x100000544#76"},{"definition":"0x100000544#73","input_index":1,"use":"0x100000548#46"},{"definition":"0x10000054c#74","input_index":1,"use":"0x100000550#49"}],"effects":[{"kind":"conditional_branch","operand_input":null,"operation":"0x100000538#30","value_input":1},{"kind":"memory_read","operand_input":1,"operation":"0x100000544#43","value_input":null}],"known_omitted_edges":0,"known_omitted_inputs":0,"limitations":["High p-code is decompiler-derived, not original source or runtime behavior. is_dead preserves the Java AST flag; decoded block members can retain that flag, so block_membership separately reports actual syntax-tree membership.","Def-use links do not cross function boundaries and may omit memory aliasing, call side effects, or unresolved indirect flow.","Memory read/write effects include stack and temporary memory operations; they do not identify persistent state or business meaning.","Operation, input, and def-use limits can truncate large functions; inspect truncation, omitted lower bounds, and known omitted counts before drawing conclusions.","Known omitted-edge counts cover links omitted from retained operations; omitted operations may contain additional uncounted links."],"omitted_operations_lower_bound":0,"operations":[{"address":"0x10000052c","block_membership":"member","id":"0x10000052c#70","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},{"constant_hex":"a","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_SDIV","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1000001c","size_bytes":4},"sequence":70},{"address":"0x100000530","block_membership":"member","id":"0x100000530#16","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x1000001c","size_bytes":4},{"constant_hex":"6","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_SUB","output":{"constant_hex":null,"kind":"unique","location":"unique:0x78d00","size_bytes":4},"sequence":16},{"address":"0x100000538","block_membership":"member","id":"0x100000538#29","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x78d00","size_bytes":4},{"constant_hex":"5","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_LESS","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1d00","size_bytes":1},"sequence":29},{"address":"0x100000538","block_membership":"member","id":"0x100000538#30","inputs":[{"constant_hex":null,"kind":"address","location":"0x10000054c","size_bytes":1},{"constant_hex":null,"kind":"unique","location":"unique:0x1d00","size_bytes":1}],"is_dead":true,"opcode":"CBRANCH","output":null,"sequence":30},{"address":"0x100000544","block_membership":"member","id":"0x100000544#39","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x78d00","size_bytes":4}],"is_dead":true,"opcode":"INT_ZEXT","output":{"constant_hex":null,"kind":"unique","location":"unique:0xab00","size_bytes":8},"sequence":39},{"address":"0x100000544","block_membership":"member","id":"0x100000544#41","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0xab00","size_bytes":8},{"constant_hex":"4","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"INT_MULT","output":{"constant_hex":null,"kind":"unique","location":"unique:0xd900","size_bytes":8},"sequence":41},{"address":"0x100000544","block_membership":"member","id":"0x100000544#42","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x10000025","size_bytes":8},{"constant_hex":null,"kind":"unique","location":"unique:0xd900","size_bytes":8},{"constant_hex":"1","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"PTRADD","output":{"constant_hex":null,"kind":"unique","location":"unique:0xe400","size_bytes":8},"sequence":42},{"address":"0x100000544","block_membership":"member","id":"0x100000544#43","inputs":[{"constant_hex":"1b1","kind":"constant","location":null,"size_bytes":4},{"constant_hex":null,"kind":"unique","location":"unique:0x1000002d","size_bytes":8}],"is_dead":true,"opcode":"LOAD","output":{"constant_hex":null,"kind":"unique","location":"unique:0x49b00","size_bytes":4},"sequence":43},{"address":"0x100000544","block_membership":"member","id":"0x100000544#73","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x49b00","size_bytes":4}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},"sequence":73},{"address":"0x100000544","block_membership":"member","id":"0x100000544#75","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":"1000007d0","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"PTRSUB","output":{"constant_hex":null,"kind":"unique","location":"unique:0x10000025","size_bytes":8},"sequence":75},{"address":"0x100000544","block_membership":"member","id":"0x100000544#76","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0xe400","size_bytes":8}],"is_dead":true,"opcode":"CAST","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1000002d","size_bytes":8},"sequence":76},{"address":"0x100000548","block_membership":"member","id":"0x100000548#46","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4}],"is_dead":true,"opcode":"RETURN","output":null,"sequence":46},{"address":"0x10000054c","block_membership":"member","id":"0x10000054c#74","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},"sequence":74},{"address":"0x100000550","block_membership":"member","id":"0x100000550#49","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4}],"is_dead":true,"opcode":"RETURN","output":null,"sequence":49}],"parameter_uses":[{"input_index":0,"ordinal":0,"use":"0x10000052c#70"}],"parameters":[{"data_type":"/int","name":"param_1","ordinal":0}],"provenance":"ghidra-high-pcode","truncated":false},"outgoing_references":[{"kind":{"available":true,"call":false,"computed":false,"conditional":true,"data":false,"external":false,"flow":true,"indirect":false,"jump":true,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"CONDITIONAL_JUMP","write":false},"source_address":"0x100000538","source_procedure":{"address":"0x100000518","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000553","start":"0x100000518"}],"span_bytes":60,"total_bytes":60},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade"},"target_address":"0x10000054c","target_procedure":{"address":"0x100000518","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000553","start":"0x100000518"}],"span_bytes":60,"total_bytes":60},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade"}},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":1,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"DATA","write":false},"source_address":"0x100000544","source_procedure":{"address":"0x100000518","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000553","start":"0x100000518"}],"span_bytes":60,"total_bytes":60},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade"},"target_address":"0x1000007d0","target_procedure":null}],"procedure":{"address":"0x100000518","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000553","start":"0x100000518"}],"span_bytes":60,"total_bytes":60},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"locals":[],"name":"_grade","signature":"undefined _grade()"},"pseudocode":"\nundefined4 _grade(int param_1)\n\n{\n uint uVar1;\n \n uVar1 = param_1 / 10 - 6;\n if (uVar1 < 5) {\n return *(undefined4 *)(&DAT_1000007d0 + (ulong)uVar1 * 4);\n }\n return 0;\n}\n\n","referenced_names":[{"address":"0x10000054c","source_address":"0x100000538","value":"LAB_10000054c"},{"address":"0x1000007d0","source_address":"0x100000544","value":"DAT_1000007d0"}],"referenced_strings":[],"unresolved_calls":[]}},"relationship_coverage":{"diagnostics":["Only resolved Ghidra call references are returned; unresolved computed or indirect calls remain unknown, while function classifications distinguish thunks and externals."],"status":"complete"},"subject":{"architecture":"arm64","digest":{"sha256":"01b5d08b08fb94678be5919d0e753d44b505a53107c95b94634f0e5d41c9e375"},"format":"mach-o","local_path":"$CAPTURE/fixtures/ledger-arm64-O1","name":"ledger-arm64-O1"}},{"analysis_profile":{"digest":"3fc72c9b4b78498fb992b938f8f3389dc670244a293c1d40abf5e1d10162ed3b","parameters":{"analyzer_preset":"ghidra-default","annotation_policy":"atomic-function-entry-metadata-v1","architecture":"arm64","available_architectures":["arm64"],"call_relationship_coverage":"function-body-call-coverage-v5","compiler_spec_id":"auto-default","decompiler_jump_loads":true,"function_body_evidence":"complete-inclusive-ranges-v1","function_boundary_observations":"ghidra-function-boundary-limitations-v4","function_dossier_coverage":"observed-facets-and-call-relationships-v1","function_references":"complete-body-and-entry-reference-manager-v2","import_mode":"ephemeral-source-immutable","instruction_flow_evidence":"decoded-return-pcode-v1","instruction_references":"exact-address-incoming-without-synthetic-entry-v2","jump_table_evidence":"typed-case-default-blocks-v1","language_id":"auto-from-header","load_image_observations":"source-mappings-entry-context-v2","loader":"auto-from-header","location_resolution":"explicit-address-exact-entry-symbol-first-v3","no_return_repair":"returning-imports-decoded-return-v2","procedure_file_offset_resolution":"address-first-unique-target-source-mapping-v2","process_launch":"inspected-jvm-launch-support-v1","string_inventory_evidence":"defined-data-coverage-v1","target_format":"mach-o","target_kind":"executable"},"provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"}},"authority":"shipped-artifact","confidence":"observed","environment":null,"evidence_id":"ev_644b349575e2fd8b93a2a005f9c109d58c6dedec2866395446fdd966145888c2","evidence_links":[],"limitations":["The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.","The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.","Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.","Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.","The direct address list projects exact Ghidra references to one address but does not expose their kinds; procedure_references and analyze_function preserve available kind metadata.","Synthetic Ghidra entry-point references without actionable memory sources are omitted.","macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state."],"locations":[],"normalized_result":["0x10000811a"],"operation":"xrefs","parameters":{"address":"0x100000518"},"predicate_type":"rea.analysis","provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"},"raw_result":["0x10000811a"],"relationship_coverage":null,"subject":{"architecture":"arm64","digest":{"sha256":"01b5d08b08fb94678be5919d0e753d44b505a53107c95b94634f0e5d41c9e375"},"format":"mach-o","local_path":"$CAPTURE/fixtures/ledger-arm64-O1","name":"ledger-arm64-O1"}},{"analysis_profile":{"digest":"3fc72c9b4b78498fb992b938f8f3389dc670244a293c1d40abf5e1d10162ed3b","parameters":{"analyzer_preset":"ghidra-default","annotation_policy":"atomic-function-entry-metadata-v1","architecture":"arm64","available_architectures":["arm64"],"call_relationship_coverage":"function-body-call-coverage-v5","compiler_spec_id":"auto-default","decompiler_jump_loads":true,"function_body_evidence":"complete-inclusive-ranges-v1","function_boundary_observations":"ghidra-function-boundary-limitations-v4","function_dossier_coverage":"observed-facets-and-call-relationships-v1","function_references":"complete-body-and-entry-reference-manager-v2","import_mode":"ephemeral-source-immutable","instruction_flow_evidence":"decoded-return-pcode-v1","instruction_references":"exact-address-incoming-without-synthetic-entry-v2","jump_table_evidence":"typed-case-default-blocks-v1","language_id":"auto-from-header","load_image_observations":"source-mappings-entry-context-v2","loader":"auto-from-header","location_resolution":"explicit-address-exact-entry-symbol-first-v3","no_return_repair":"returning-imports-decoded-return-v2","procedure_file_offset_resolution":"address-first-unique-target-source-mapping-v2","process_launch":"inspected-jvm-launch-support-v1","string_inventory_evidence":"defined-data-coverage-v1","target_format":"mach-o","target_kind":"executable"},"provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"}},"authority":"shipped-artifact","confidence":"observed","environment":null,"evidence_id":"ev_a1fe53ff3596b1ba02c39f7b9e00bf06049dd1637d448b510157fbd81cbe21ec","evidence_links":[],"limitations":["The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.","The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.","Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.","Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.","References cover the complete Ghidra function-body AddressSet and exact entry. Dossier incoming edges omit sources owned by that function; procedure_references also retains those internal edges.","The dossier combines Ghidra FunctionManager, Listing, ReferenceManager, BasicBlockModel, and decompiler observations; provider-specific pseudocode and assembly are not cross-provider text invariants.","Resolved reference metadata identifies computed, indirect, external, call, jump, and data edges; unresolved targetless flows remain unknown, and function classifications distinguish thunks and externals.","Synthetic Ghidra entry-point references without actionable memory sources are omitted.","The Java bridge serializes one function request per Program and lets each decompilation run until it completes or the caller cancels.","macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state."],"locations":[],"normalized_result":{"assembly":["0x100000554: cmp w1, #0x1","0x100000558: b.lt 0x10000057c","0x10000055c: mov w8, #0x0","0x100000560: mov w9, w1","0x100000564: ldr w10, [x0], #0x4","0x100000568: add w8, w10, w8","0x10000056c: subs x9, x9, #0x1","0x100000570: b.ne 0x100000564","0x100000574: mov x0, x8","0x100000578: ret","0x10000057c: mov w8, #0x0","0x100000580: mov x0, x8","0x100000584: ret"],"basic_blocks":[{"end":"0x10000055c","start":"0x100000554","successors":["0x10000055c","0x10000057c"]},{"end":"0x100000564","start":"0x10000055c","successors":["0x100000564"]},{"end":"0x100000574","start":"0x100000564","successors":["0x100000564","0x100000574"]},{"end":"0x10000057c","start":"0x100000574","successors":[]},{"end":"0x100000588","start":"0x10000057c","successors":[]}],"callees":[],"callers":[{"address":"0x1000005d0","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x10000073f","start":"0x1000005d0"}],"span_bytes":368,"total_bytes":368},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"entry"}],"comments":[],"facet_availability":{"assembly":{"available":true},"callees":{"available":true},"callers":{"available":true},"cfg":{"available":true},"comments":{"available":true},"pseudocode":{"available":true},"references":{"available":true},"strings_names":{"available":true}},"incoming_references":[{"kind":{"available":true,"call":true,"computed":false,"conditional":false,"data":false,"external":false,"flow":true,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"UNCONDITIONAL_CALL","write":false},"source_address":"0x1000006bc","source_procedure":{"address":"0x1000005d0","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x10000073f","start":"0x1000005d0"}],"span_bytes":368,"total_bytes":368},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"entry"},"target_address":"0x100000554","target_procedure":{"address":"0x100000554","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000587","start":"0x100000554"}],"span_bytes":52,"total_bytes":52},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_total"}},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"DATA","write":false},"source_address":"0x10000811b","source_procedure":null,"target_address":"0x100000554","target_procedure":{"address":"0x100000554","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000587","start":"0x100000554"}],"span_bytes":52,"total_bytes":52},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_total"}}],"limitations":["Unresolved computed or indirect flows without target addresses are not represented as reference edges.","Thunk and external classifications are Ghidra FunctionManager observations; they do not resolve targetless calls.","Pseudocode and assembly are Ghidra-specific representations, not original source or Hopper-equivalent text.","Synthetic Ghidra entry-point references without actionable memory sources are omitted."],"native_api":{"available":true,"calling_convention":"__cdecl","decompiler_artifacts":["recovered-signature","register-and-stack-variables","compiler-generated-control-flow","pointer-arithmetic","pseudocode"],"jump_tables":[],"limitations":["Types and calling conventions are Ghidra decompiler observations, not source declarations.","Register variables, compiler-generated blocks, and pointer arithmetic remain decompiler artifacts.","Pseudocode is neither original source nor guaranteed to compile."],"parameters":[{"confidence":"low","data_type":"int *","decompiler_artifacts":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type int *.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":"param_1","ordinal":0,"role":"parameter","size_bytes":8,"storage":"x0:8"},{"confidence":"low","data_type":"uint","decompiler_artifacts":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type uint.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":"param_2","ordinal":1,"role":"parameter","size_bytes":4,"storage":"w1:4"}],"provenance":"ghidra-high-function","pseudocode":{"classification":"decompiler-generated-non-source","compilable":false},"return_type":{"confidence":"low","data_type":"int","decompiler_artifacts":["recovered-signature","register-or-stack-storage"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type int.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":null,"ordinal":null,"role":"return","size_bytes":4,"storage":"w0:4"},"signature_source":"default"},"native_value_flow":{"available":true,"def_use":[{"definition":"0x100000558#80","input_index":1,"use":"0x100000558#10"},{"definition":"0x100000558#10","input_index":1,"use":"0x100000558#11"},{"definition":"0x100000564#60","input_index":1,"use":"0x100000564#16"},{"definition":"0x100000560#78","input_index":0,"use":"0x100000564#60"},{"definition":"0x100000570#79","input_index":1,"use":"0x100000564#60"},{"definition":"0x100000560#13","input_index":0,"use":"0x100000564#63"},{"definition":"0x10000056c#28","input_index":1,"use":"0x100000564#63"},{"definition":"0x10000055c#76","input_index":0,"use":"0x100000564#73"},{"definition":"0x100000568#21","input_index":1,"use":"0x100000564#73"},{"definition":"0x100000564#60","input_index":0,"use":"0x100000564#77"},{"definition":"0x100000564#16","input_index":0,"use":"0x100000568#21"},{"definition":"0x100000564#73","input_index":1,"use":"0x100000568#21"},{"definition":"0x100000564#63","input_index":0,"use":"0x10000056c#28"},{"definition":"0x10000056c#28","input_index":0,"use":"0x10000056c#30"},{"definition":"0x10000056c#30","input_index":1,"use":"0x100000570#37"},{"definition":"0x100000564#77","input_index":0,"use":"0x100000570#79"},{"definition":"0x100000568#21","input_index":0,"use":"0x100000574#74"},{"definition":"0x100000574#74","input_index":1,"use":"0x100000578#40"},{"definition":"0x100000580#75","input_index":1,"use":"0x100000584#44"}],"effects":[{"kind":"conditional_branch","operand_input":null,"operation":"0x100000558#11","value_input":1},{"kind":"memory_read","operand_input":1,"operation":"0x100000564#16","value_input":null},{"kind":"conditional_branch","operand_input":null,"operation":"0x100000570#37","value_input":1}],"known_omitted_edges":0,"known_omitted_inputs":0,"limitations":["High p-code is decompiler-derived, not original source or runtime behavior. is_dead preserves the Java AST flag; decoded block members can retain that flag, so block_membership separately reports actual syntax-tree membership.","Def-use links do not cross function boundaries and may omit memory aliasing, call side effects, or unresolved indirect flow.","Memory read/write effects include stack and temporary memory operations; they do not identify persistent state or business meaning.","Operation, input, and def-use limits can truncate large functions; inspect truncation, omitted lower bounds, and known omitted counts before drawing conclusions.","Known omitted-edge counts cover links omitted from retained operations; omitted operations may contain additional uncounted links."],"omitted_operations_lower_bound":0,"operations":[{"address":"0x100000558","block_membership":"member","id":"0x100000558#10","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4},{"constant_hex":null,"kind":"unique","location":"unique:0x10000025","size_bytes":4}],"is_dead":true,"opcode":"INT_SLESS","output":{"constant_hex":null,"kind":"unique","location":"unique:0x2400","size_bytes":1},"sequence":10},{"address":"0x100000558","block_membership":"member","id":"0x100000558#11","inputs":[{"constant_hex":null,"kind":"address","location":"0x10000057c","size_bytes":1},{"constant_hex":null,"kind":"unique","location":"unique:0x2400","size_bytes":1}],"is_dead":true,"opcode":"CBRANCH","output":null,"sequence":11},{"address":"0x100000558","block_membership":"member","id":"0x100000558#80","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4008","size_bytes":4}],"is_dead":true,"opcode":"CAST","output":{"constant_hex":null,"kind":"unique","location":"unique:0x10000025","size_bytes":4},"sequence":80},{"address":"0x10000055c","block_membership":"member","id":"0x10000055c#76","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":4},"sequence":76},{"address":"0x100000560","block_membership":"member","id":"0x100000560#13","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4008","size_bytes":4}],"is_dead":true,"opcode":"INT_ZEXT","output":{"constant_hex":null,"kind":"register","location":"register:0x4048","size_bytes":8},"sequence":13},{"address":"0x100000560","block_membership":"member","id":"0x100000560#78","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"unique","location":"unique:0x10000015","size_bytes":8},"sequence":78},{"address":"0x100000564","block_membership":"member","id":"0x100000564#16","inputs":[{"constant_hex":"1b1","kind":"constant","location":null,"size_bytes":4},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8}],"is_dead":true,"opcode":"LOAD","output":{"constant_hex":null,"kind":"unique","location":"unique:0x49400","size_bytes":4},"sequence":16},{"address":"0x100000564","block_membership":"member","id":"0x100000564#60","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x10000015","size_bytes":8},{"constant_hex":null,"kind":"unique","location":"unique:0x1000001d","size_bytes":8}],"is_dead":true,"opcode":"MULTIEQUAL","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},"sequence":60},{"address":"0x100000564","block_membership":"member","id":"0x100000564#63","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4048","size_bytes":8},{"constant_hex":null,"kind":"unique","location":"unique:0x7b100","size_bytes":8}],"is_dead":true,"opcode":"MULTIEQUAL","output":{"constant_hex":null,"kind":"register","location":"register:0x4048","size_bytes":8},"sequence":63},{"address":"0x100000564","block_membership":"member","id":"0x100000564#73","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":4},{"constant_hex":null,"kind":"unique","location":"unique:0x23e00","size_bytes":4}],"is_dead":true,"opcode":"MULTIEQUAL","output":{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":4},"sequence":73},{"address":"0x100000564","block_membership":"member","id":"0x100000564#77","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},{"constant_hex":"1","kind":"constant","location":null,"size_bytes":8},{"constant_hex":"4","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"PTRADD","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},"sequence":77},{"address":"0x100000568","block_membership":"member","id":"0x100000568#21","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x49400","size_bytes":4},{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":4}],"is_dead":true,"opcode":"INT_ADD","output":{"constant_hex":null,"kind":"unique","location":"unique:0x23e00","size_bytes":4},"sequence":21},{"address":"0x10000056c","block_membership":"member","id":"0x10000056c#28","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4048","size_bytes":8},{"constant_hex":"1","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"INT_SUB","output":{"constant_hex":null,"kind":"unique","location":"unique:0x7b100","size_bytes":8},"sequence":28},{"address":"0x10000056c","block_membership":"member","id":"0x10000056c#30","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x7b100","size_bytes":8},{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"INT_NOTEQUAL","output":{"constant_hex":null,"kind":"register","location":"register:0x108","size_bytes":1},"sequence":30},{"address":"0x100000570","block_membership":"member","id":"0x100000570#37","inputs":[{"constant_hex":null,"kind":"address","location":"0x100000564","size_bytes":1},{"constant_hex":null,"kind":"register","location":"register:0x108","size_bytes":1}],"is_dead":true,"opcode":"CBRANCH","output":null,"sequence":37},{"address":"0x100000570","block_membership":"member","id":"0x100000570#79","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1000001d","size_bytes":8},"sequence":79},{"address":"0x100000574","block_membership":"member","id":"0x100000574#74","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x23e00","size_bytes":4}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},"sequence":74},{"address":"0x100000578","block_membership":"member","id":"0x100000578#40","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4}],"is_dead":true,"opcode":"RETURN","output":null,"sequence":40},{"address":"0x100000580","block_membership":"member","id":"0x100000580#75","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},"sequence":75},{"address":"0x100000584","block_membership":"member","id":"0x100000584#44","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4}],"is_dead":true,"opcode":"RETURN","output":null,"sequence":44}],"parameter_uses":[{"input_index":0,"ordinal":1,"use":"0x100000558#80"},{"input_index":0,"ordinal":1,"use":"0x100000560#13"},{"input_index":0,"ordinal":0,"use":"0x100000560#78"},{"input_index":1,"ordinal":0,"use":"0x100000564#16"},{"input_index":0,"ordinal":0,"use":"0x100000564#60"},{"input_index":1,"ordinal":0,"use":"0x100000564#60"},{"input_index":0,"ordinal":0,"use":"0x100000564#77"}],"parameters":[{"data_type":"/int *","name":"param_1","ordinal":0},{"data_type":"/uint","name":"param_2","ordinal":1}],"provenance":"ghidra-high-pcode","truncated":false},"outgoing_references":[{"kind":{"available":true,"call":false,"computed":false,"conditional":true,"data":false,"external":false,"flow":true,"indirect":false,"jump":true,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"CONDITIONAL_JUMP","write":false},"source_address":"0x100000558","source_procedure":{"address":"0x100000554","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000587","start":"0x100000554"}],"span_bytes":52,"total_bytes":52},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_total"},"target_address":"0x10000057c","target_procedure":{"address":"0x100000554","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000587","start":"0x100000554"}],"span_bytes":52,"total_bytes":52},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_total"}},{"kind":{"available":true,"call":false,"computed":false,"conditional":true,"data":false,"external":false,"flow":true,"indirect":false,"jump":true,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"CONDITIONAL_JUMP","write":false},"source_address":"0x100000570","source_procedure":{"address":"0x100000554","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000587","start":"0x100000554"}],"span_bytes":52,"total_bytes":52},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_total"},"target_address":"0x100000564","target_procedure":{"address":"0x100000554","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000587","start":"0x100000554"}],"span_bytes":52,"total_bytes":52},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_total"}}],"procedure":{"address":"0x100000554","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000587","start":"0x100000554"}],"span_bytes":52,"total_bytes":52},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"locals":[],"name":"_total","signature":"undefined _total()"},"pseudocode":"\nint _total(int *param_1,uint param_2)\n\n{\n int iVar1;\n ulong uVar2;\n \n if (0 < (int)param_2) {\n iVar1 = 0;\n uVar2 = (ulong)param_2;\n do {\n iVar1 = *param_1 + iVar1;\n uVar2 = uVar2 - 1;\n param_1 = param_1 + 1;\n } while (uVar2 != 0);\n return iVar1;\n }\n return 0;\n}\n\n","referenced_names":[{"address":"0x100000564","source_address":"0x100000570","value":"LAB_100000564"},{"address":"0x10000057c","source_address":"0x100000558","value":"LAB_10000057c"}],"referenced_strings":[],"unresolved_calls":[]},"operation":"analyze_function","parameters":{"procedure":"_total"},"predicate_type":"rea.analysis","provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"},"raw_result":{"limitations":[],"relationship_coverage":{"diagnostics":["Only resolved Ghidra call references are returned; unresolved computed or indirect calls remain unknown, while function classifications distinguish thunks and externals."],"status":"complete"},"value":{"assembly":["0x100000554: cmp w1, #0x1","0x100000558: b.lt 0x10000057c","0x10000055c: mov w8, #0x0","0x100000560: mov w9, w1","0x100000564: ldr w10, [x0], #0x4","0x100000568: add w8, w10, w8","0x10000056c: subs x9, x9, #0x1","0x100000570: b.ne 0x100000564","0x100000574: mov x0, x8","0x100000578: ret","0x10000057c: mov w8, #0x0","0x100000580: mov x0, x8","0x100000584: ret"],"basic_blocks":[{"end":"0x10000055c","start":"0x100000554","successors":["0x10000055c","0x10000057c"]},{"end":"0x100000564","start":"0x10000055c","successors":["0x100000564"]},{"end":"0x100000574","start":"0x100000564","successors":["0x100000564","0x100000574"]},{"end":"0x10000057c","start":"0x100000574","successors":[]},{"end":"0x100000588","start":"0x10000057c","successors":[]}],"callees":[],"callers":[{"address":"0x1000005d0","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x10000073f","start":"0x1000005d0"}],"span_bytes":368,"total_bytes":368},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"entry"}],"comments":[],"facet_availability":{"assembly":{"available":true},"callees":{"available":true},"callers":{"available":true},"cfg":{"available":true},"comments":{"available":true},"pseudocode":{"available":true},"references":{"available":true},"strings_names":{"available":true}},"incoming_references":[{"kind":{"available":true,"call":true,"computed":false,"conditional":false,"data":false,"external":false,"flow":true,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"UNCONDITIONAL_CALL","write":false},"source_address":"0x1000006bc","source_procedure":{"address":"0x1000005d0","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x10000073f","start":"0x1000005d0"}],"span_bytes":368,"total_bytes":368},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"entry"},"target_address":"0x100000554","target_procedure":{"address":"0x100000554","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000587","start":"0x100000554"}],"span_bytes":52,"total_bytes":52},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_total"}},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"DATA","write":false},"source_address":"0x10000811b","source_procedure":null,"target_address":"0x100000554","target_procedure":{"address":"0x100000554","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000587","start":"0x100000554"}],"span_bytes":52,"total_bytes":52},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_total"}}],"limitations":["Unresolved computed or indirect flows without target addresses are not represented as reference edges.","Thunk and external classifications are Ghidra FunctionManager observations; they do not resolve targetless calls.","Pseudocode and assembly are Ghidra-specific representations, not original source or Hopper-equivalent text.","Synthetic Ghidra entry-point references without actionable memory sources are omitted."],"native_api":{"available":true,"calling_convention":"__cdecl","decompiler_artifacts":["recovered-signature","register-and-stack-variables","compiler-generated-control-flow","pointer-arithmetic","pseudocode"],"jump_tables":[],"limitations":["Types and calling conventions are Ghidra decompiler observations, not source declarations.","Register variables, compiler-generated blocks, and pointer arithmetic remain decompiler artifacts.","Pseudocode is neither original source nor guaranteed to compile."],"parameters":[{"confidence":"low","data_type":"int *","decompiler_artifacts":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type int *.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":"param_1","ordinal":0,"role":"parameter","size_bytes":8,"storage":"x0:8"},{"confidence":"low","data_type":"uint","decompiler_artifacts":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type uint.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":"param_2","ordinal":1,"role":"parameter","size_bytes":4,"storage":"w1:4"}],"provenance":"ghidra-high-function","pseudocode":{"classification":"decompiler-generated-non-source","compilable":false},"return_type":{"confidence":"low","data_type":"int","decompiler_artifacts":["recovered-signature","register-or-stack-storage"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type int.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":null,"ordinal":null,"role":"return","size_bytes":4,"storage":"w0:4"},"signature_source":"default"},"native_value_flow":{"available":true,"def_use":[{"definition":"0x100000558#80","input_index":1,"use":"0x100000558#10"},{"definition":"0x100000558#10","input_index":1,"use":"0x100000558#11"},{"definition":"0x100000564#60","input_index":1,"use":"0x100000564#16"},{"definition":"0x100000560#78","input_index":0,"use":"0x100000564#60"},{"definition":"0x100000570#79","input_index":1,"use":"0x100000564#60"},{"definition":"0x100000560#13","input_index":0,"use":"0x100000564#63"},{"definition":"0x10000056c#28","input_index":1,"use":"0x100000564#63"},{"definition":"0x10000055c#76","input_index":0,"use":"0x100000564#73"},{"definition":"0x100000568#21","input_index":1,"use":"0x100000564#73"},{"definition":"0x100000564#60","input_index":0,"use":"0x100000564#77"},{"definition":"0x100000564#16","input_index":0,"use":"0x100000568#21"},{"definition":"0x100000564#73","input_index":1,"use":"0x100000568#21"},{"definition":"0x100000564#63","input_index":0,"use":"0x10000056c#28"},{"definition":"0x10000056c#28","input_index":0,"use":"0x10000056c#30"},{"definition":"0x10000056c#30","input_index":1,"use":"0x100000570#37"},{"definition":"0x100000564#77","input_index":0,"use":"0x100000570#79"},{"definition":"0x100000568#21","input_index":0,"use":"0x100000574#74"},{"definition":"0x100000574#74","input_index":1,"use":"0x100000578#40"},{"definition":"0x100000580#75","input_index":1,"use":"0x100000584#44"}],"effects":[{"kind":"conditional_branch","operand_input":null,"operation":"0x100000558#11","value_input":1},{"kind":"memory_read","operand_input":1,"operation":"0x100000564#16","value_input":null},{"kind":"conditional_branch","operand_input":null,"operation":"0x100000570#37","value_input":1}],"known_omitted_edges":0,"known_omitted_inputs":0,"limitations":["High p-code is decompiler-derived, not original source or runtime behavior. is_dead preserves the Java AST flag; decoded block members can retain that flag, so block_membership separately reports actual syntax-tree membership.","Def-use links do not cross function boundaries and may omit memory aliasing, call side effects, or unresolved indirect flow.","Memory read/write effects include stack and temporary memory operations; they do not identify persistent state or business meaning.","Operation, input, and def-use limits can truncate large functions; inspect truncation, omitted lower bounds, and known omitted counts before drawing conclusions.","Known omitted-edge counts cover links omitted from retained operations; omitted operations may contain additional uncounted links."],"omitted_operations_lower_bound":0,"operations":[{"address":"0x100000558","block_membership":"member","id":"0x100000558#10","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4},{"constant_hex":null,"kind":"unique","location":"unique:0x10000025","size_bytes":4}],"is_dead":true,"opcode":"INT_SLESS","output":{"constant_hex":null,"kind":"unique","location":"unique:0x2400","size_bytes":1},"sequence":10},{"address":"0x100000558","block_membership":"member","id":"0x100000558#11","inputs":[{"constant_hex":null,"kind":"address","location":"0x10000057c","size_bytes":1},{"constant_hex":null,"kind":"unique","location":"unique:0x2400","size_bytes":1}],"is_dead":true,"opcode":"CBRANCH","output":null,"sequence":11},{"address":"0x100000558","block_membership":"member","id":"0x100000558#80","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4008","size_bytes":4}],"is_dead":true,"opcode":"CAST","output":{"constant_hex":null,"kind":"unique","location":"unique:0x10000025","size_bytes":4},"sequence":80},{"address":"0x10000055c","block_membership":"member","id":"0x10000055c#76","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":4},"sequence":76},{"address":"0x100000560","block_membership":"member","id":"0x100000560#13","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4008","size_bytes":4}],"is_dead":true,"opcode":"INT_ZEXT","output":{"constant_hex":null,"kind":"register","location":"register:0x4048","size_bytes":8},"sequence":13},{"address":"0x100000560","block_membership":"member","id":"0x100000560#78","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"unique","location":"unique:0x10000015","size_bytes":8},"sequence":78},{"address":"0x100000564","block_membership":"member","id":"0x100000564#16","inputs":[{"constant_hex":"1b1","kind":"constant","location":null,"size_bytes":4},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8}],"is_dead":true,"opcode":"LOAD","output":{"constant_hex":null,"kind":"unique","location":"unique:0x49400","size_bytes":4},"sequence":16},{"address":"0x100000564","block_membership":"member","id":"0x100000564#60","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x10000015","size_bytes":8},{"constant_hex":null,"kind":"unique","location":"unique:0x1000001d","size_bytes":8}],"is_dead":true,"opcode":"MULTIEQUAL","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},"sequence":60},{"address":"0x100000564","block_membership":"member","id":"0x100000564#63","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4048","size_bytes":8},{"constant_hex":null,"kind":"unique","location":"unique:0x7b100","size_bytes":8}],"is_dead":true,"opcode":"MULTIEQUAL","output":{"constant_hex":null,"kind":"register","location":"register:0x4048","size_bytes":8},"sequence":63},{"address":"0x100000564","block_membership":"member","id":"0x100000564#73","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":4},{"constant_hex":null,"kind":"unique","location":"unique:0x23e00","size_bytes":4}],"is_dead":true,"opcode":"MULTIEQUAL","output":{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":4},"sequence":73},{"address":"0x100000564","block_membership":"member","id":"0x100000564#77","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},{"constant_hex":"1","kind":"constant","location":null,"size_bytes":8},{"constant_hex":"4","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"PTRADD","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},"sequence":77},{"address":"0x100000568","block_membership":"member","id":"0x100000568#21","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x49400","size_bytes":4},{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":4}],"is_dead":true,"opcode":"INT_ADD","output":{"constant_hex":null,"kind":"unique","location":"unique:0x23e00","size_bytes":4},"sequence":21},{"address":"0x10000056c","block_membership":"member","id":"0x10000056c#28","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4048","size_bytes":8},{"constant_hex":"1","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"INT_SUB","output":{"constant_hex":null,"kind":"unique","location":"unique:0x7b100","size_bytes":8},"sequence":28},{"address":"0x10000056c","block_membership":"member","id":"0x10000056c#30","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x7b100","size_bytes":8},{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"INT_NOTEQUAL","output":{"constant_hex":null,"kind":"register","location":"register:0x108","size_bytes":1},"sequence":30},{"address":"0x100000570","block_membership":"member","id":"0x100000570#37","inputs":[{"constant_hex":null,"kind":"address","location":"0x100000564","size_bytes":1},{"constant_hex":null,"kind":"register","location":"register:0x108","size_bytes":1}],"is_dead":true,"opcode":"CBRANCH","output":null,"sequence":37},{"address":"0x100000570","block_membership":"member","id":"0x100000570#79","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1000001d","size_bytes":8},"sequence":79},{"address":"0x100000574","block_membership":"member","id":"0x100000574#74","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x23e00","size_bytes":4}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},"sequence":74},{"address":"0x100000578","block_membership":"member","id":"0x100000578#40","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4}],"is_dead":true,"opcode":"RETURN","output":null,"sequence":40},{"address":"0x100000580","block_membership":"member","id":"0x100000580#75","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},"sequence":75},{"address":"0x100000584","block_membership":"member","id":"0x100000584#44","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4}],"is_dead":true,"opcode":"RETURN","output":null,"sequence":44}],"parameter_uses":[{"input_index":0,"ordinal":1,"use":"0x100000558#80"},{"input_index":0,"ordinal":1,"use":"0x100000560#13"},{"input_index":0,"ordinal":0,"use":"0x100000560#78"},{"input_index":1,"ordinal":0,"use":"0x100000564#16"},{"input_index":0,"ordinal":0,"use":"0x100000564#60"},{"input_index":1,"ordinal":0,"use":"0x100000564#60"},{"input_index":0,"ordinal":0,"use":"0x100000564#77"}],"parameters":[{"data_type":"/int *","name":"param_1","ordinal":0},{"data_type":"/uint","name":"param_2","ordinal":1}],"provenance":"ghidra-high-pcode","truncated":false},"outgoing_references":[{"kind":{"available":true,"call":false,"computed":false,"conditional":true,"data":false,"external":false,"flow":true,"indirect":false,"jump":true,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"CONDITIONAL_JUMP","write":false},"source_address":"0x100000558","source_procedure":{"address":"0x100000554","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000587","start":"0x100000554"}],"span_bytes":52,"total_bytes":52},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_total"},"target_address":"0x10000057c","target_procedure":{"address":"0x100000554","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000587","start":"0x100000554"}],"span_bytes":52,"total_bytes":52},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_total"}},{"kind":{"available":true,"call":false,"computed":false,"conditional":true,"data":false,"external":false,"flow":true,"indirect":false,"jump":true,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"CONDITIONAL_JUMP","write":false},"source_address":"0x100000570","source_procedure":{"address":"0x100000554","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000587","start":"0x100000554"}],"span_bytes":52,"total_bytes":52},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_total"},"target_address":"0x100000564","target_procedure":{"address":"0x100000554","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000587","start":"0x100000554"}],"span_bytes":52,"total_bytes":52},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_total"}}],"procedure":{"address":"0x100000554","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000587","start":"0x100000554"}],"span_bytes":52,"total_bytes":52},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"locals":[],"name":"_total","signature":"undefined _total()"},"pseudocode":"\nint _total(int *param_1,uint param_2)\n\n{\n int iVar1;\n ulong uVar2;\n \n if (0 < (int)param_2) {\n iVar1 = 0;\n uVar2 = (ulong)param_2;\n do {\n iVar1 = *param_1 + iVar1;\n uVar2 = uVar2 - 1;\n param_1 = param_1 + 1;\n } while (uVar2 != 0);\n return iVar1;\n }\n return 0;\n}\n\n","referenced_names":[{"address":"0x100000564","source_address":"0x100000570","value":"LAB_100000564"},{"address":"0x10000057c","source_address":"0x100000558","value":"LAB_10000057c"}],"referenced_strings":[],"unresolved_calls":[]}},"relationship_coverage":{"diagnostics":["Only resolved Ghidra call references are returned; unresolved computed or indirect calls remain unknown, while function classifications distinguish thunks and externals."],"status":"complete"},"subject":{"architecture":"arm64","digest":{"sha256":"01b5d08b08fb94678be5919d0e753d44b505a53107c95b94634f0e5d41c9e375"},"format":"mach-o","local_path":"$CAPTURE/fixtures/ledger-arm64-O1","name":"ledger-arm64-O1"}},{"analysis_profile":{"digest":"3fc72c9b4b78498fb992b938f8f3389dc670244a293c1d40abf5e1d10162ed3b","parameters":{"analyzer_preset":"ghidra-default","annotation_policy":"atomic-function-entry-metadata-v1","architecture":"arm64","available_architectures":["arm64"],"call_relationship_coverage":"function-body-call-coverage-v5","compiler_spec_id":"auto-default","decompiler_jump_loads":true,"function_body_evidence":"complete-inclusive-ranges-v1","function_boundary_observations":"ghidra-function-boundary-limitations-v4","function_dossier_coverage":"observed-facets-and-call-relationships-v1","function_references":"complete-body-and-entry-reference-manager-v2","import_mode":"ephemeral-source-immutable","instruction_flow_evidence":"decoded-return-pcode-v1","instruction_references":"exact-address-incoming-without-synthetic-entry-v2","jump_table_evidence":"typed-case-default-blocks-v1","language_id":"auto-from-header","load_image_observations":"source-mappings-entry-context-v2","loader":"auto-from-header","location_resolution":"explicit-address-exact-entry-symbol-first-v3","no_return_repair":"returning-imports-decoded-return-v2","procedure_file_offset_resolution":"address-first-unique-target-source-mapping-v2","process_launch":"inspected-jvm-launch-support-v1","string_inventory_evidence":"defined-data-coverage-v1","target_format":"mach-o","target_kind":"executable"},"provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"}},"authority":"shipped-artifact","confidence":"observed","environment":null,"evidence_id":"ev_ad37f574a03f9f609fc1d9fb85a4661bc8679331d05fc50a47f8017aba715134","evidence_links":[],"limitations":["The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.","The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.","Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.","Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.","Only Ghidra-defined string Data is observed; packed or undefined string bytes may be absent. Completeness applies to that inventory, and an empty search does not establish that text is absent from the artifact. If an address is known, use read_bytes and xrefs to inspect bytes and references.","Charset is reported, while a non-missing terminator cannot distinguish a present terminator from a fixed or Pascal layout.","macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state."],"locations":[],"normalized_result":[{"address":"0x100000404","string":{"byte_length":20,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"/usr/lib/dyld"},{"address":"0x100000490","string":{"byte_length":32,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"/usr/lib/libSystem.B.dylib"},{"address":"0x100000770","string":{"byte_length":2,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"F"},{"address":"0x100000772","string":{"byte_length":2,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"D"},{"address":"0x100000774","string":{"byte_length":2,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"C"},{"address":"0x100000776","string":{"byte_length":2,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"B"},{"address":"0x100000778","string":{"byte_length":2,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"A"},{"address":"0x10000077a","string":{"byte_length":43,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"usage: ledger [score...]\n"},{"address":"0x1000007a5","string":{"byte_length":13,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"change %d%%\n"},{"address":"0x1000007b2","string":{"byte_length":10,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"total %d\n"},{"address":"0x1000007bc","string":{"byte_length":19,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"score %d grade %s\n"},{"address":"0x1000007cf","string":{"byte_length":1,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":""},{"address":"0x100008069","string":{"byte_length":18,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"___stack_chk_fail"},{"address":"0x10000807b","string":{"byte_length":19,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"___stack_chk_guard"},{"address":"0x10000808e","string":{"byte_length":11,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"___stderrp"},{"address":"0x100008099","string":{"byte_length":6,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_atoi"},{"address":"0x10000809f","string":{"byte_length":8,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_fwrite"},{"address":"0x1000080a7","string":{"byte_length":8,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_printf"},{"address":"0x1000080b2","string":{"byte_length":2,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_"},{"address":"0x1000080c7","string":{"byte_length":7,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_label"},{"address":"0x1000080e0","string":{"byte_length":19,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_mh_execute_header"},{"address":"0x1000080f4","string":{"byte_length":6,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"grade"},{"address":"0x1000080fb","string":{"byte_length":5,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"main"},{"address":"0x100008101","string":{"byte_length":15,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"percent_change"},{"address":"0x100008111","string":{"byte_length":6,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"total"},{"address":"0x10000821a","string":{"byte_length":20,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"__mh_execute_header"},{"address":"0x10000822e","string":{"byte_length":7,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_grade"},{"address":"0x100008235","string":{"byte_length":13,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_grade_label"},{"address":"0x100008242","string":{"byte_length":6,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_main"},{"address":"0x100008248","string":{"byte_length":16,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_percent_change"},{"address":"0x100008258","string":{"byte_length":7,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_total"},{"address":"0x10000825f","string":{"byte_length":18,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"___stack_chk_fail"},{"address":"0x100008271","string":{"byte_length":19,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"___stack_chk_guard"},{"address":"0x100008284","string":{"byte_length":11,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"___stderrp"},{"address":"0x10000828f","string":{"byte_length":6,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_atoi"},{"address":"0x100008295","string":{"byte_length":8,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_fwrite"},{"address":"0x10000829d","string":{"byte_length":8,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_printf"},{"address":"0x1000082a5","string":{"byte_length":8,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_labels"},{"address":"0x10000831c","string":{"byte_length":16,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"ledger-arm64-O1"}],"operation":"list_strings","parameters":{},"predicate_type":"rea.analysis","provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"},"raw_result":[{"address":"0x100000404","string":{"byte_length":20,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"/usr/lib/dyld"},{"address":"0x100000490","string":{"byte_length":32,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"/usr/lib/libSystem.B.dylib"},{"address":"0x100000770","string":{"byte_length":2,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"F"},{"address":"0x100000772","string":{"byte_length":2,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"D"},{"address":"0x100000774","string":{"byte_length":2,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"C"},{"address":"0x100000776","string":{"byte_length":2,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"B"},{"address":"0x100000778","string":{"byte_length":2,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"A"},{"address":"0x10000077a","string":{"byte_length":43,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"usage: ledger [score...]\n"},{"address":"0x1000007a5","string":{"byte_length":13,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"change %d%%\n"},{"address":"0x1000007b2","string":{"byte_length":10,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"total %d\n"},{"address":"0x1000007bc","string":{"byte_length":19,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"score %d grade %s\n"},{"address":"0x1000007cf","string":{"byte_length":1,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":""},{"address":"0x100008069","string":{"byte_length":18,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"___stack_chk_fail"},{"address":"0x10000807b","string":{"byte_length":19,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"___stack_chk_guard"},{"address":"0x10000808e","string":{"byte_length":11,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"___stderrp"},{"address":"0x100008099","string":{"byte_length":6,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_atoi"},{"address":"0x10000809f","string":{"byte_length":8,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_fwrite"},{"address":"0x1000080a7","string":{"byte_length":8,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_printf"},{"address":"0x1000080b2","string":{"byte_length":2,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_"},{"address":"0x1000080c7","string":{"byte_length":7,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_label"},{"address":"0x1000080e0","string":{"byte_length":19,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_mh_execute_header"},{"address":"0x1000080f4","string":{"byte_length":6,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"grade"},{"address":"0x1000080fb","string":{"byte_length":5,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"main"},{"address":"0x100008101","string":{"byte_length":15,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"percent_change"},{"address":"0x100008111","string":{"byte_length":6,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"total"},{"address":"0x10000821a","string":{"byte_length":20,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"__mh_execute_header"},{"address":"0x10000822e","string":{"byte_length":7,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_grade"},{"address":"0x100008235","string":{"byte_length":13,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_grade_label"},{"address":"0x100008242","string":{"byte_length":6,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_main"},{"address":"0x100008248","string":{"byte_length":16,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_percent_change"},{"address":"0x100008258","string":{"byte_length":7,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_total"},{"address":"0x10000825f","string":{"byte_length":18,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"___stack_chk_fail"},{"address":"0x100008271","string":{"byte_length":19,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"___stack_chk_guard"},{"address":"0x100008284","string":{"byte_length":11,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"___stderrp"},{"address":"0x10000828f","string":{"byte_length":6,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_atoi"},{"address":"0x100008295","string":{"byte_length":8,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_fwrite"},{"address":"0x10000829d","string":{"byte_length":8,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_printf"},{"address":"0x1000082a5","string":{"byte_length":8,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"_labels"},{"address":"0x10000831c","string":{"byte_length":16,"encoding":"US-ASCII","termination":"present_or_not_required"},"value":"ledger-arm64-O1"}],"relationship_coverage":null,"subject":{"architecture":"arm64","digest":{"sha256":"01b5d08b08fb94678be5919d0e753d44b505a53107c95b94634f0e5d41c9e375"},"format":"mach-o","local_path":"$CAPTURE/fixtures/ledger-arm64-O1","name":"ledger-arm64-O1"}},{"analysis_profile":{"digest":"3fc72c9b4b78498fb992b938f8f3389dc670244a293c1d40abf5e1d10162ed3b","parameters":{"analyzer_preset":"ghidra-default","annotation_policy":"atomic-function-entry-metadata-v1","architecture":"arm64","available_architectures":["arm64"],"call_relationship_coverage":"function-body-call-coverage-v5","compiler_spec_id":"auto-default","decompiler_jump_loads":true,"function_body_evidence":"complete-inclusive-ranges-v1","function_boundary_observations":"ghidra-function-boundary-limitations-v4","function_dossier_coverage":"observed-facets-and-call-relationships-v1","function_references":"complete-body-and-entry-reference-manager-v2","import_mode":"ephemeral-source-immutable","instruction_flow_evidence":"decoded-return-pcode-v1","instruction_references":"exact-address-incoming-without-synthetic-entry-v2","jump_table_evidence":"typed-case-default-blocks-v1","language_id":"auto-from-header","load_image_observations":"source-mappings-entry-context-v2","loader":"auto-from-header","location_resolution":"explicit-address-exact-entry-symbol-first-v3","no_return_repair":"returning-imports-decoded-return-v2","procedure_file_offset_resolution":"address-first-unique-target-source-mapping-v2","process_launch":"inspected-jvm-launch-support-v1","string_inventory_evidence":"defined-data-coverage-v1","target_format":"mach-o","target_kind":"executable"},"provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"}},"authority":"shipped-artifact","confidence":"observed","environment":null,"evidence_id":"ev_b201cfd0ea1db43a8b371a031005c1c57971729aaf6a68ea4bad1546825a4bd8","evidence_links":[],"limitations":["The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.","The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.","Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.","Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.","References cover the complete Ghidra function-body AddressSet and exact entry. Dossier incoming edges omit sources owned by that function; procedure_references also retains those internal edges.","The dossier combines Ghidra FunctionManager, Listing, ReferenceManager, BasicBlockModel, and decompiler observations; provider-specific pseudocode and assembly are not cross-provider text invariants.","Resolved reference metadata identifies computed, indirect, external, call, jump, and data edges; unresolved targetless flows remain unknown, and function classifications distinguish thunks and externals.","Synthetic Ghidra entry-point references without actionable memory sources are omitted.","The Java bridge serializes one function request per Program and lets each decompilation run until it completes or the caller cancels.","macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state."],"locations":[],"normalized_result":{"assembly":["0x100000588: mov w8, #0x6667","0x10000058c: movk w8, #0x6666, LSL #16","0x100000590: smull x8, w0, w8","0x100000594: lsr x9, x8, #0x3f","0x100000598: asr x8, x8, #0x22","0x10000059c: add w8, w8, w9","0x1000005a0: sub w8, w8, #0x6","0x1000005a4: cmp w8, #0x4","0x1000005a8: b.hi 0x1000005bc","0x1000005ac: adrp x9, 0x100000000","0x1000005b0: add x9, x9, #0x7e8","0x1000005b4: ldr x8, [x9, w8, UXTW #0x3]","0x1000005b8: b 0x1000005c0","0x1000005bc: mov x8, #0x0","0x1000005c0: adrp x9, 0x100004000","0x1000005c4: add x9, x9, #0x30","0x1000005c8: ldr x0, [x9, x8, LSL #0x3]","0x1000005cc: ret"],"basic_blocks":[{"end":"0x1000005ac","start":"0x100000588","successors":["0x1000005ac","0x1000005bc"]},{"end":"0x1000005bc","start":"0x1000005ac","successors":["0x1000005c0"]},{"end":"0x1000005c0","start":"0x1000005bc","successors":["0x1000005c0"]},{"end":"0x1000005d0","start":"0x1000005c0","successors":[]}],"callees":[],"callers":[{"address":"0x1000005d0","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x10000073f","start":"0x1000005d0"}],"span_bytes":368,"total_bytes":368},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"entry"}],"comments":[],"facet_availability":{"assembly":{"available":true},"callees":{"available":true},"callers":{"available":true},"cfg":{"available":true},"comments":{"available":true},"pseudocode":{"available":true},"references":{"available":true},"strings_names":{"available":true}},"incoming_references":[{"kind":{"available":true,"call":true,"computed":false,"conditional":false,"data":false,"external":false,"flow":true,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"UNCONDITIONAL_CALL","write":false},"source_address":"0x1000006ec","source_procedure":{"address":"0x1000005d0","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x10000073f","start":"0x1000005d0"}],"span_bytes":368,"total_bytes":368},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"entry"},"target_address":"0x100000588","target_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"}},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"DATA","write":false},"source_address":"0x10000811c","source_procedure":null,"target_address":"0x100000588","target_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"}}],"limitations":["Unresolved computed or indirect flows without target addresses are not represented as reference edges.","Thunk and external classifications are Ghidra FunctionManager observations; they do not resolve targetless calls.","Pseudocode and assembly are Ghidra-specific representations, not original source or Hopper-equivalent text.","Synthetic Ghidra entry-point references without actionable memory sources are omitted."],"native_api":{"available":true,"calling_convention":"__cdecl","decompiler_artifacts":["recovered-signature","register-and-stack-variables","compiler-generated-control-flow","pointer-arithmetic","pseudocode"],"jump_tables":[],"limitations":["Types and calling conventions are Ghidra decompiler observations, not source declarations.","Register variables, compiler-generated blocks, and pointer arithmetic remain decompiler artifacts.","Pseudocode is neither original source nor guaranteed to compile."],"parameters":[{"confidence":"low","data_type":"int","decompiler_artifacts":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type int.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":"param_1","ordinal":0,"role":"parameter","size_bytes":4,"storage":"w0:4"}],"provenance":"ghidra-high-function","pseudocode":{"classification":"decompiler-generated-non-source","compilable":false},"return_type":{"confidence":"low","data_type":"undefined *","decompiler_artifacts":["recovered-signature","register-or-stack-storage"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type undefined *.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":null,"ordinal":null,"role":"return","size_bytes":8,"storage":"x0:8"},"signature_source":"default"},"native_value_flow":{"available":true,"def_use":[{"definition":"0x10000059c#92","input_index":0,"use":"0x1000005a0#16"},{"definition":"0x1000005a0#16","input_index":0,"use":"0x1000005a8#29"},{"definition":"0x1000005a8#29","input_index":1,"use":"0x1000005a8#30"},{"definition":"0x1000005a0#16","input_index":0,"use":"0x1000005b4#39"},{"definition":"0x1000005b4#39","input_index":0,"use":"0x1000005b4#41"},{"definition":"0x1000005b4#94","input_index":0,"use":"0x1000005b4#42"},{"definition":"0x1000005b4#41","input_index":1,"use":"0x1000005b4#42"},{"definition":"0x1000005b4#97","input_index":1,"use":"0x1000005b4#43"},{"definition":"0x1000005b4#42","input_index":0,"use":"0x1000005b4#97"},{"definition":"0x1000005b4#43","input_index":0,"use":"0x1000005c0#81"},{"definition":"0x1000005bc#60","input_index":1,"use":"0x1000005c0#81"},{"definition":"0x1000005c8#96","input_index":1,"use":"0x1000005c8#57"},{"definition":"0x1000005c8#95","input_index":0,"use":"0x1000005c8#96"},{"definition":"0x1000005c0#81","input_index":1,"use":"0x1000005c8#96"},{"definition":"0x1000005c8#57","input_index":1,"use":"0x1000005cc#59"}],"effects":[{"kind":"conditional_branch","operand_input":null,"operation":"0x1000005a8#30","value_input":1},{"kind":"memory_read","operand_input":1,"operation":"0x1000005b4#43","value_input":null},{"kind":"memory_read","operand_input":1,"operation":"0x1000005c8#57","value_input":null}],"known_omitted_edges":0,"known_omitted_inputs":0,"limitations":["High p-code is decompiler-derived, not original source or runtime behavior. is_dead preserves the Java AST flag; decoded block members can retain that flag, so block_membership separately reports actual syntax-tree membership.","Def-use links do not cross function boundaries and may omit memory aliasing, call side effects, or unresolved indirect flow.","Memory read/write effects include stack and temporary memory operations; they do not identify persistent state or business meaning.","Operation, input, and def-use limits can truncate large functions; inspect truncation, omitted lower bounds, and known omitted counts before drawing conclusions.","Known omitted-edge counts cover links omitted from retained operations; omitted operations may contain additional uncounted links."],"omitted_operations_lower_bound":0,"operations":[{"address":"0x10000059c","block_membership":"member","id":"0x10000059c#92","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},{"constant_hex":"a","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_SDIV","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1000001c","size_bytes":4},"sequence":92},{"address":"0x1000005a0","block_membership":"member","id":"0x1000005a0#16","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x1000001c","size_bytes":4},{"constant_hex":"6","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_SUB","output":{"constant_hex":null,"kind":"unique","location":"unique:0x78d00","size_bytes":4},"sequence":16},{"address":"0x1000005a8","block_membership":"member","id":"0x1000005a8#29","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x78d00","size_bytes":4},{"constant_hex":"5","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_LESS","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1d00","size_bytes":1},"sequence":29},{"address":"0x1000005a8","block_membership":"member","id":"0x1000005a8#30","inputs":[{"constant_hex":null,"kind":"address","location":"0x1000005bc","size_bytes":1},{"constant_hex":null,"kind":"unique","location":"unique:0x1d00","size_bytes":1}],"is_dead":true,"opcode":"CBRANCH","output":null,"sequence":30},{"address":"0x1000005b4","block_membership":"member","id":"0x1000005b4#39","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x78d00","size_bytes":4}],"is_dead":true,"opcode":"INT_ZEXT","output":{"constant_hex":null,"kind":"unique","location":"unique:0xab00","size_bytes":8},"sequence":39},{"address":"0x1000005b4","block_membership":"member","id":"0x1000005b4#41","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0xab00","size_bytes":8},{"constant_hex":"8","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"INT_MULT","output":{"constant_hex":null,"kind":"unique","location":"unique:0xd900","size_bytes":8},"sequence":41},{"address":"0x1000005b4","block_membership":"member","id":"0x1000005b4#42","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x10000024","size_bytes":8},{"constant_hex":null,"kind":"unique","location":"unique:0xd900","size_bytes":8},{"constant_hex":"1","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"PTRADD","output":{"constant_hex":null,"kind":"unique","location":"unique:0xe400","size_bytes":8},"sequence":42},{"address":"0x1000005b4","block_membership":"member","id":"0x1000005b4#43","inputs":[{"constant_hex":"1b1","kind":"constant","location":null,"size_bytes":4},{"constant_hex":null,"kind":"unique","location":"unique:0x1000003c","size_bytes":8}],"is_dead":true,"opcode":"LOAD","output":{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":8},"sequence":43},{"address":"0x1000005b4","block_membership":"member","id":"0x1000005b4#94","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":"1000007e8","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"PTRSUB","output":{"constant_hex":null,"kind":"unique","location":"unique:0x10000024","size_bytes":8},"sequence":94},{"address":"0x1000005b4","block_membership":"member","id":"0x1000005b4#97","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0xe400","size_bytes":8}],"is_dead":true,"opcode":"CAST","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1000003c","size_bytes":8},"sequence":97},{"address":"0x1000005b8","block_membership":"member","id":"0x1000005b8#44","inputs":[{"constant_hex":null,"kind":"address","location":"0x1000005c0","size_bytes":1}],"is_dead":true,"opcode":"BRANCH","output":null,"sequence":44},{"address":"0x1000005bc","block_membership":"member","id":"0x1000005bc#60","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":8},"sequence":60},{"address":"0x1000005c0","block_membership":"member","id":"0x1000005c0#81","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":8}],"is_dead":true,"opcode":"MULTIEQUAL","output":{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":8},"sequence":81},{"address":"0x1000005c8","block_membership":"member","id":"0x1000005c8#57","inputs":[{"constant_hex":"1b1","kind":"constant","location":null,"size_bytes":4},{"constant_hex":null,"kind":"unique","location":"unique:0xe400","size_bytes":8}],"is_dead":true,"opcode":"LOAD","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},"sequence":57},{"address":"0x1000005c8","block_membership":"member","id":"0x1000005c8#95","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":"100004030","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"PTRSUB","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1000002c","size_bytes":8},"sequence":95},{"address":"0x1000005c8","block_membership":"member","id":"0x1000005c8#96","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x1000002c","size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":8},{"constant_hex":"8","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"PTRADD","output":{"constant_hex":null,"kind":"unique","location":"unique:0xe400","size_bytes":8},"sequence":96},{"address":"0x1000005cc","block_membership":"member","id":"0x1000005cc#59","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8}],"is_dead":true,"opcode":"RETURN","output":null,"sequence":59}],"parameter_uses":[{"input_index":0,"ordinal":0,"use":"0x10000059c#92"}],"parameters":[{"data_type":"/int","name":"param_1","ordinal":0}],"provenance":"ghidra-high-pcode","truncated":false},"outgoing_references":[{"kind":{"available":true,"call":false,"computed":false,"conditional":true,"data":false,"external":false,"flow":true,"indirect":false,"jump":true,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"CONDITIONAL_JUMP","write":false},"source_address":"0x1000005a8","source_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"},"target_address":"0x1000005bc","target_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"}},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":1,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"DATA","write":false},"source_address":"0x1000005b4","source_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"},"target_address":"0x1000007e8","target_procedure":null},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":false,"external":false,"flow":true,"indirect":false,"jump":true,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"UNCONDITIONAL_JUMP","write":false},"source_address":"0x1000005b8","source_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"},"target_address":"0x1000005c0","target_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"}},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"DATA","write":false},"source_address":"0x1000005c8","source_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"},"target_address":"0x100000770","target_procedure":null},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":1,"primary":true,"provenance":"ghidra-reference-manager","read":true,"terminal":false,"type":"READ","write":false},"source_address":"0x1000005c8","source_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"},"target_address":"0x100004030","target_procedure":null}],"procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"locals":[],"name":"_grade_label","signature":"undefined _grade_label()"},"pseudocode":"\nundefined * _grade_label(int param_1)\n\n{\n uint uVar1;\n long lVar2;\n \n uVar1 = param_1 / 10 - 6;\n if (uVar1 < 5) {\n lVar2 = *(long *)(&DAT_1000007e8 + (ulong)uVar1 * 8);\n }\n else {\n lVar2 = 0;\n }\n return (&_labels)[lVar2];\n}\n\n","referenced_names":[{"address":"0x1000005bc","source_address":"0x1000005a8","value":"LAB_1000005bc"},{"address":"0x1000005c0","source_address":"0x1000005b8","value":"LAB_1000005c0"},{"address":"0x100000770","source_address":"0x1000005c8","value":"s_F_100000770"},{"address":"0x1000007e8","source_address":"0x1000005b4","value":"DAT_1000007e8"},{"address":"0x100004030","source_address":"0x1000005c8","value":"_labels"}],"referenced_strings":[{"address":"0x100000770","source_address":"0x1000005c8","value":"F"}],"unresolved_calls":[]},"operation":"analyze_function","parameters":{"procedure":"_grade_label"},"predicate_type":"rea.analysis","provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"},"raw_result":{"limitations":[],"relationship_coverage":{"diagnostics":["Only resolved Ghidra call references are returned; unresolved computed or indirect calls remain unknown, while function classifications distinguish thunks and externals."],"status":"complete"},"value":{"assembly":["0x100000588: mov w8, #0x6667","0x10000058c: movk w8, #0x6666, LSL #16","0x100000590: smull x8, w0, w8","0x100000594: lsr x9, x8, #0x3f","0x100000598: asr x8, x8, #0x22","0x10000059c: add w8, w8, w9","0x1000005a0: sub w8, w8, #0x6","0x1000005a4: cmp w8, #0x4","0x1000005a8: b.hi 0x1000005bc","0x1000005ac: adrp x9, 0x100000000","0x1000005b0: add x9, x9, #0x7e8","0x1000005b4: ldr x8, [x9, w8, UXTW #0x3]","0x1000005b8: b 0x1000005c0","0x1000005bc: mov x8, #0x0","0x1000005c0: adrp x9, 0x100004000","0x1000005c4: add x9, x9, #0x30","0x1000005c8: ldr x0, [x9, x8, LSL #0x3]","0x1000005cc: ret"],"basic_blocks":[{"end":"0x1000005ac","start":"0x100000588","successors":["0x1000005ac","0x1000005bc"]},{"end":"0x1000005bc","start":"0x1000005ac","successors":["0x1000005c0"]},{"end":"0x1000005c0","start":"0x1000005bc","successors":["0x1000005c0"]},{"end":"0x1000005d0","start":"0x1000005c0","successors":[]}],"callees":[],"callers":[{"address":"0x1000005d0","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x10000073f","start":"0x1000005d0"}],"span_bytes":368,"total_bytes":368},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"entry"}],"comments":[],"facet_availability":{"assembly":{"available":true},"callees":{"available":true},"callers":{"available":true},"cfg":{"available":true},"comments":{"available":true},"pseudocode":{"available":true},"references":{"available":true},"strings_names":{"available":true}},"incoming_references":[{"kind":{"available":true,"call":true,"computed":false,"conditional":false,"data":false,"external":false,"flow":true,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"UNCONDITIONAL_CALL","write":false},"source_address":"0x1000006ec","source_procedure":{"address":"0x1000005d0","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x10000073f","start":"0x1000005d0"}],"span_bytes":368,"total_bytes":368},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"entry"},"target_address":"0x100000588","target_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"}},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"DATA","write":false},"source_address":"0x10000811c","source_procedure":null,"target_address":"0x100000588","target_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"}}],"limitations":["Unresolved computed or indirect flows without target addresses are not represented as reference edges.","Thunk and external classifications are Ghidra FunctionManager observations; they do not resolve targetless calls.","Pseudocode and assembly are Ghidra-specific representations, not original source or Hopper-equivalent text.","Synthetic Ghidra entry-point references without actionable memory sources are omitted."],"native_api":{"available":true,"calling_convention":"__cdecl","decompiler_artifacts":["recovered-signature","register-and-stack-variables","compiler-generated-control-flow","pointer-arithmetic","pseudocode"],"jump_tables":[],"limitations":["Types and calling conventions are Ghidra decompiler observations, not source declarations.","Register variables, compiler-generated blocks, and pointer arithmetic remain decompiler artifacts.","Pseudocode is neither original source nor guaranteed to compile."],"parameters":[{"confidence":"low","data_type":"int","decompiler_artifacts":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type int.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":"param_1","ordinal":0,"role":"parameter","size_bytes":4,"storage":"w0:4"}],"provenance":"ghidra-high-function","pseudocode":{"classification":"decompiler-generated-non-source","compilable":false},"return_type":{"confidence":"low","data_type":"undefined *","decompiler_artifacts":["recovered-signature","register-or-stack-storage"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type undefined *.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":null,"ordinal":null,"role":"return","size_bytes":8,"storage":"x0:8"},"signature_source":"default"},"native_value_flow":{"available":true,"def_use":[{"definition":"0x10000059c#92","input_index":0,"use":"0x1000005a0#16"},{"definition":"0x1000005a0#16","input_index":0,"use":"0x1000005a8#29"},{"definition":"0x1000005a8#29","input_index":1,"use":"0x1000005a8#30"},{"definition":"0x1000005a0#16","input_index":0,"use":"0x1000005b4#39"},{"definition":"0x1000005b4#39","input_index":0,"use":"0x1000005b4#41"},{"definition":"0x1000005b4#94","input_index":0,"use":"0x1000005b4#42"},{"definition":"0x1000005b4#41","input_index":1,"use":"0x1000005b4#42"},{"definition":"0x1000005b4#97","input_index":1,"use":"0x1000005b4#43"},{"definition":"0x1000005b4#42","input_index":0,"use":"0x1000005b4#97"},{"definition":"0x1000005b4#43","input_index":0,"use":"0x1000005c0#81"},{"definition":"0x1000005bc#60","input_index":1,"use":"0x1000005c0#81"},{"definition":"0x1000005c8#96","input_index":1,"use":"0x1000005c8#57"},{"definition":"0x1000005c8#95","input_index":0,"use":"0x1000005c8#96"},{"definition":"0x1000005c0#81","input_index":1,"use":"0x1000005c8#96"},{"definition":"0x1000005c8#57","input_index":1,"use":"0x1000005cc#59"}],"effects":[{"kind":"conditional_branch","operand_input":null,"operation":"0x1000005a8#30","value_input":1},{"kind":"memory_read","operand_input":1,"operation":"0x1000005b4#43","value_input":null},{"kind":"memory_read","operand_input":1,"operation":"0x1000005c8#57","value_input":null}],"known_omitted_edges":0,"known_omitted_inputs":0,"limitations":["High p-code is decompiler-derived, not original source or runtime behavior. is_dead preserves the Java AST flag; decoded block members can retain that flag, so block_membership separately reports actual syntax-tree membership.","Def-use links do not cross function boundaries and may omit memory aliasing, call side effects, or unresolved indirect flow.","Memory read/write effects include stack and temporary memory operations; they do not identify persistent state or business meaning.","Operation, input, and def-use limits can truncate large functions; inspect truncation, omitted lower bounds, and known omitted counts before drawing conclusions.","Known omitted-edge counts cover links omitted from retained operations; omitted operations may contain additional uncounted links."],"omitted_operations_lower_bound":0,"operations":[{"address":"0x10000059c","block_membership":"member","id":"0x10000059c#92","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},{"constant_hex":"a","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_SDIV","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1000001c","size_bytes":4},"sequence":92},{"address":"0x1000005a0","block_membership":"member","id":"0x1000005a0#16","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x1000001c","size_bytes":4},{"constant_hex":"6","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_SUB","output":{"constant_hex":null,"kind":"unique","location":"unique:0x78d00","size_bytes":4},"sequence":16},{"address":"0x1000005a8","block_membership":"member","id":"0x1000005a8#29","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x78d00","size_bytes":4},{"constant_hex":"5","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_LESS","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1d00","size_bytes":1},"sequence":29},{"address":"0x1000005a8","block_membership":"member","id":"0x1000005a8#30","inputs":[{"constant_hex":null,"kind":"address","location":"0x1000005bc","size_bytes":1},{"constant_hex":null,"kind":"unique","location":"unique:0x1d00","size_bytes":1}],"is_dead":true,"opcode":"CBRANCH","output":null,"sequence":30},{"address":"0x1000005b4","block_membership":"member","id":"0x1000005b4#39","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x78d00","size_bytes":4}],"is_dead":true,"opcode":"INT_ZEXT","output":{"constant_hex":null,"kind":"unique","location":"unique:0xab00","size_bytes":8},"sequence":39},{"address":"0x1000005b4","block_membership":"member","id":"0x1000005b4#41","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0xab00","size_bytes":8},{"constant_hex":"8","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"INT_MULT","output":{"constant_hex":null,"kind":"unique","location":"unique:0xd900","size_bytes":8},"sequence":41},{"address":"0x1000005b4","block_membership":"member","id":"0x1000005b4#42","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x10000024","size_bytes":8},{"constant_hex":null,"kind":"unique","location":"unique:0xd900","size_bytes":8},{"constant_hex":"1","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"PTRADD","output":{"constant_hex":null,"kind":"unique","location":"unique:0xe400","size_bytes":8},"sequence":42},{"address":"0x1000005b4","block_membership":"member","id":"0x1000005b4#43","inputs":[{"constant_hex":"1b1","kind":"constant","location":null,"size_bytes":4},{"constant_hex":null,"kind":"unique","location":"unique:0x1000003c","size_bytes":8}],"is_dead":true,"opcode":"LOAD","output":{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":8},"sequence":43},{"address":"0x1000005b4","block_membership":"member","id":"0x1000005b4#94","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":"1000007e8","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"PTRSUB","output":{"constant_hex":null,"kind":"unique","location":"unique:0x10000024","size_bytes":8},"sequence":94},{"address":"0x1000005b4","block_membership":"member","id":"0x1000005b4#97","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0xe400","size_bytes":8}],"is_dead":true,"opcode":"CAST","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1000003c","size_bytes":8},"sequence":97},{"address":"0x1000005b8","block_membership":"member","id":"0x1000005b8#44","inputs":[{"constant_hex":null,"kind":"address","location":"0x1000005c0","size_bytes":1}],"is_dead":true,"opcode":"BRANCH","output":null,"sequence":44},{"address":"0x1000005bc","block_membership":"member","id":"0x1000005bc#60","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":8},"sequence":60},{"address":"0x1000005c0","block_membership":"member","id":"0x1000005c0#81","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":8}],"is_dead":true,"opcode":"MULTIEQUAL","output":{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":8},"sequence":81},{"address":"0x1000005c8","block_membership":"member","id":"0x1000005c8#57","inputs":[{"constant_hex":"1b1","kind":"constant","location":null,"size_bytes":4},{"constant_hex":null,"kind":"unique","location":"unique:0xe400","size_bytes":8}],"is_dead":true,"opcode":"LOAD","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},"sequence":57},{"address":"0x1000005c8","block_membership":"member","id":"0x1000005c8#95","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":"100004030","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"PTRSUB","output":{"constant_hex":null,"kind":"unique","location":"unique:0x1000002c","size_bytes":8},"sequence":95},{"address":"0x1000005c8","block_membership":"member","id":"0x1000005c8#96","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x1000002c","size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4040","size_bytes":8},{"constant_hex":"8","kind":"constant","location":null,"size_bytes":8}],"is_dead":true,"opcode":"PTRADD","output":{"constant_hex":null,"kind":"unique","location":"unique:0xe400","size_bytes":8},"sequence":96},{"address":"0x1000005cc","block_membership":"member","id":"0x1000005cc#59","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8}],"is_dead":true,"opcode":"RETURN","output":null,"sequence":59}],"parameter_uses":[{"input_index":0,"ordinal":0,"use":"0x10000059c#92"}],"parameters":[{"data_type":"/int","name":"param_1","ordinal":0}],"provenance":"ghidra-high-pcode","truncated":false},"outgoing_references":[{"kind":{"available":true,"call":false,"computed":false,"conditional":true,"data":false,"external":false,"flow":true,"indirect":false,"jump":true,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"CONDITIONAL_JUMP","write":false},"source_address":"0x1000005a8","source_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"},"target_address":"0x1000005bc","target_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"}},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":1,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"DATA","write":false},"source_address":"0x1000005b4","source_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"},"target_address":"0x1000007e8","target_procedure":null},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":false,"external":false,"flow":true,"indirect":false,"jump":true,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"UNCONDITIONAL_JUMP","write":false},"source_address":"0x1000005b8","source_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"},"target_address":"0x1000005c0","target_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"}},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"DATA","write":false},"source_address":"0x1000005c8","source_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"},"target_address":"0x100000770","target_procedure":null},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":1,"primary":true,"provenance":"ghidra-reference-manager","read":true,"terminal":false,"type":"READ","write":false},"source_address":"0x1000005c8","source_procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_grade_label"},"target_address":"0x100004030","target_procedure":null}],"procedure":{"address":"0x100000588","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x1000005cf","start":"0x100000588"}],"span_bytes":72,"total_bytes":72},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"locals":[],"name":"_grade_label","signature":"undefined _grade_label()"},"pseudocode":"\nundefined * _grade_label(int param_1)\n\n{\n uint uVar1;\n long lVar2;\n \n uVar1 = param_1 / 10 - 6;\n if (uVar1 < 5) {\n lVar2 = *(long *)(&DAT_1000007e8 + (ulong)uVar1 * 8);\n }\n else {\n lVar2 = 0;\n }\n return (&_labels)[lVar2];\n}\n\n","referenced_names":[{"address":"0x1000005bc","source_address":"0x1000005a8","value":"LAB_1000005bc"},{"address":"0x1000005c0","source_address":"0x1000005b8","value":"LAB_1000005c0"},{"address":"0x100000770","source_address":"0x1000005c8","value":"s_F_100000770"},{"address":"0x1000007e8","source_address":"0x1000005b4","value":"DAT_1000007e8"},{"address":"0x100004030","source_address":"0x1000005c8","value":"_labels"}],"referenced_strings":[{"address":"0x100000770","source_address":"0x1000005c8","value":"F"}],"unresolved_calls":[]}},"relationship_coverage":{"diagnostics":["Only resolved Ghidra call references are returned; unresolved computed or indirect calls remain unknown, while function classifications distinguish thunks and externals."],"status":"complete"},"subject":{"architecture":"arm64","digest":{"sha256":"01b5d08b08fb94678be5919d0e753d44b505a53107c95b94634f0e5d41c9e375"},"format":"mach-o","local_path":"$CAPTURE/fixtures/ledger-arm64-O1","name":"ledger-arm64-O1"}},{"analysis_profile":{"digest":"3fc72c9b4b78498fb992b938f8f3389dc670244a293c1d40abf5e1d10162ed3b","parameters":{"analyzer_preset":"ghidra-default","annotation_policy":"atomic-function-entry-metadata-v1","architecture":"arm64","available_architectures":["arm64"],"call_relationship_coverage":"function-body-call-coverage-v5","compiler_spec_id":"auto-default","decompiler_jump_loads":true,"function_body_evidence":"complete-inclusive-ranges-v1","function_boundary_observations":"ghidra-function-boundary-limitations-v4","function_dossier_coverage":"observed-facets-and-call-relationships-v1","function_references":"complete-body-and-entry-reference-manager-v2","import_mode":"ephemeral-source-immutable","instruction_flow_evidence":"decoded-return-pcode-v1","instruction_references":"exact-address-incoming-without-synthetic-entry-v2","jump_table_evidence":"typed-case-default-blocks-v1","language_id":"auto-from-header","load_image_observations":"source-mappings-entry-context-v2","loader":"auto-from-header","location_resolution":"explicit-address-exact-entry-symbol-first-v3","no_return_repair":"returning-imports-decoded-return-v2","procedure_file_offset_resolution":"address-first-unique-target-source-mapping-v2","process_launch":"inspected-jvm-launch-support-v1","string_inventory_evidence":"defined-data-coverage-v1","target_format":"mach-o","target_kind":"executable"},"provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"}},"authority":"shipped-artifact","confidence":"observed","environment":null,"evidence_id":"ev_b492c85eb9570bd5f8e866f94523122c8600ea0106603d90e9ea5445cf757b2a","evidence_links":[],"limitations":["The session serves operations only after Ghidra reports default auto-analysis complete; incomplete analysis does not expose partial results.","The imported Program and temporary project are ephemeral and deleted on close. Annotation operations edit session database metadata; original executable bytes are never written.","Cancelling an active Ghidra request terminates its ephemeral database and discards session annotations. The selected target remains open; the next provider query imports the original artifact again.","Default-space addresses use lowercase 0x-prefixed hexadecimal; other address spaces use :0x.","References cover the complete Ghidra function-body AddressSet and exact entry. Dossier incoming edges omit sources owned by that function; procedure_references also retains those internal edges.","The dossier combines Ghidra FunctionManager, Listing, ReferenceManager, BasicBlockModel, and decompiler observations; provider-specific pseudocode and assembly are not cross-provider text invariants.","Resolved reference metadata identifies computed, indirect, external, call, jump, and data edges; unresolved targetless flows remain unknown, and function classifications distinguish thunks and externals.","Synthetic Ghidra entry-point references without actionable memory sources are omitted.","The Java bridge serializes one function request per Program and lets each decompilation run until it completes or the caller cancels.","macOS sessions require a matching executable Ghidra native decompiler; REA checks for it but does not build native components or change Gatekeeper quarantine state."],"locations":[],"normalized_result":{"assembly":["0x100000500: cbz w0, 0x100000514","0x100000504: sub w8, w1, w0","0x100000508: mov w9, #0x64","0x10000050c: mul w8, w8, w9","0x100000510: sdiv w0, w8, w0","0x100000514: ret"],"basic_blocks":[{"end":"0x100000504","start":"0x100000500","successors":["0x100000504","0x100000514"]},{"end":"0x100000514","start":"0x100000504","successors":["0x100000514"]},{"end":"0x100000518","start":"0x100000514","successors":[]}],"callees":[],"callers":[{"address":"0x1000005d0","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x10000073f","start":"0x1000005d0"}],"span_bytes":368,"total_bytes":368},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"entry"}],"comments":[],"facet_availability":{"assembly":{"available":true},"callees":{"available":true},"callers":{"available":true},"cfg":{"available":true},"comments":{"available":true},"pseudocode":{"available":true},"references":{"available":true},"strings_names":{"available":true}},"incoming_references":[{"kind":{"available":true,"call":true,"computed":false,"conditional":false,"data":false,"external":false,"flow":true,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"UNCONDITIONAL_CALL","write":false},"source_address":"0x1000006a0","source_procedure":{"address":"0x1000005d0","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x10000073f","start":"0x1000005d0"}],"span_bytes":368,"total_bytes":368},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"entry"},"target_address":"0x100000500","target_procedure":{"address":"0x100000500","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000517","start":"0x100000500"}],"span_bytes":24,"total_bytes":24},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_percent_change"}},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"DATA","write":false},"source_address":"0x100008118","source_procedure":null,"target_address":"0x100000500","target_procedure":{"address":"0x100000500","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000517","start":"0x100000500"}],"span_bytes":24,"total_bytes":24},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_percent_change"}}],"limitations":["Unresolved computed or indirect flows without target addresses are not represented as reference edges.","Thunk and external classifications are Ghidra FunctionManager observations; they do not resolve targetless calls.","Pseudocode and assembly are Ghidra-specific representations, not original source or Hopper-equivalent text.","Synthetic Ghidra entry-point references without actionable memory sources are omitted."],"native_api":{"available":true,"calling_convention":"__cdecl","decompiler_artifacts":["recovered-signature","register-and-stack-variables","compiler-generated-control-flow","pointer-arithmetic","pseudocode"],"jump_tables":[],"limitations":["Types and calling conventions are Ghidra decompiler observations, not source declarations.","Register variables, compiler-generated blocks, and pointer arithmetic remain decompiler artifacts.","Pseudocode is neither original source nor guaranteed to compile."],"parameters":[{"confidence":"low","data_type":"ulong","decompiler_artifacts":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type ulong.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":"param_1","ordinal":0,"role":"parameter","size_bytes":8,"storage":"x0:8"},{"confidence":"low","data_type":"int","decompiler_artifacts":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type int.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":"param_2","ordinal":1,"role":"parameter","size_bytes":4,"storage":"w1:4"}],"provenance":"ghidra-high-function","pseudocode":{"classification":"decompiler-generated-non-source","compilable":false},"return_type":{"confidence":"low","data_type":"ulong","decompiler_artifacts":["recovered-signature","register-or-stack-storage"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type ulong.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":null,"ordinal":null,"role":"return","size_bytes":8,"storage":"x0:8"},"signature_source":"default"},"native_value_flow":{"available":true,"def_use":[{"definition":"0x100000500#19","input_index":0,"use":"0x100000500#0"},{"definition":"0x100000500#0","input_index":1,"use":"0x100000500#1"},{"definition":"0x100000500#19","input_index":1,"use":"0x100000504#2"},{"definition":"0x100000504#2","input_index":0,"use":"0x10000050c#5"},{"definition":"0x100000500#19","input_index":0,"use":"0x100000510#8"},{"definition":"0x100000510#8","input_index":1,"use":"0x100000510#9"},{"definition":"0x10000050c#5","input_index":0,"use":"0x100000510#10"},{"definition":"0x100000500#19","input_index":1,"use":"0x100000510#10"},{"definition":"0x100000510#15","input_index":0,"use":"0x100000510#11"},{"definition":"0x100000510#7","input_index":0,"use":"0x100000510#15"},{"definition":"0x100000510#10","input_index":1,"use":"0x100000510#15"},{"definition":"0x100000514#23","input_index":1,"use":"0x100000514#13"},{"definition":"0x100000510#11","input_index":1,"use":"0x100000514#23"}],"effects":[{"kind":"conditional_branch","operand_input":null,"operation":"0x100000500#1","value_input":1},{"kind":"conditional_branch","operand_input":null,"operation":"0x100000510#9","value_input":1}],"known_omitted_edges":0,"known_omitted_inputs":0,"limitations":["High p-code is decompiler-derived, not original source or runtime behavior. is_dead preserves the Java AST flag; decoded block members can retain that flag, so block_membership separately reports actual syntax-tree membership.","Def-use links do not cross function boundaries and may omit memory aliasing, call side effects, or unresolved indirect flow.","Memory read/write effects include stack and temporary memory operations; they do not identify persistent state or business meaning.","Operation, input, and def-use limits can truncate large functions; inspect truncation, omitted lower bounds, and known omitted counts before drawing conclusions.","Known omitted-edge counts cover links omitted from retained operations; omitted operations may contain additional uncounted links."],"omitted_operations_lower_bound":0,"operations":[{"address":"0x100000500","block_membership":"member","id":"0x100000500#0","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_NOTEQUAL","output":{"constant_hex":null,"kind":"unique","location":"unique:0x31600","size_bytes":1},"sequence":0},{"address":"0x100000500","block_membership":"member","id":"0x100000500#1","inputs":[{"constant_hex":null,"kind":"address","location":"0x100000514","size_bytes":1},{"constant_hex":null,"kind":"unique","location":"unique:0x31600","size_bytes":1}],"is_dead":true,"opcode":"CBRANCH","output":null,"sequence":1},{"address":"0x100000500","block_membership":"member","id":"0x100000500#19","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"SUBPIECE","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},"sequence":19},{"address":"0x100000504","block_membership":"member","id":"0x100000504#2","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4008","size_bytes":4},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4}],"is_dead":true,"opcode":"INT_SUB","output":{"constant_hex":null,"kind":"unique","location":"unique:0x79b00","size_bytes":4},"sequence":2},{"address":"0x10000050c","block_membership":"member","id":"0x10000050c#5","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x79b00","size_bytes":4},{"constant_hex":"64","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_MULT","output":{"constant_hex":null,"kind":"unique","location":"unique:0x55f00","size_bytes":4},"sequence":5},{"address":"0x100000510","block_membership":"member","id":"0x100000510#7","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"unique","location":"unique:0x6c000","size_bytes":4},"sequence":7},{"address":"0x100000510","block_membership":"member","id":"0x100000510#8","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_NOTEQUAL","output":{"constant_hex":null,"kind":"unique","location":"unique:0x6c100","size_bytes":1},"sequence":8},{"address":"0x100000510","block_membership":"member","id":"0x100000510#9","inputs":[{"constant_hex":"2","kind":"constant","location":null,"size_bytes":1},{"constant_hex":null,"kind":"unique","location":"unique:0x6c100","size_bytes":1}],"is_dead":true,"opcode":"CBRANCH","output":null,"sequence":9},{"address":"0x100000510","block_membership":"member","id":"0x100000510#10","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x55f00","size_bytes":4},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4}],"is_dead":true,"opcode":"INT_SDIV","output":{"constant_hex":null,"kind":"unique","location":"unique:0x6c000","size_bytes":4},"sequence":10},{"address":"0x100000510","block_membership":"member","id":"0x100000510#11","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x6c000","size_bytes":4}],"is_dead":true,"opcode":"INT_ZEXT","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},"sequence":11},{"address":"0x100000510","block_membership":"member","id":"0x100000510#15","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x6c000","size_bytes":4},{"constant_hex":null,"kind":"unique","location":"unique:0x6c000","size_bytes":4}],"is_dead":true,"opcode":"MULTIEQUAL","output":{"constant_hex":null,"kind":"unique","location":"unique:0x6c000","size_bytes":4},"sequence":15},{"address":"0x100000514","block_membership":"member","id":"0x100000514#13","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8}],"is_dead":true,"opcode":"RETURN","output":null,"sequence":13},{"address":"0x100000514","block_membership":"member","id":"0x100000514#23","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8}],"is_dead":true,"opcode":"MULTIEQUAL","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},"sequence":23}],"parameter_uses":[{"input_index":0,"ordinal":0,"use":"0x100000500#19"},{"input_index":0,"ordinal":1,"use":"0x100000504#2"},{"input_index":1,"ordinal":0,"use":"0x100000514#13"},{"input_index":0,"ordinal":0,"use":"0x100000514#23"},{"input_index":1,"ordinal":0,"use":"0x100000514#23"}],"parameters":[{"data_type":"/ulong","name":"param_1","ordinal":0},{"data_type":"/int","name":"param_2","ordinal":1}],"provenance":"ghidra-high-pcode","truncated":false},"outgoing_references":[{"kind":{"available":true,"call":false,"computed":false,"conditional":true,"data":false,"external":false,"flow":true,"indirect":false,"jump":true,"operand_index":1,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"CONDITIONAL_JUMP","write":false},"source_address":"0x100000500","source_procedure":{"address":"0x100000500","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000517","start":"0x100000500"}],"span_bytes":24,"total_bytes":24},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_percent_change"},"target_address":"0x100000514","target_procedure":{"address":"0x100000500","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000517","start":"0x100000500"}],"span_bytes":24,"total_bytes":24},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_percent_change"}}],"procedure":{"address":"0x100000500","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000517","start":"0x100000500"}],"span_bytes":24,"total_bytes":24},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"locals":[],"name":"_percent_change","signature":"undefined _percent_change()"},"pseudocode":"\nulong _percent_change(ulong param_1,int param_2)\n\n{\n uint uVar1;\n int iVar2;\n \n iVar2 = (int)param_1;\n if (iVar2 != 0) {\n uVar1 = 0;\n if (iVar2 != 0) {\n uVar1 = ((param_2 - iVar2) * 100) / iVar2;\n }\n param_1 = (ulong)uVar1;\n }\n return param_1;\n}\n\n","referenced_names":[{"address":"0x100000514","source_address":"0x100000500","value":"LAB_100000514"}],"referenced_strings":[],"unresolved_calls":[]},"operation":"analyze_function","parameters":{"procedure":"_percent_change"},"predicate_type":"rea.analysis","provider":{"id":"ghidra","name":"Ghidra","version":"12.1.4"},"raw_result":{"limitations":[],"relationship_coverage":{"diagnostics":["Only resolved Ghidra call references are returned; unresolved computed or indirect calls remain unknown, while function classifications distinguish thunks and externals."],"status":"complete"},"value":{"assembly":["0x100000500: cbz w0, 0x100000514","0x100000504: sub w8, w1, w0","0x100000508: mov w9, #0x64","0x10000050c: mul w8, w8, w9","0x100000510: sdiv w0, w8, w0","0x100000514: ret"],"basic_blocks":[{"end":"0x100000504","start":"0x100000500","successors":["0x100000504","0x100000514"]},{"end":"0x100000514","start":"0x100000504","successors":["0x100000514"]},{"end":"0x100000518","start":"0x100000514","successors":[]}],"callees":[],"callers":[{"address":"0x1000005d0","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x10000073f","start":"0x1000005d0"}],"span_bytes":368,"total_bytes":368},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"entry"}],"comments":[],"facet_availability":{"assembly":{"available":true},"callees":{"available":true},"callers":{"available":true},"cfg":{"available":true},"comments":{"available":true},"pseudocode":{"available":true},"references":{"available":true},"strings_names":{"available":true}},"incoming_references":[{"kind":{"available":true,"call":true,"computed":false,"conditional":false,"data":false,"external":false,"flow":true,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"UNCONDITIONAL_CALL","write":false},"source_address":"0x1000006a0","source_procedure":{"address":"0x1000005d0","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x10000073f","start":"0x1000005d0"}],"span_bytes":368,"total_bytes":368},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"entry"},"target_address":"0x100000500","target_procedure":{"address":"0x100000500","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000517","start":"0x100000500"}],"span_bytes":24,"total_bytes":24},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_percent_change"}},{"kind":{"available":true,"call":false,"computed":false,"conditional":false,"data":true,"external":false,"flow":false,"indirect":false,"jump":false,"operand_index":0,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"DATA","write":false},"source_address":"0x100008118","source_procedure":null,"target_address":"0x100000500","target_procedure":{"address":"0x100000500","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000517","start":"0x100000500"}],"span_bytes":24,"total_bytes":24},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_percent_change"}}],"limitations":["Unresolved computed or indirect flows without target addresses are not represented as reference edges.","Thunk and external classifications are Ghidra FunctionManager observations; they do not resolve targetless calls.","Pseudocode and assembly are Ghidra-specific representations, not original source or Hopper-equivalent text.","Synthetic Ghidra entry-point references without actionable memory sources are omitted."],"native_api":{"available":true,"calling_convention":"__cdecl","decompiler_artifacts":["recovered-signature","register-and-stack-variables","compiler-generated-control-flow","pointer-arithmetic","pseudocode"],"jump_tables":[],"limitations":["Types and calling conventions are Ghidra decompiler observations, not source declarations.","Register variables, compiler-generated blocks, and pointer arithmetic remain decompiler artifacts.","Pseudocode is neither original source nor guaranteed to compile."],"parameters":[{"confidence":"low","data_type":"ulong","decompiler_artifacts":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type ulong.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":"param_1","ordinal":0,"role":"parameter","size_bytes":8,"storage":"x0:8"},{"confidence":"low","data_type":"int","decompiler_artifacts":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type int.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":"param_2","ordinal":1,"role":"parameter","size_bytes":4,"storage":"w1:4"}],"provenance":"ghidra-high-function","pseudocode":{"classification":"decompiler-generated-non-source","compilable":false},"return_type":{"confidence":"low","data_type":"ulong","decompiler_artifacts":["recovered-signature","register-or-stack-storage"],"evidence":[{"detail":"Function signature source is default.","kind":"signature-source","source":"ghidra-function-manager"},{"detail":"HighFunction recovered data type ulong.","kind":"decompiler-type","source":"ghidra-high-function"}],"name":null,"ordinal":null,"role":"return","size_bytes":8,"storage":"x0:8"},"signature_source":"default"},"native_value_flow":{"available":true,"def_use":[{"definition":"0x100000500#19","input_index":0,"use":"0x100000500#0"},{"definition":"0x100000500#0","input_index":1,"use":"0x100000500#1"},{"definition":"0x100000500#19","input_index":1,"use":"0x100000504#2"},{"definition":"0x100000504#2","input_index":0,"use":"0x10000050c#5"},{"definition":"0x100000500#19","input_index":0,"use":"0x100000510#8"},{"definition":"0x100000510#8","input_index":1,"use":"0x100000510#9"},{"definition":"0x10000050c#5","input_index":0,"use":"0x100000510#10"},{"definition":"0x100000500#19","input_index":1,"use":"0x100000510#10"},{"definition":"0x100000510#15","input_index":0,"use":"0x100000510#11"},{"definition":"0x100000510#7","input_index":0,"use":"0x100000510#15"},{"definition":"0x100000510#10","input_index":1,"use":"0x100000510#15"},{"definition":"0x100000514#23","input_index":1,"use":"0x100000514#13"},{"definition":"0x100000510#11","input_index":1,"use":"0x100000514#23"}],"effects":[{"kind":"conditional_branch","operand_input":null,"operation":"0x100000500#1","value_input":1},{"kind":"conditional_branch","operand_input":null,"operation":"0x100000510#9","value_input":1}],"known_omitted_edges":0,"known_omitted_inputs":0,"limitations":["High p-code is decompiler-derived, not original source or runtime behavior. is_dead preserves the Java AST flag; decoded block members can retain that flag, so block_membership separately reports actual syntax-tree membership.","Def-use links do not cross function boundaries and may omit memory aliasing, call side effects, or unresolved indirect flow.","Memory read/write effects include stack and temporary memory operations; they do not identify persistent state or business meaning.","Operation, input, and def-use limits can truncate large functions; inspect truncation, omitted lower bounds, and known omitted counts before drawing conclusions.","Known omitted-edge counts cover links omitted from retained operations; omitted operations may contain additional uncounted links."],"omitted_operations_lower_bound":0,"operations":[{"address":"0x100000500","block_membership":"member","id":"0x100000500#0","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_NOTEQUAL","output":{"constant_hex":null,"kind":"unique","location":"unique:0x31600","size_bytes":1},"sequence":0},{"address":"0x100000500","block_membership":"member","id":"0x100000500#1","inputs":[{"constant_hex":null,"kind":"address","location":"0x100000514","size_bytes":1},{"constant_hex":null,"kind":"unique","location":"unique:0x31600","size_bytes":1}],"is_dead":true,"opcode":"CBRANCH","output":null,"sequence":1},{"address":"0x100000500","block_membership":"member","id":"0x100000500#19","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"SUBPIECE","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},"sequence":19},{"address":"0x100000504","block_membership":"member","id":"0x100000504#2","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4008","size_bytes":4},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4}],"is_dead":true,"opcode":"INT_SUB","output":{"constant_hex":null,"kind":"unique","location":"unique:0x79b00","size_bytes":4},"sequence":2},{"address":"0x10000050c","block_membership":"member","id":"0x10000050c#5","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x79b00","size_bytes":4},{"constant_hex":"64","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_MULT","output":{"constant_hex":null,"kind":"unique","location":"unique:0x55f00","size_bytes":4},"sequence":5},{"address":"0x100000510","block_membership":"member","id":"0x100000510#7","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"COPY","output":{"constant_hex":null,"kind":"unique","location":"unique:0x6c000","size_bytes":4},"sequence":7},{"address":"0x100000510","block_membership":"member","id":"0x100000510#8","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4},{"constant_hex":"0","kind":"constant","location":null,"size_bytes":4}],"is_dead":true,"opcode":"INT_NOTEQUAL","output":{"constant_hex":null,"kind":"unique","location":"unique:0x6c100","size_bytes":1},"sequence":8},{"address":"0x100000510","block_membership":"member","id":"0x100000510#9","inputs":[{"constant_hex":"2","kind":"constant","location":null,"size_bytes":1},{"constant_hex":null,"kind":"unique","location":"unique:0x6c100","size_bytes":1}],"is_dead":true,"opcode":"CBRANCH","output":null,"sequence":9},{"address":"0x100000510","block_membership":"member","id":"0x100000510#10","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x55f00","size_bytes":4},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":4}],"is_dead":true,"opcode":"INT_SDIV","output":{"constant_hex":null,"kind":"unique","location":"unique:0x6c000","size_bytes":4},"sequence":10},{"address":"0x100000510","block_membership":"member","id":"0x100000510#11","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x6c000","size_bytes":4}],"is_dead":true,"opcode":"INT_ZEXT","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},"sequence":11},{"address":"0x100000510","block_membership":"member","id":"0x100000510#15","inputs":[{"constant_hex":null,"kind":"unique","location":"unique:0x6c000","size_bytes":4},{"constant_hex":null,"kind":"unique","location":"unique:0x6c000","size_bytes":4}],"is_dead":true,"opcode":"MULTIEQUAL","output":{"constant_hex":null,"kind":"unique","location":"unique:0x6c000","size_bytes":4},"sequence":15},{"address":"0x100000514","block_membership":"member","id":"0x100000514#13","inputs":[{"constant_hex":"0","kind":"constant","location":null,"size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8}],"is_dead":true,"opcode":"RETURN","output":null,"sequence":13},{"address":"0x100000514","block_membership":"member","id":"0x100000514#23","inputs":[{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8}],"is_dead":true,"opcode":"MULTIEQUAL","output":{"constant_hex":null,"kind":"register","location":"register:0x4000","size_bytes":8},"sequence":23}],"parameter_uses":[{"input_index":0,"ordinal":0,"use":"0x100000500#19"},{"input_index":0,"ordinal":1,"use":"0x100000504#2"},{"input_index":1,"ordinal":0,"use":"0x100000514#13"},{"input_index":0,"ordinal":0,"use":"0x100000514#23"},{"input_index":1,"ordinal":0,"use":"0x100000514#23"}],"parameters":[{"data_type":"/ulong","name":"param_1","ordinal":0},{"data_type":"/int","name":"param_2","ordinal":1}],"provenance":"ghidra-high-pcode","truncated":false},"outgoing_references":[{"kind":{"available":true,"call":false,"computed":false,"conditional":true,"data":false,"external":false,"flow":true,"indirect":false,"jump":true,"operand_index":1,"primary":true,"provenance":"ghidra-reference-manager","read":false,"terminal":false,"type":"CONDITIONAL_JUMP","write":false},"source_address":"0x100000500","source_procedure":{"address":"0x100000500","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000517","start":"0x100000500"}],"span_bytes":24,"total_bytes":24},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_percent_change"},"target_address":"0x100000514","target_procedure":{"address":"0x100000500","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000517","start":"0x100000500"}],"span_bytes":24,"total_bytes":24},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"name":"_percent_change"}}],"procedure":{"address":"0x100000500","body":{"available":true,"contains_entry":true,"non_contiguous":false,"provenance":"ghidra-function-body-address-set","ranges":[{"end":"0x100000517","start":"0x100000500"}],"span_bytes":24,"total_bytes":24},"classification":{"external":false,"provenance":"ghidra-function-manager","thunk":false,"thunk_target":null},"locals":[],"name":"_percent_change","signature":"undefined _percent_change()"},"pseudocode":"\nulong _percent_change(ulong param_1,int param_2)\n\n{\n uint uVar1;\n int iVar2;\n \n iVar2 = (int)param_1;\n if (iVar2 != 0) {\n uVar1 = 0;\n if (iVar2 != 0) {\n uVar1 = ((param_2 - iVar2) * 100) / iVar2;\n }\n param_1 = (ulong)uVar1;\n }\n return param_1;\n}\n\n","referenced_names":[{"address":"0x100000514","source_address":"0x100000500","value":"LAB_100000514"}],"referenced_strings":[],"unresolved_calls":[]}},"relationship_coverage":{"diagnostics":["Only resolved Ghidra call references are returned; unresolved computed or indirect calls remain unknown, while function classifications distinguish thunks and externals."],"status":"complete"},"subject":{"architecture":"arm64","digest":{"sha256":"01b5d08b08fb94678be5919d0e753d44b505a53107c95b94634f0e5d41c9e375"},"format":"mach-o","local_path":"$CAPTURE/fixtures/ledger-arm64-O1","name":"ledger-arm64-O1"}}],"scenarios":[],"unknowns":[]}