{"type": "func", "start": 383840, "end": 384160, "name": "sub_5DB60", "pseudocode": "// \n// sub_5DB60 from 0x5db60 to 0x5dca0 (320 bytes)\n// \n// 2 xrefs:\n// > sub_5E794 @ 0x5e8ec\n// > sub_6F850 @ 0x6f8c8\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_5DB60(__int64 a1, int a2, int a3)\n{\n  __int64 v6; // x0\n  void *v7; // x0\n  unsigned int v8; // w20\n  __int64 v10; // x8\n  __int64 v11; // x2\n  __int64 v12; // x8\n\n  v6 = sub_5F218(*(_QWORD *)(*(_QWORD *)(a1 + 24) + 400LL));\n  v7 = (void *)sub_5F23C(v6);\n  if ( !*(_QWORD *)(a1 + 64) && !*(_QWORD *)(a1 + 48) )\n  {\n    *(_DWORD *)(a1 + 32) = a3;\n    *(_DWORD *)(a1 + 36) = 0;\n    *(_DWORD *)(a1 + 40) = a2;\n    *(_DWORD *)(a1 + 44) = 0;\n    v7 = (void *)sub_5F290(\n                   *(__int64 *)((char *)&qword_1B0 + (_QWORD)off_114000),\n                   (unsigned int)(4 * a3),\n                   \"../../src/fmod_geometryi.cpp\",\n                   449,\n                   0);\n    *(_QWORD *)(a1 + 48) = v7;\n    if ( v7 )\n    {\n      *(_DWORD *)(a1 + 56) = 0;\n      v7 = (void *)sub_5F290(\n                     *(__int64 *)((char *)&qword_1B0 + (_QWORD)off_114000),\n                     (unsigned int)(188 * a2 + 12 * a3),\n                     \"../../src/fmod_geometryi.cpp\",\n                     458,\n                     0);\n      *(_QWORD *)(a1 + 64) = v7;\n      if ( v7 )\n      {\n        sub_5D358(*(_QWORD *)(a1 + 24));\n        v8 = (unsigned int)v7;\n        if ( (_DWORD)v7 )\n          goto LABEL_4;\n        sub_5F220(v7);\n        v7 = (void *)sub_5F290(*(_QWORD *)(v10 + 432), 168, v11, 470, 0);\n        *(_QWORD *)(a1 + 264) = v7;\n        if ( v7 )\n        {\n          memset(v7, 0, 0xA8u);\n          v12 = *(_QWORD *)(a1 + 264);\n          *(_QWORD *)(v12 + 160) = a1;\n          v7 = (void *)sub_61098(*(_QWORD *)(*(_QWORD *)(a1 + 24) + 416LL), v12 + 80);\n          v8 = 0;\n          goto LABEL_4;\n        }\n      }\n    }\n    v8 = 38;\n    goto LABEL_4;\n  }\n  v8 = 28;\nLABEL_4:\n  sub_5F234(v7);\n  return v8;\n}", "assembly": "; \n; sub_5DB60 from 0x5db60 to 0x5dca0 (320 bytes)\n; \n; 2 xrefs:\n; > sub_5E794 @ 0x5e8ec\n; > sub_6F850 @ 0x6f8c8\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, #0x40                                          ; +0x0, 0x5db60\nSTP             X22, X21, [SP,#0x30+var_20]                            ; +0x4, 0x5db64\nSTP             X20, X19, [SP,#0x30+var_10]                            ; +0x8, 0x5db68\nSTP             X29, X30, [SP,#0x30+var_s0]                            ; +0xc, 0x5db6c\nLDR             X8, [X0,#0x18]                                         ; +0x10, 0x5db70\nMOV             X19, X0                                                ; +0x14, 0x5db74\nADD             X29, SP, #0x30                                         ; +0x18, 0x5db78\nMOV             W20, W2                                                ; +0x1c, 0x5db7c\nLDR             X0, [X8,#0x190]                                        ; +0x20, 0x5db80\nMOV             W21, W1                                                ; +0x24, 0x5db84\nBL              sub_5F218                                              ; +0x28, 0x5db88\nBL              sub_5F23C                                              ; +0x2c, 0x5db8c\nLDR             X8, [X19,#0x40]                                        ; +0x30, 0x5db90\nCBNZ            X8, loc_5DBA0                                          ; +0x34, 0x5db94\nLDR             X8, [X19,#0x30]                                        ; +0x38, 0x5db98\nCBZ             X8, loc_5DBBC                                          ; +0x3c, 0x5db9c\nMOV             W20, #0x1C                                             ; +0x40, 0x5dba0\nBL              sub_5F234                                              ; +0x44, 0x5dba4\nMOV             W0, W20                                                ; +0x48, 0x5dba8\nLDP             X29, X30, [SP,#0x30+var_s0]                            ; +0x4c, 0x5dbac\nLDP             X20, X19, [SP,#0x30+var_10]                            ; +0x50, 0x5dbb0\nLDP             X22, X21, [SP,#0x30+var_20]                            ; +0x54, 0x5dbb4\nB               loc_5F2CC                                              ; +0x58, 0x5dbb8\nSTP             W20, WZR, [X19,#0x20]                                  ; +0x5c, 0x5dbbc\nSTP             W21, WZR, [X19,#0x28]                                  ; +0x60, 0x5dbc0\nADRP            X22, #off_10F7A0@PAGE                                  ; +0x64, 0x5dbc4\nLDR             X22, [X22,#off_10F7A0@PAGEOFF]; off_114000             ; +0x68, 0x5dbc8\nADRP            X2, #aSrcFmodGeometr@PAGE; \"../../src/fmod_geometryi.cpp\" ; +0x6c, 0x5dbcc\nLSL             W1, W20, #2                                            ; +0x70, 0x5dbd0\nADD             X2, X2, #aSrcFmodGeometr@PAGEOFF; \"../../src/fmod_geometryi.cpp\" ; +0x74, 0x5dbd4\nLDR             X8, [X22]; unk_11F800                                  ; +0x78, 0x5dbd8\nMOV             W3, #0x1C1                                             ; +0x7c, 0x5dbdc\nMOV             W6, #1                                                 ; +0x80, 0x5dbe0\nMOV             W4, WZR                                                ; +0x84, 0x5dbe4\nLDR             X0, [X8,#(qword_11F9B0 - 0x11F800)]                    ; +0x88, 0x5dbe8\nBL              sub_5F290                                              ; +0x8c, 0x5dbec\nSTR             X0, [X19,#0x30]                                        ; +0x90, 0x5dbf0\nCBZ             X0, loc_5DC98                                          ; +0x94, 0x5dbf4\nSTR             WZR, [X19,#0x38]                                       ; +0x98, 0x5dbf8\nLDR             X8, [X22]; unk_11F800                                  ; +0x9c, 0x5dbfc\nMOV             W9, #0xBC                                              ; +0xa0, 0x5dc00\nADRL            X2, aSrcFmodGeometr; \"../../src/fmod_geometryi.cpp\"    ; +0xa4, 0x5dc04\nLDR             X0, [X8,#(qword_11F9B0 - 0x11F800)]                    ; +0xac, 0x5dc0c\nMUL             W8, W21, W9                                            ; +0xb0, 0x5dc10\nMOV             W9, #0xC                                               ; +0xb4, 0x5dc14\nMADD            W1, W20, W9, W8                                        ; +0xb8, 0x5dc18\nMOV             W3, #0x1CA                                             ; +0xbc, 0x5dc1c\nMOV             W6, #1                                                 ; +0xc0, 0x5dc20\nMOV             W4, WZR                                                ; +0xc4, 0x5dc24\nBL              sub_5F290                                              ; +0xc8, 0x5dc28\nSTR             X0, [X19,#0x40]                                        ; +0xcc, 0x5dc2c\nCBZ             X0, loc_5DC98                                          ; +0xd0, 0x5dc30\nLDR             X0, [X19,#0x18]                                        ; +0xd4, 0x5dc34\nBL              sub_5D358                                              ; +0xd8, 0x5dc38\nMOV             W20, W0                                                ; +0xdc, 0x5dc3c\nCBNZ            W0, loc_5DBA4                                          ; +0xe0, 0x5dc40\nLDR             X8, [X22]; unk_11F800                                  ; +0xe4, 0x5dc44\nBL              sub_5F220                                              ; +0xe8, 0x5dc48\nMOV             W1, #0xA8                                              ; +0xec, 0x5dc4c\nLDR             X0, [X8,#0x1B0]                                        ; +0xf0, 0x5dc50\nMOV             W3, #0x1D6                                             ; +0xf4, 0x5dc54\nMOV             W6, #1                                                 ; +0xf8, 0x5dc58\nMOV             W4, WZR                                                ; +0xfc, 0x5dc5c\nBL              sub_5F290                                              ; +0x100, 0x5dc60\nSTR             X0, [X19,#0x108]                                       ; +0x104, 0x5dc64\nCBZ             X0, loc_5DC98                                          ; +0x108, 0x5dc68\nMOV             W2, #0xA8; n                                           ; +0x10c, 0x5dc6c\nMOV             W1, WZR; c                                             ; +0x110, 0x5dc70\nBL              .memset                                                ; +0x114, 0x5dc74\nLDR             X8, [X19,#0x108]                                       ; +0x118, 0x5dc78\nSTR             X19, [X8,#0xA0]                                        ; +0x11c, 0x5dc7c\nLDR             X9, [X19,#0x18]                                        ; +0x120, 0x5dc80\nADD             X1, X8, #0x50 ; 'P'                                    ; +0x124, 0x5dc84\nLDR             X0, [X9,#0x1A0]                                        ; +0x128, 0x5dc88\nBL              sub_61098                                              ; +0x12c, 0x5dc8c\nMOV             W20, WZR                                               ; +0x130, 0x5dc90\nB               loc_5DBA4                                              ; +0x134, 0x5dc94\nMOV             W20, #0x26 ; '&'                                       ; +0x138, 0x5dc98\nB               loc_5DBA4                                              ; +0x13c, 0x5dc9c", "xrefs": ["sub_5E794 @ 0x5e8ec", "sub_6F850 @ 0x6f8c8"], "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"}