{"type": "func", "start": 338008, "end": 338264, "name": "sub_52858", "pseudocode": "// \n// sub_52858 from 0x52858 to 0x52958 (256 bytes)\n// \n// 1 xrefs:\n// > <???> @ 0x10c220\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\nfloat __fastcall sub_52858(__int64 a1, int a2, __int64 a3, __int64 a4)\n{\n  float result; // s0\n  __int64 v6; // x20\n  int v7; // w8\n  __int64 v8; // x0\n  __int64 v9; // x20\n  unsigned int *v10; // x8\n  unsigned int v11; // w9\n  __int64 v12; // [xsp+8h] [xbp-18h] BYREF\n\n  if ( !(unsigned int)sub_524B8(a1, a2, a3, a4) )\n  {\n    v6 = *(_QWORD *)(a1 + 8);\n    v7 = *(_DWORD *)(v6 + 120);\n    if ( (v7 & 0x300) != 0 )\n    {\n      if ( (unsigned int)sub_6DFFC(*(_QWORD *)(a1 + 8), 20, a1 + 752) )\n        return result;\n      v6 = *(_QWORD *)(a1 + 8);\n      v7 = *(_DWORD *)(v6 + 120);\n    }\n    if ( (v7 & 0x200) != 0 )\n    {\n      if ( (unsigned int)sub_6DFFC(v6, 26, a1 + 760) )\n        return result;\n      v6 = *(_QWORD *)(a1 + 8);\n    }\n    v12 = a1 + 112;\n    v8 = sub_C6F2C();\n    if ( !(unsigned int)sub_77040(v6, v8, 0, &v12, 0) )\n    {\n      v9 = v12;\n      if ( !(*(unsigned int (__fastcall **)(__int64, __int64, __int64, _QWORD))(*(_QWORD *)v12 + 40LL))(v12, 1, 1, 0)\n        && !(unsigned int)sub_CC7C4(v9, a1) )\n      {\n        v10 = (unsigned int *)(v9 + 100);\n        *(float *)(v9 + 568) = (float)*(int *)(*(_QWORD *)(a1 + 8) + 1744LL);\n        do\n          v11 = __ldaxr(v10);\n        while ( __stlxr(v11 | 0x200, v10) );\n        result = -*(float *)(a1 + 100);\n        *(float *)(a1 + 104) = result;\n      }\n    }\n  }\n  return result;\n}", "assembly": "; \n; sub_52858 from 0x52858 to 0x52958 (256 bytes)\n; \n; 1 xrefs:\n; > <???> @ 0x10c220\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\nSUB             SP, SP, #0x30                                          ; +0x0, 0x52858\nSTP             X20, X19, [SP,#0x20+var_10]                            ; +0x4, 0x5285c\nSTP             X29, X30, [SP,#0x20+var_s0]                            ; +0x8, 0x52860\nADD             X29, SP, #0x20                                         ; +0xc, 0x52864\nMOV             X19, X0                                                ; +0x10, 0x52868\nBL              sub_524B8                                              ; +0x14, 0x5286c\nCBZ             W0, loc_5287C                                          ; +0x18, 0x52870\nLDP             X29, X30, [SP,#0x20+var_s0]                            ; +0x1c, 0x52874\nB               loc_53E08                                              ; +0x20, 0x52878\nLDR             X20, [X19,#8]                                          ; +0x24, 0x5287c\nLDR             W8, [X20,#0x78]                                        ; +0x28, 0x52880\nTST             W8, #0x300                                             ; +0x2c, 0x52884\nB.EQ            loc_528A8                                              ; +0x30, 0x52888\nADD             X2, X19, #0x2F0                                        ; +0x34, 0x5288c\nMOV             W1, #0x14                                              ; +0x38, 0x52890\nMOV             X0, X20                                                ; +0x3c, 0x52894\nBL              sub_6DFFC                                              ; +0x40, 0x52898\nCBNZ            W0, loc_52874                                          ; +0x44, 0x5289c\nLDR             X20, [X19,#8]                                          ; +0x48, 0x528a0\nLDR             W8, [X20,#0x78]                                        ; +0x4c, 0x528a4\nTBZ             W8, #9, loc_528C4                                      ; +0x50, 0x528a8\nADD             X2, X19, #0x2F8                                        ; +0x54, 0x528ac\nMOV             W1, #0x1A                                              ; +0x58, 0x528b0\nMOV             X0, X20                                                ; +0x5c, 0x528b4\nBL              sub_6DFFC                                              ; +0x60, 0x528b8\nCBNZ            W0, loc_52874                                          ; +0x64, 0x528bc\nLDR             X20, [X19,#8]                                          ; +0x68, 0x528c0\nADD             X8, X19, #0x70 ; 'p'                                   ; +0x6c, 0x528c4\nSTR             X8, [SP,#0x20+var_18]                                  ; +0x70, 0x528c8\nBL              sub_C6F2C                                              ; +0x74, 0x528cc\nMOV             X1, X0                                                 ; +0x78, 0x528d0\nADD             X3, SP, #0x20+var_18                                   ; +0x7c, 0x528d4\nMOV             X0, X20                                                ; +0x80, 0x528d8\nMOV             X2, XZR                                                ; +0x84, 0x528dc\nMOV             W4, WZR                                                ; +0x88, 0x528e0\nBL              sub_77040                                              ; +0x8c, 0x528e4\nCBNZ            W0, loc_52874                                          ; +0x90, 0x528e8\nLDR             X20, [SP,#0x20+var_18]                                 ; +0x94, 0x528ec\nMOV             W1, #1                                                 ; +0x98, 0x528f0\nMOV             W2, #1                                                 ; +0x9c, 0x528f4\nMOV             W3, WZR                                                ; +0xa0, 0x528f8\nLDR             X8, [X20]                                              ; +0xa4, 0x528fc\nMOV             X0, X20                                                ; +0xa8, 0x52900\nLDR             X8, [X8,#0x28]                                         ; +0xac, 0x52904\nBLR             X8                                                     ; +0xb0, 0x52908\nCBNZ            W0, loc_52874                                          ; +0xb4, 0x5290c\nMOV             X0, X20                                                ; +0xb8, 0x52910\nMOV             X1, X19                                                ; +0xbc, 0x52914\nBL              sub_CC7C4                                              ; +0xc0, 0x52918\nCBNZ            W0, loc_52874                                          ; +0xc4, 0x5291c\nLDR             X8, [X19,#8]                                           ; +0xc8, 0x52920\nLDR             S0, [X8,#0x6D0]                                        ; +0xcc, 0x52924\nADD             X8, X20, #0x64 ; 'd'                                   ; +0xd0, 0x52928\nSCVTF           S0, S0                                                 ; +0xd4, 0x5292c\nSTR             S0, [X20,#0x238]                                       ; +0xd8, 0x52930\nLDAXR           W9, [X8]                                               ; +0xdc, 0x52934\nORR             W9, W9, #0x200                                         ; +0xe0, 0x52938\nSTLXR           W10, W9, [X8]                                          ; +0xe4, 0x5293c\nCBNZ            W10, loc_52934                                         ; +0xe8, 0x52940\nLDR             S0, [X19,#0x64]                                        ; +0xec, 0x52944\nMOV             W0, WZR                                                ; +0xf0, 0x52948\nFNEG            S0, S0                                                 ; +0xf4, 0x5294c\nSTR             S0, [X19,#0x68]                                        ; +0xf8, 0x52950\nB               loc_52874                                              ; +0xfc, 0x52954", "xrefs": ["<???> @ 0x10c220"], "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"}