{"type": "func", "start": 375132, "end": 375404, "name": "sub_5B95C", "pseudocode": "// \n// sub_5B95C from 0x5b95c to 0x5ba6c (272 bytes)\n// \n// 1 xrefs:\n// > <???> @ 0x10c6e0\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_5B95C(__int64 a1)\n{\n  __int64 v1; // x19\n  _DWORD *v2; // x1\n  int v3; // w2\n  __int64 v4; // x8\n  __int64 v5; // x9\n  __int64 v6; // x9\n  int v7; // w22\n  _DWORD *v8; // x20\n  unsigned int v9; // w21\n  __int64 v10; // x8\n  __int64 v11; // x8\n  int *v12; // x9\n  int v13; // t1\n  float *v15; // x23\n  __int64 v16; // x8\n  long double v17; // q0\n  float v18; // s1\n  _BYTE v19[4096]; // [xsp+0h] [xbp-1030h] BYREF\n\n  if ( !*(_QWORD *)(a1 + 472) )\n    return 30;\n  sub_5C688(a1);\n  if ( !v5 )\n    return 30;\n  v6 = *(_QWORD *)(v4 + 40);\n  v7 = v3;\n  v8 = v2;\n  if ( v6 )\n  {\n    v9 = *(_DWORD *)(v6 + 104);\n    goto LABEL_7;\n  }\n  v10 = *(_QWORD *)(v4 + 48);\n  if ( !v10 )\n    return 30;\n  v9 = *(unsigned __int16 *)(v10 + 280);\nLABEL_7:\n  if ( v3 < 1 )\n    return 31;\n  v11 = (unsigned int)v3;\n  v12 = v2;\n  while ( v11 )\n  {\n    v13 = *v12++;\n    --v11;\n    if ( (~v13 & 0x7F800000) == 0 )\n      return 29;\n  }\n  v15 = (float *)v19;\n  memset(v19, 0, sizeof(v19));\n  v16 = 0;\n  LODWORD(v17) = 1.0;\n  while ( v16 < (int)v9 )\n  {\n    v18 = 1.0;\n    if ( v16 < v7 )\n      v18 = *(float *)&v8[v16];\n    *v15 = v18;\n    v15 += 33;\n    ++v16;\n  }\n  return (*(__int64 (__fastcall **)(__int64, _BYTE *, _QWORD, _QWORD, __int64, __int64, long double))(*(_QWORD *)v1 + 200LL))(\n           v1,\n           v19,\n           v9,\n           v9,\n           32,\n           1,\n           v17);\n}", "assembly": "; \n; sub_5B95C from 0x5b95c to 0x5ba6c (272 bytes)\n; \n; 1 xrefs:\n; > <???> @ 0x10c6e0\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             X28, X23, [SP,#-0x10+var_30]!                          ; +0x0, 0x5b95c\nSTP             X22, X21, [SP,#0x30+var_20]                            ; +0x4, 0x5b960\nSTP             X20, X19, [SP,#0x30+var_10]                            ; +0x8, 0x5b964\nSTP             X29, X30, [SP,#0x30+var_s0]                            ; +0xc, 0x5b968\nADD             X29, SP, #0x30                                         ; +0x10, 0x5b96c\nSUB             SP, SP, #1,LSL#12                                      ; +0x14, 0x5b970\nLDR             X8, [X0,#0x1D8]                                        ; +0x18, 0x5b974\nCBZ             X8, loc_5B9D8                                          ; +0x1c, 0x5b978\nBL              sub_5C688                                              ; +0x20, 0x5b97c\nCBZ             X9, loc_5B9D8                                          ; +0x24, 0x5b980\nLDR             X9, [X8,#0x28]                                         ; +0x28, 0x5b984\nMOV             W22, W2                                                ; +0x2c, 0x5b988\nMOV             X20, X1                                                ; +0x30, 0x5b98c\nCBZ             X9, loc_5B99C                                          ; +0x34, 0x5b990\nLDR             W21, [X9,#0x68]                                        ; +0x38, 0x5b994\nB               loc_5B9A8                                              ; +0x3c, 0x5b998\nLDR             X8, [X8,#0x30]                                         ; +0x40, 0x5b99c\nCBZ             X8, loc_5B9D8                                          ; +0x44, 0x5b9a0\nLDRH            W21, [X8,#0x118]                                       ; +0x48, 0x5b9a4\nCMP             W22, #1                                                ; +0x4c, 0x5b9a8\nB.LT            loc_5B9F4                                              ; +0x50, 0x5b9ac\nMOV             W8, W22                                                ; +0x54, 0x5b9b0\nMOV             X9, X20                                                ; +0x58, 0x5b9b4\nCBZ             X8, loc_5B9FC                                          ; +0x5c, 0x5b9b8\nLDR             W10, [X9],#4                                           ; +0x60, 0x5b9bc\nSUB             X8, X8, #1                                             ; +0x64, 0x5b9c0\nMVN             W10, W10                                               ; +0x68, 0x5b9c4\nAND             W10, W10, #0x7F800000                                  ; +0x6c, 0x5b9c8\nCBNZ            W10, loc_5B9B8                                         ; +0x70, 0x5b9cc\nMOV             W0, #0x1D                                              ; +0x74, 0x5b9d0\nB               loc_5B9DC                                              ; +0x78, 0x5b9d4\nMOV             W0, #0x1E                                              ; +0x7c, 0x5b9d8\nADD             SP, SP, #1,LSL#12                                      ; +0x80, 0x5b9dc\nLDP             X29, X30, [SP,#0x30+var_s0]                            ; +0x84, 0x5b9e0\nLDP             X20, X19, [SP,#0x30+var_10]                            ; +0x88, 0x5b9e4\nLDP             X22, X21, [SP,#0x30+var_20]                            ; +0x8c, 0x5b9e8\nLDP             X28, X23, [SP+0x30+var_30],#0x40                       ; +0x90, 0x5b9ec\nRET                                                                    ; +0x94, 0x5b9f0\nMOV             W0, #0x1F                                              ; +0x98, 0x5b9f4\nB               loc_5B9DC                                              ; +0x9c, 0x5b9f8\nMOV             X0, SP; s                                              ; +0xa0, 0x5b9fc\nMOV             W2, #0x1000; n                                         ; +0xa4, 0x5ba00\nMOV             W1, WZR; c                                             ; +0xa8, 0x5ba04\nMOV             X23, SP                                                ; +0xac, 0x5ba08\nBL              .memset                                                ; +0xb0, 0x5ba0c\nMOV             X8, XZR                                                ; +0xb4, 0x5ba10\nSXTW            X9, W21                                                ; +0xb8, 0x5ba14\nSXTW            X10, W22                                               ; +0xbc, 0x5ba18\nFMOV            S0, #1.0                                               ; +0xc0, 0x5ba1c\nCMP             X8, X9                                                 ; +0xc4, 0x5ba20\nB.GE            loc_5BA44                                              ; +0xc8, 0x5ba24\nCMP             X8, X10                                                ; +0xcc, 0x5ba28\nMOV             V1.16B, V0.16B                                         ; +0xd0, 0x5ba2c\nB.GE            loc_5BA38                                              ; +0xd4, 0x5ba30\nLDR             S1, [X20,X8,LSL#2]                                     ; +0xd8, 0x5ba34\nSTR             S1, [X23],#0x84                                        ; +0xdc, 0x5ba38\nADD             X8, X8, #1                                             ; +0xe0, 0x5ba3c\nB               loc_5BA20                                              ; +0xe4, 0x5ba40\nLDR             X8, [X19]                                              ; +0xe8, 0x5ba44\nMOV             X1, SP                                                 ; +0xec, 0x5ba48\nMOV             W4, #0x20 ; ' '                                        ; +0xf0, 0x5ba4c\nMOV             W5, #1                                                 ; +0xf4, 0x5ba50\nLDR             X8, [X8,#0xC8]                                         ; +0xf8, 0x5ba54\nMOV             X0, X19                                                ; +0xfc, 0x5ba58\nMOV             W2, W21                                                ; +0x100, 0x5ba5c\nMOV             W3, W21                                                ; +0x104, 0x5ba60\nBLR             X8                                                     ; +0x108, 0x5ba64\nB               loc_5B9DC                                              ; +0x10c, 0x5ba68", "xrefs": ["<???> @ 0x10c6e0"], "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"}