{"type": "func", "start": 356040, "end": 356288, "name": "sub_56EC8", "pseudocode": "// \n// sub_56EC8 from 0x56ec8 to 0x56fc0 (248 bytes)\n// \n// 2 xrefs:\n// > <???> @ 0x10c538\n// > <???> @ 0x10c760\n// \n// This function is hookable on this platform!\n// \n// Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA\n// Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings\n// \n\nvoid sub_56EC8()\n{\n  float *v0; // x19\n  __int64 v1; // x20\n  float *v2; // x21\n  __int64 v3; // x10\n  __int64 v4; // x10\n  char v5; // [xsp+Ch] [xbp-24h]\n\n  if ( !(unsigned int)((__int64 (*)(void))loc_5782C)() && (v5 & 0x10) != 0 )\n  {\n    if ( v2 )\n    {\n      if ( (unsigned int)sub_56FC0(v2) )\n        goto LABEL_17;\n      if ( *(float *)(v1 + 128) != *v2 || *(float *)(v1 + 132) != v2[1] || *(float *)(v1 + 136) != v2[2] )\n        *(_DWORD *)(v1 + 72) |= 4u;\n      v3 = *(_QWORD *)v2;\n      *(float *)(v1 + 136) = v2[2];\n      *(_QWORD *)(v1 + 128) = v3;\n    }\n    if ( v0 && !(unsigned int)sub_56FC0(v0) )\n    {\n      if ( *(float *)(v1 + 140) != *v0 || *(float *)(v1 + 144) != v0[1] || *(float *)(v1 + 148) != v0[2] )\n        *(_DWORD *)(v1 + 72) |= 4u;\n      v4 = *(_QWORD *)v0;\n      *(float *)(v1 + 148) = v0[2];\n      *(_QWORD *)(v1 + 140) = v4;\n    }\n  }\nLABEL_17:\n  JUMPOUT(0x5784C);\n}", "assembly": "; \n; sub_56EC8 from 0x56ec8 to 0x56fc0 (248 bytes)\n; \n; 2 xrefs:\n; > <???> @ 0x10c538\n; > <???> @ 0x10c760\n; \n; This function is hookable on this platform!\n; \n; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA\n; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings\n; \n\nSTR             X21, [SP,#var_30]!                                     ; +0x0, 0x56ec8\nSTP             X20, X19, [SP,#0x30+var_20]                            ; +0x4, 0x56ecc\nSTP             X29, X30, [SP,#0x30+var_10]                            ; +0x8, 0x56ed0\nBL              loc_5782C                                              ; +0xc, 0x56ed4\nCBNZ            W0, loc_56FB8                                          ; +0x10, 0x56ed8\nLDRB            W8, [SP,#0x30+var_24]                                  ; +0x14, 0x56edc\nTBNZ            W8, #4, loc_56EEC                                      ; +0x18, 0x56ee0\nMOV             W0, #0x28 ; '('                                        ; +0x1c, 0x56ee4\nB               loc_56FB8                                              ; +0x20, 0x56ee8\nCBZ             X21, loc_56F4C                                         ; +0x24, 0x56eec\nMOV             X0, X21                                                ; +0x28, 0x56ef0\nBL              sub_56FC0                                              ; +0x2c, 0x56ef4\nCBNZ            W0, loc_56FB8                                          ; +0x30, 0x56ef8\nMOV             X8, X20                                                ; +0x34, 0x56efc\nLDR             S0, [X8,#0x80]!                                        ; +0x38, 0x56f00\nLDR             S1, [X21]                                              ; +0x3c, 0x56f04\nFCMP            S0, S1                                                 ; +0x40, 0x56f08\nB.NE            loc_56F30                                              ; +0x44, 0x56f0c\nLDR             S0, [X20,#0x84]                                        ; +0x48, 0x56f10\nLDR             S1, [X21,#4]                                           ; +0x4c, 0x56f14\nFCMP            S0, S1                                                 ; +0x50, 0x56f18\nB.NE            loc_56F30                                              ; +0x54, 0x56f1c\nLDR             S0, [X20,#0x88]                                        ; +0x58, 0x56f20\nLDR             S1, [X21,#8]                                           ; +0x5c, 0x56f24\nFCMP            S0, S1                                                 ; +0x60, 0x56f28\nB.EQ            loc_56F3C                                              ; +0x64, 0x56f2c\nLDR             W9, [X20,#0x48]                                        ; +0x68, 0x56f30\nORR             W9, W9, #4                                             ; +0x6c, 0x56f34\nSTR             W9, [X20,#0x48]                                        ; +0x70, 0x56f38\nLDR             W9, [X21,#8]                                           ; +0x74, 0x56f3c\nLDR             X10, [X21]                                             ; +0x78, 0x56f40\nSTR             W9, [X8,#8]                                            ; +0x7c, 0x56f44\nSTR             X10, [X8]                                              ; +0x80, 0x56f48\nCBZ             X19, loc_56FB4                                         ; +0x84, 0x56f4c\nMOV             X0, X19                                                ; +0x88, 0x56f50\nBL              sub_56FC0                                              ; +0x8c, 0x56f54\nCBNZ            W0, loc_56FB8                                          ; +0x90, 0x56f58\nMOV             X8, X20                                                ; +0x94, 0x56f5c\nLDR             S0, [X8,#0x8C]!                                        ; +0x98, 0x56f60\nLDR             S1, [X19]                                              ; +0x9c, 0x56f64\nFCMP            S0, S1                                                 ; +0xa0, 0x56f68\nB.NE            loc_56F90                                              ; +0xa4, 0x56f6c\nLDR             S0, [X20,#0x90]                                        ; +0xa8, 0x56f70\nLDR             S1, [X19,#4]                                           ; +0xac, 0x56f74\nFCMP            S0, S1                                                 ; +0xb0, 0x56f78\nB.NE            loc_56F90                                              ; +0xb4, 0x56f7c\nLDR             S0, [X20,#0x94]                                        ; +0xb8, 0x56f80\nLDR             S1, [X19,#8]                                           ; +0xbc, 0x56f84\nFCMP            S0, S1                                                 ; +0xc0, 0x56f88\nB.EQ            loc_56F9C                                              ; +0xc4, 0x56f8c\nLDR             W9, [X20,#0x48]                                        ; +0xc8, 0x56f90\nORR             W9, W9, #4                                             ; +0xcc, 0x56f94\nSTR             W9, [X20,#0x48]                                        ; +0xd0, 0x56f98\nLDR             W9, [X19,#8]                                           ; +0xd4, 0x56f9c\nLDR             X10, [X19]                                             ; +0xd8, 0x56fa0\nMOV             W0, WZR                                                ; +0xdc, 0x56fa4\nSTR             W9, [X8,#8]                                            ; +0xe0, 0x56fa8\nSTR             X10, [X8]                                              ; +0xe4, 0x56fac\nB               loc_56FB8                                              ; +0xe8, 0x56fb0\nMOV             W0, WZR                                                ; +0xec, 0x56fb4\nLDP             X29, X30, [SP,#0x30+var_10]                            ; +0xf0, 0x56fb8\nB               loc_5784C                                              ; +0xf4, 0x56fbc", "xrefs": ["<???> @ 0x10c538", "<???> @ 0x10c760"], "is_objc": false, "is_arm32": false, "is_arm64": false, "bida_info": "8.0.0 @ https://github.com/Stazzical/BromaIDA", "bindings_info": "commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings"}