{"type": "func", "start": 369220, "end": 369508, "name": "sub_5A244", "pseudocode": "// \n// sub_5A244 from 0x5a244 to 0x5a364 (288 bytes)\n// \n// 3 xrefs:\n// > sub_59AE8 @ 0x59c5c\n// > sub_7C19C @ 0x7c4ac\n// > sub_7C19C @ 0x7c65c\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\n__int64 __fastcall sub_5A244(float *a1, unsigned int *a2)\n{\n  unsigned int i; // w21\n  __int64 result; // x0\n  _BYTE v6[4]; // [xsp+Ch] [xbp-14h] BYREF\n\n  (*(void (__fastcall **)(float *, _QWORD))(*(_QWORD *)a1 + 144LL))(a1, *a2);\n  sub_596C0((__int64)a1);\n  (*(void (__fastcall **)(float *, float))(*(_QWORD *)a1 + 72LL))(a1, a1[13]);\n  sub_5A76C(a1, a2[2], 2, a2[3], 2);\n  sub_5A8E8(a1, a2[6]);\n  sub_5A918(a1, a2[1], 2);\n  (*(void (__fastcall **)(float *, _QWORD, float))(*(_QWORD *)a1 + 32LL))(a1, 0, a1[12]);\n  for ( i = 0; i != 4; ++i )\n    (*(void (__fastcall **)(float *, _QWORD))(*(_QWORD *)a1 + 120LL))(a1, i);\n  if ( !*((_QWORD *)a1 + 46)\n    || ((*(void (__fastcall **)(float *, _BYTE *))(*(_QWORD *)a1 + 496LL))(a1, v6),\n        result = sub_55C9C((__int64)a1, *((_QWORD *)a1 + 10), 0, 1u, v6[0], 0),\n        !(_DWORD)result) )\n  {\n    (*(void (__fastcall **)(_QWORD))(**((_QWORD **)a2 + 2) + 208LL))(*((_QWORD *)a2 + 2));\n    *(_DWORD *)(*((_QWORD *)a2 + 2) + 60LL) &= ~0x8000u;\n    return 0;\n  }\n  return result;\n}", "assembly": "; \n; sub_5A244 from 0x5a244 to 0x5a364 (288 bytes)\n; \n; 3 xrefs:\n; > sub_59AE8 @ 0x59c5c\n; > sub_7C19C @ 0x7c4ac\n; > sub_7C19C @ 0x7c65c\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,#-0x10+var_20]!                               ; +0x0, 0x5a244\nSTP             X20, X19, [SP,#0x20+var_10]                            ; +0x4, 0x5a248\nSTP             X29, X30, [SP,#0x20+var_s0]                            ; +0x8, 0x5a24c\nLDR             X8, [X0]                                               ; +0xc, 0x5a250\nMOV             X19, X1                                                ; +0x10, 0x5a254\nLDR             W1, [X1]                                               ; +0x14, 0x5a258\nADD             X29, SP, #0x20                                         ; +0x18, 0x5a25c\nLDR             X8, [X8,#0x90]                                         ; +0x1c, 0x5a260\nMOV             X20, X0                                                ; +0x20, 0x5a264\nBLR             X8                                                     ; +0x24, 0x5a268\nLDR             S0, [X20,#0x22C]                                       ; +0x28, 0x5a26c\nMOV             X0, X20                                                ; +0x2c, 0x5a270\nBL              sub_596C0                                              ; +0x30, 0x5a274\nLDR             X8, [X20]                                              ; +0x34, 0x5a278\nLDR             S0, [X20,#0x34]                                        ; +0x38, 0x5a27c\nMOV             X0, X20                                                ; +0x3c, 0x5a280\nLDR             X8, [X8,#0x48]                                         ; +0x40, 0x5a284\nBLR             X8                                                     ; +0x44, 0x5a288\nLDP             W1, W3, [X19,#8]                                       ; +0x48, 0x5a28c\nMOV             W2, #2                                                 ; +0x4c, 0x5a290\nMOV             W4, #2                                                 ; +0x50, 0x5a294\nMOV             X0, X20                                                ; +0x54, 0x5a298\nBL              sub_5A76C                                              ; +0x58, 0x5a29c\nLDR             W1, [X19,#0x18]                                        ; +0x5c, 0x5a2a0\nMOV             X0, X20                                                ; +0x60, 0x5a2a4\nBL              sub_5A8E8                                              ; +0x64, 0x5a2a8\nLDR             W1, [X19,#4]                                           ; +0x68, 0x5a2ac\nMOV             W2, #2                                                 ; +0x6c, 0x5a2b0\nMOV             X0, X20                                                ; +0x70, 0x5a2b4\nBL              sub_5A918                                              ; +0x74, 0x5a2b8\nLDR             X8, [X20]                                              ; +0x78, 0x5a2bc\nLDR             S0, [X20,#0x30]                                        ; +0x7c, 0x5a2c0\nMOV             X0, X20                                                ; +0x80, 0x5a2c4\nMOV             W1, WZR                                                ; +0x84, 0x5a2c8\nLDR             X8, [X8,#0x20]                                         ; +0x88, 0x5a2cc\nBLR             X8                                                     ; +0x8c, 0x5a2d0\nMOV             W21, WZR                                               ; +0x90, 0x5a2d4\nCMP             W21, #4                                                ; +0x94, 0x5a2d8\nB.EQ            loc_5A2FC                                              ; +0x98, 0x5a2dc\nLDR             X8, [X20]                                              ; +0x9c, 0x5a2e0\nMOV             X0, X20                                                ; +0xa0, 0x5a2e4\nMOV             W1, W21                                                ; +0xa4, 0x5a2e8\nLDR             X8, [X8,#0x78]                                         ; +0xa8, 0x5a2ec\nBLR             X8                                                     ; +0xac, 0x5a2f0\nADD             W21, W21, #1                                           ; +0xb0, 0x5a2f4\nB               loc_5A2D8                                              ; +0xb4, 0x5a2f8\nLDR             X8, [X20,#0x170]                                       ; +0xb8, 0x5a2fc\nCBZ             X8, loc_5A338                                          ; +0xbc, 0x5a300\nLDR             X8, [X20]                                              ; +0xc0, 0x5a304\nADD             X1, SP, #0x20+var_14                                   ; +0xc4, 0x5a308\nMOV             X0, X20                                                ; +0xc8, 0x5a30c\nLDR             X8, [X8,#0x1F0]                                        ; +0xcc, 0x5a310\nBLR             X8                                                     ; +0xd0, 0x5a314\nLDR             X1, [X20,#0x50]                                        ; +0xd4, 0x5a318\nLDRB            W4, [SP,#0x20+var_14]                                  ; +0xd8, 0x5a31c\nMOV             W3, #1                                                 ; +0xdc, 0x5a320\nMOV             X0, X20                                                ; +0xe0, 0x5a324\nMOV             W2, WZR                                                ; +0xe4, 0x5a328\nMOV             X5, XZR                                                ; +0xe8, 0x5a32c\nBL              sub_55C9C                                              ; +0xec, 0x5a330\nCBNZ            W0, loc_5A35C                                          ; +0xf0, 0x5a334\nLDR             X0, [X19,#0x10]                                        ; +0xf4, 0x5a338\nLDR             X8, [X0]                                               ; +0xf8, 0x5a33c\nLDR             X8, [X8,#0xD0]                                         ; +0xfc, 0x5a340\nBLR             X8                                                     ; +0x100, 0x5a344\nLDR             X8, [X19,#0x10]                                        ; +0x104, 0x5a348\nMOV             W0, WZR                                                ; +0x108, 0x5a34c\nLDR             W9, [X8,#0x3C]                                         ; +0x10c, 0x5a350\nAND             W9, W9, #0xFFFF7FFF                                    ; +0x110, 0x5a354\nSTR             W9, [X8,#0x3C]                                         ; +0x114, 0x5a358\nLDP             X29, X30, [SP,#0x20+var_s0]                            ; +0x118, 0x5a35c\nB               loc_5C56C                                              ; +0x11c, 0x5a360", "xrefs": ["sub_59AE8 @ 0x59c5c", "sub_7C19C @ 0x7c4ac", "sub_7C19C @ 0x7c65c"], "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"}