{"type": "func", "start": 356428, "end": 356696, "name": "sub_5704C", "pseudocode": "// \n// sub_5704C from 0x5704c to 0x57158 (268 bytes)\n// \n// 2 xrefs:\n// > <???> @ 0x10c548\n// > <???> @ 0x10c770\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_5704C(__int64 *a1, float a2, float a3)\n{\n  __int64 result; // x0\n  __int64 v7; // x1\n  int v8; // w8\n  int v9; // [xsp+1Ch] [xbp-4h] BYREF\n\n  result = (*(__int64 (__fastcall **)(__int64 *, int *))(*a1 + 152))(a1, &v9);\n  if ( !(_DWORD)result )\n  {\n    v8 = v9;\n    if ( (v9 & 0x10) == 0 )\n      return 40;\n    if ( (~LODWORD(a2) & 0x7F800000) == 0 || (~LODWORD(a3) & 0x7F800000) == 0 )\n      return 29;\n    result = 31;\n    if ( a3 >= a2 && a2 >= 0.0 && a3 >= 0.0 )\n    {\n      if ( *((float *)a1 + 39) == a2 && *((float *)a1 + 40) == a3 )\n        return 0;\n      *((float *)a1 + 39) = a2;\n      *((float *)a1 + 40) = a3;\n      if ( (v8 & 0x4F00000) == 0 && !*(_QWORD *)(a1[1] + 69120) )\n      {\n        *((_DWORD *)a1 + 18) |= 4u;\n        return 0;\n      }\n      *((_DWORD *)a1 + 18) |= 4u;\n      result = sub_55DCC(a1, v7, 0, 0);\n      if ( !(_DWORD)result )\n      {\n        result = sub_5790C(result);\n        if ( !(_DWORD)result )\n          return 0;\n      }\n    }\n  }\n  return result;\n}", "assembly": "; \n; sub_5704C from 0x5704c to 0x57158 (268 bytes)\n; \n; 2 xrefs:\n; > <???> @ 0x10c548\n; > <???> @ 0x10c770\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\nSTP             D9, D8, [SP,#-0x10+var_20]!                            ; +0x0, 0x5704c\nSTP             X29, X30, [SP,#0x20+var_s0]                            ; +0x4, 0x57050\nLDR             X8, [X0]                                               ; +0x8, 0x57054\nADD             X29, SP, #0x20                                         ; +0xc, 0x57058\nSUB             X1, X29, #-var_4                                       ; +0x10, 0x5705c\nSTR             X19, [SP,#0x20+var_10]                                 ; +0x14, 0x57060\nLDR             X8, [X8,#0x98]                                         ; +0x18, 0x57064\nMOV             V8.16B, V1.16B                                         ; +0x1c, 0x57068\nMOV             X19, X0                                                ; +0x20, 0x5706c\nMOV             V9.16B, V0.16B                                         ; +0x24, 0x57070\nBLR             X8                                                     ; +0x28, 0x57074\nCBNZ            W0, loc_570B0                                          ; +0x2c, 0x57078\nLDUR            W8, [X29,#var_4]                                       ; +0x30, 0x5707c\nTBNZ            W8, #4, loc_5708C                                      ; +0x34, 0x57080\nMOV             W0, #0x28 ; '('                                        ; +0x38, 0x57084\nB               loc_570B0                                              ; +0x3c, 0x57088\nFMOV            W9, S9                                                 ; +0x40, 0x5708c\nMVN             W9, W9                                                 ; +0x44, 0x57090\nTST             W9, #0x7F800000                                        ; +0x48, 0x57094\nB.EQ            loc_570AC                                              ; +0x4c, 0x57098\nFMOV            W9, S8                                                 ; +0x50, 0x5709c\nMVN             W9, W9                                                 ; +0x54, 0x570a0\nTST             W9, #0x7F800000                                        ; +0x58, 0x570a4\nB.NE            loc_570C0                                              ; +0x5c, 0x570a8\nMOV             W0, #0x1D                                              ; +0x60, 0x570ac\nLDP             X29, X30, [SP,#0x20+var_s0]                            ; +0x64, 0x570b0\nLDR             X19, [SP,#0x20+var_10]                                 ; +0x68, 0x570b4\nLDP             D9, D8, [SP+0x20+var_20],#0x30                         ; +0x6c, 0x570b8\nRET                                                                    ; +0x70, 0x570bc\nFCMP            S8, S9                                                 ; +0x74, 0x570c0\nMOV             W0, #0x1F                                              ; +0x78, 0x570c4\nB.LT            loc_570B0                                              ; +0x7c, 0x570c8\nFCMP            S9, #0.0                                               ; +0x80, 0x570cc\nB.LT            loc_570B0                                              ; +0x84, 0x570d0\nFCMP            S8, #0.0                                               ; +0x88, 0x570d4\nB.LT            loc_570B0                                              ; +0x8c, 0x570d8\nLDR             S0, [X19,#0x9C]                                        ; +0x90, 0x570dc\nFCMP            S0, S9                                                 ; +0x94, 0x570e0\nB.NE            loc_570F4                                              ; +0x98, 0x570e4\nLDR             S0, [X19,#0xA0]                                        ; +0x9c, 0x570e8\nFCMP            S0, S8                                                 ; +0xa0, 0x570ec\nB.EQ            loc_57150                                              ; +0xa4, 0x570f0\nMOV             W9, #0x4F00000                                         ; +0xa8, 0x570f4\nTST             W8, W9                                                 ; +0xac, 0x570f8\nSTP             S9, S8, [X19,#0x9C]                                    ; +0xb0, 0x570fc\nB.NE            loc_57118                                              ; +0xb4, 0x57100\nLDR             X8, [X19,#8]                                           ; +0xb8, 0x57104\nMOV             W9, #0x10E00                                           ; +0xbc, 0x57108\nLDR             X8, [X8,X9]                                            ; +0xc4, 0x57110\nCBZ             X8, loc_57144                                          ; +0xc8, 0x57114\nLDR             W8, [X19,#0x48]                                        ; +0xcc, 0x57118\nMOV             X0, X19                                                ; +0xd0, 0x5711c\nMOV             W2, WZR                                                ; +0xd4, 0x57120\nMOV             W3, WZR                                                ; +0xd8, 0x57124\nORR             W8, W8, #4                                             ; +0xdc, 0x57128\nSTR             W8, [X19,#0x48]                                        ; +0xe0, 0x5712c\nBL              sub_55DCC                                              ; +0xe4, 0x57130\nCBNZ            W0, loc_570B0                                          ; +0xe8, 0x57134\nBL              sub_5790C                                              ; +0xec, 0x57138\nCBNZ            W0, loc_570B0                                          ; +0xf0, 0x5713c\nB               loc_57150                                              ; +0xf4, 0x57140\nLDR             W8, [X19,#0x48]                                        ; +0xf8, 0x57144\nORR             W8, W8, #4                                             ; +0xfc, 0x57148\nSTR             W8, [X19,#0x48]                                        ; +0x100, 0x5714c\nMOV             W0, WZR                                                ; +0x104, 0x57150\nB               loc_570B0                                              ; +0x108, 0x57154", "xrefs": ["<???> @ 0x10c548", "<???> @ 0x10c770"], "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"}