{"type": "func", "start": 374840, "end": 375132, "name": "sub_5B838", "pseudocode": "// \n// sub_5B838 from 0x5b838 to 0x5b95c (292 bytes)\n// \n// 1 xrefs:\n// > <???> @ 0x10c6d8\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_5B838(__int64 a1, __int64 a2)\n{\n  __int64 v2; // x0\n  __int64 v3; // x1\n  char v4; // zf\n  __int64 v5; // x0\n  __int64 v6; // x1\n  __int64 v7; // x0\n  __int64 v8; // x1\n  __int64 v9; // x0\n  __int64 v10; // x1\n  __int64 v11; // x0\n  __int64 v12; // x1\n  __int64 v13; // x0\n  __int64 v14; // x1\n  __int64 v15; // x0\n  __int64 v16; // x1\n  __int64 v17; // x0\n  __int64 result; // x0\n  __int64 v19; // x8\n  __int64 v20; // x19\n  __int64 v21; // x9\n  __int64 v22; // x1\n  __int64 v23; // x2\n  __int64 v24; // x8\n  int v25; // w8\n  __int64 v26; // x2\n  unsigned int v27; // [xsp+Ch] [xbp-1014h] BYREF\n  _BYTE v28[4096]; // [xsp+10h] [xbp-1010h] BYREF\n\n  v2 = sub_5C748(a1, a2);\n  if ( v4 )\n    return 29;\n  v5 = sub_5C748(v2, v3);\n  if ( v4 )\n    return 29;\n  v7 = sub_5C748(v5, v6);\n  if ( v4 )\n    return 29;\n  v9 = sub_5C748(v7, v8);\n  if ( v4 )\n    return 29;\n  v11 = sub_5C748(v9, v10);\n  if ( v4 )\n    return 29;\n  v13 = sub_5C748(v11, v12);\n  if ( v4 )\n    return 29;\n  v15 = sub_5C748(v13, v14);\n  if ( v4 )\n    return 29;\n  v17 = sub_5C748(v15, v16);\n  if ( v4 )\n    return 29;\n  v19 = *(_QWORD *)(v17 + 472);\n  v20 = v17;\n  if ( !v19 || !*(_QWORD *)(v17 + 32) )\n    return 30;\n  v21 = *(_QWORD *)(v19 + 40);\n  if ( v21 )\n  {\n    v22 = *(unsigned int *)(v21 + 104);\n    v23 = *(unsigned int *)(v21 + 116);\n    goto LABEL_18;\n  }\n  v24 = *(_QWORD *)(v19 + 48);\n  if ( !v24 )\n    return 30;\n  v22 = *(unsigned __int16 *)(v24 + 280);\n  v23 = 0;\nLABEL_18:\n  result = sub_C9A84(*(unsigned int *)(v17 + 548), v22, v23, v28, &v27);\n  if ( !(_DWORD)result )\n  {\n    v25 = *(_DWORD *)(v20 + 548);\n    v26 = 2;\n    if ( v25 != 3 && v25 != 1000 )\n      v26 = *(unsigned int *)(*(_QWORD *)(v20 + 8) + 1748LL);\n    return (*(__int64 (__fastcall **)(__int64, _BYTE *, __int64, _QWORD, _QWORD, __int64))(*(_QWORD *)v20 + 200LL))(\n             v20,\n             v28,\n             v26,\n             v27,\n             0,\n             1);\n  }\n  return result;\n}", "assembly": "; \n; sub_5B838 from 0x5b838 to 0x5b95c (292 bytes)\n; \n; 1 xrefs:\n; > <???> @ 0x10c6d8\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, X19, [SP,#-0x10+var_10]!                          ; +0x0, 0x5b838\nSTP             X29, X30, [SP,#0x10+var_s0]                            ; +0x4, 0x5b83c\nADD             X29, SP, #0x10                                         ; +0x8, 0x5b840\nSUB             SP, SP, #1,LSL#12                                      ; +0xc, 0x5b844\nSUB             SP, SP, #0x10                                          ; +0x10, 0x5b848\nFMOV            W8, S0                                                 ; +0x14, 0x5b84c\nBL              sub_5C748                                              ; +0x18, 0x5b850\nB.EQ            loc_5B8AC                                              ; +0x1c, 0x5b854\nFMOV            W8, S1                                                 ; +0x20, 0x5b858\nBL              sub_5C748                                              ; +0x24, 0x5b85c\nB.EQ            loc_5B8AC                                              ; +0x28, 0x5b860\nFMOV            W8, S2                                                 ; +0x2c, 0x5b864\nBL              sub_5C748                                              ; +0x30, 0x5b868\nB.EQ            loc_5B8AC                                              ; +0x34, 0x5b86c\nFMOV            W8, S3                                                 ; +0x38, 0x5b870\nBL              sub_5C748                                              ; +0x3c, 0x5b874\nB.EQ            loc_5B8AC                                              ; +0x40, 0x5b878\nFMOV            W8, S4                                                 ; +0x44, 0x5b87c\nBL              sub_5C748                                              ; +0x48, 0x5b880\nB.EQ            loc_5B8AC                                              ; +0x4c, 0x5b884\nFMOV            W8, S5                                                 ; +0x50, 0x5b888\nBL              sub_5C748                                              ; +0x54, 0x5b88c\nB.EQ            loc_5B8AC                                              ; +0x58, 0x5b890\nFMOV            W8, S6                                                 ; +0x5c, 0x5b894\nBL              sub_5C748                                              ; +0x60, 0x5b898\nB.EQ            loc_5B8AC                                              ; +0x64, 0x5b89c\nFMOV            W8, S7                                                 ; +0x68, 0x5b8a0\nBL              sub_5C748                                              ; +0x6c, 0x5b8a4\nB.NE            loc_5B8C4                                              ; +0x70, 0x5b8a8\nMOV             W0, #0x1D                                              ; +0x74, 0x5b8ac\nADD             SP, SP, #1,LSL#12                                      ; +0x78, 0x5b8b0\nADD             SP, SP, #0x10                                          ; +0x7c, 0x5b8b4\nLDP             X29, X30, [SP,#0x10+var_s0]                            ; +0x80, 0x5b8b8\nLDP             X28, X19, [SP+0x10+var_10],#0x20                       ; +0x84, 0x5b8bc\nRET                                                                    ; +0x88, 0x5b8c0\nLDR             X8, [X0,#0x1D8]                                        ; +0x8c, 0x5b8c4\nMOV             X19, X0                                                ; +0x90, 0x5b8c8\nCBZ             X8, loc_5B954                                          ; +0x94, 0x5b8cc\nLDR             X9, [X19,#0x20]                                        ; +0x98, 0x5b8d0\nCBZ             X9, loc_5B954                                          ; +0x9c, 0x5b8d4\nLDR             X9, [X8,#0x28]                                         ; +0xa0, 0x5b8d8\nCBZ             X9, loc_5B8EC                                          ; +0xa4, 0x5b8dc\nLDR             W1, [X9,#0x68]                                         ; +0xa8, 0x5b8e0\nLDR             W2, [X9,#0x74]                                         ; +0xac, 0x5b8e4\nB               loc_5B8FC                                              ; +0xb0, 0x5b8e8\nLDR             X8, [X8,#0x30]                                         ; +0xb4, 0x5b8ec\nCBZ             X8, loc_5B954                                          ; +0xb8, 0x5b8f0\nLDRH            W1, [X8,#0x118]                                        ; +0xbc, 0x5b8f4\nMOV             W2, WZR                                                ; +0xc0, 0x5b8f8\nLDR             W0, [X19,#0x224]                                       ; +0xc4, 0x5b8fc\nADD             X3, SP, #0x1020+var_1010                               ; +0xc8, 0x5b900\nADD             X4, SP, #0x1020+var_1014                               ; +0xcc, 0x5b904\nBL              sub_C9A84                                              ; +0xd0, 0x5b908\nCBNZ            W0, loc_5B8B0                                          ; +0xd4, 0x5b90c\nLDR             W8, [X19,#0x224]                                       ; +0xd8, 0x5b910\nMOV             W2, #2                                                 ; +0xdc, 0x5b914\nCMP             W8, #3                                                 ; +0xe0, 0x5b918\nB.EQ            loc_5B930                                              ; +0xe4, 0x5b91c\nCMP             W8, #0x3E8                                             ; +0xe8, 0x5b920\nB.EQ            loc_5B930                                              ; +0xec, 0x5b924\nLDR             X8, [X19,#8]                                           ; +0xf0, 0x5b928\nLDR             W2, [X8,#0x6D4]                                        ; +0xf4, 0x5b92c\nLDR             X8, [X19]                                              ; +0xf8, 0x5b930\nLDR             W3, [SP,#0x1020+var_1014]                              ; +0xfc, 0x5b934\nADD             X1, SP, #0x1020+var_1010                               ; +0x100, 0x5b938\nMOV             W5, #1                                                 ; +0x104, 0x5b93c\nLDR             X8, [X8,#0xC8]                                         ; +0x108, 0x5b940\nMOV             X0, X19                                                ; +0x10c, 0x5b944\nMOV             W4, WZR                                                ; +0x110, 0x5b948\nBLR             X8                                                     ; +0x114, 0x5b94c\nB               loc_5B8B0                                              ; +0x118, 0x5b950\nMOV             W0, #0x1E                                              ; +0x11c, 0x5b954\nB               loc_5B8B0                                              ; +0x120, 0x5b958", "xrefs": ["<???> @ 0x10c6d8"], "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"}