{"type": "func", "start": 345868, "end": 346708, "name": "sub_5470C", "pseudocode": "// \n// sub_5470C from 0x5470c to 0x54a54 (840 bytes)\n// \n// 1 xrefs:\n// > <???> @ 0x10c3d8\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_5470C(__int64 a1, unsigned int a2, unsigned int a3, char a4)\n{\n  __int64 v4; // x21\n  unsigned int v6; // w8\n  unsigned int v10; // w24\n  __int64 v11; // x0\n  __int64 v12; // x8\n  int v13; // w25\n  __int64 v14; // x0\n  unsigned int v15; // w24\n  __int64 v16; // x0\n  unsigned int v17; // w21\n  __int64 v18; // x0\n  char v19; // w8\n  char v20; // w8\n  __int64 v21; // x0\n  __int64 v22; // x19\n  __int64 v23; // x9\n  __int64 v24; // x8\n  __int64 v25; // x9\n  __int64 v27; // x0\n  __int64 v28; // x0\n  __int64 v29; // x0\n  __int64 v30; // [xsp+0h] [xbp-50h] BYREF\n  char v31; // [xsp+8h] [xbp-48h]\n\n  if ( (*(_BYTE *)(a1 + 60) & 0x80) != 0 )\n    return 30;\n  v4 = *(_QWORD *)(a1 + 40);\n  if ( !v4 )\n    return 31;\n  v6 = atomic_load((unsigned int *)(v4 + 272));\n  if ( v6 == 7 && (a4 & 1) == 0 )\n    return 46;\n  v11 = sub_54C9C(a1);\n  v12 = *(_QWORD *)(a1 + 24);\n  if ( v12 )\n    v13 = *(_DWORD *)(v12 + 72);\n  else\n    v13 = 0;\n  v14 = sub_54CB8(v11);\n  if ( !*(_QWORD *)(a1 + 24) )\n    return 0;\n  if ( (v13 & 0x40000) != 0 && a3 == 2 && a2 && (v13 & 0x200000) == 0 )\n  {\n    v15 = *(_DWORD *)(v4 + 64) - *(_DWORD *)(*(_QWORD *)(v4 + 384) + 68LL);\n    if ( v15 <= a2 && *(_DWORD *)(v4 + 396) + v15 > a2 )\n    {\n      sub_54C9C(v14);\n      v16 = *(_QWORD *)(a1 + 192);\n      v17 = a2 - v15;\n      if ( v16 )\n        v16 = sub_54D00();\n      sub_54CB8(v16);\n      v10 = 0;\n      *(_DWORD *)(a1 + 144) = 0;\n      *(_DWORD *)(a1 + 148) = v17;\n      *(_DWORD *)(a1 + 72) = 0;\n      *(_DWORD *)(a1 + 76) = a2;\n      return v10;\n    }\n  }\n  else if ( a3 == 16 )\n  {\n    sub_54C9C(v14);\n    v18 = *(_QWORD *)(a1 + 192);\n    if ( v18 )\n      v18 = (*(__int64 (__fastcall **)(__int64, _QWORD, __int64, _QWORD))(*(_QWORD *)v18 + 216LL))(v18, a2, 16, 0);\n    sub_54CB8(v18);\n    return 0;\n  }\n  v19 = atomic_load((unsigned int *)(v4 + 88));\n  if ( v19 < 0 )\n  {\n    if ( !*(_QWORD *)(a1 + 192) || (v10 = sub_54D00()) == 0 )\n    {\n      v10 = 0;\n      *(_DWORD *)(a1 + 72) = 0;\n      *(_DWORD *)(a1 + 76) = a2;\n      *(_DWORD *)(a1 + 144) = 0;\n      *(_DWORD *)(a1 + 148) = a2;\n      *(_DWORD *)(a1 + 160) = 0;\n      *(_QWORD *)(a1 + 152) = 0;\n    }\n  }\n  else\n  {\n    if ( a3 == 2 && *(_DWORD *)(v4 + 192) == *(_DWORD *)(*(_QWORD *)(v4 + 96) + 284LL) )\n    {\n      v20 = atomic_load((unsigned int *)(v4 + 88));\n      if ( (v20 & 0x10) == 0 )\n      {\n        v10 = 0;\n        if ( (v13 & 0x10000) != 0 || (*(_DWORD *)(a1 + 60) & 0x40) == 0 )\n          return v10;\n      }\n    }\n    if ( (*(_BYTE *)(v4 + 46) & 1) != 0 && (a4 & 1) == 0 )\n    {\n      sub_54C9C(v14);\n      v21 = *(_QWORD *)(a1 + 8);\n      *(_DWORD *)(a1 + 60) |= 0x4000u;\n      sub_7B9F0(v21, 8);\n      if ( *(_QWORD *)(a1 + 192) )\n        sub_54CA8();\n      sub_67F54(*(_QWORD *)(v4 + 384), 0, *(unsigned int *)(*(_QWORD *)(v4 + 384) + 68LL));\n      v22 = *(_QWORD *)(*(_QWORD *)(v4 + 264) + 16LL);\n      v30 = *(_QWORD *)(v22 + 360);\n      FMOD_OS_CriticalSection_Enter(v30);\n      v31 = 1;\n      atomic_store(7u, (unsigned int *)(v4 + 272));\n      v23 = *(_QWORD *)(v4 + 184);\n      if ( v23 )\n        atomic_store(7u, (unsigned int *)(v23 + 272));\n      v24 = *(_QWORD *)(v4 + 264);\n      *(_DWORD *)(v24 + 284) = a2;\n      *(_DWORD *)(v24 + 288) = a3;\n      *(_QWORD *)(v24 + 40) = v4;\n      v25 = *(_QWORD *)(v22 + 344);\n      *(_QWORD *)(v24 + 24) = v22 + 336;\n      v24 += 24;\n      *(_QWORD *)(v24 + 8) = v25;\n      *(_QWORD *)(v22 + 344) = v24;\n      **(_QWORD **)(v24 + 8) = v24;\n      sub_52090((__int64)&v30);\n      sub_54C8C(v22);\n      return 0;\n    }\n    LOBYTE(v30) = 0;\n    if ( (a4 & 1) == 0 )\n    {\n      sub_54CE8(v14);\n      v29 = (*(__int64 (__fastcall **)(_QWORD, __int64 *))(**(_QWORD **)(a1 + 192) + 96LL))(*(_QWORD *)(a1 + 192), &v30);\n      if ( (_DWORD)v29 )\n      {\n        v10 = v29;\nLABEL_58:\n        sub_54CF4(v29);\n        return v10;\n      }\n      if ( *(_QWORD *)(a1 + 192) )\n        sub_54CA8();\n    }\n    v27 = sub_66E18(v4, a2, a3);\n    v10 = v27;\n    if ( !(_DWORD)v27 )\n    {\n      sub_54C9C(v27);\n      v28 = *(_QWORD *)(a1 + 192);\n      if ( v28 )\n        v28 = sub_54D00();\n      sub_54CB8(v28);\n      *(_QWORD *)(a1 + 144) = 0;\n      *(_QWORD *)(a1 + 152) = 0;\n      *(_DWORD *)(a1 + 160) = 0;\n      if ( a3 == 2 )\n        *(_DWORD *)(a1 + 76) = a2;\n      else\n        sub_D2CC8(*(_QWORD *)(v4 + 96), a1 + 76, 2);\n      v10 = sub_66D84(v4);\n    }\n    if ( (a4 & 1) == 0 )\n    {\n      v29 = *(_QWORD *)(a1 + 192);\n      if ( v29 )\n        v29 = (*(__int64 (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v29 + 88LL))(v29, (unsigned __int8)v30);\n      goto LABEL_58;\n    }\n  }\n  return v10;\n}", "assembly": "; \n; sub_5470C from 0x5470c to 0x54a54 (840 bytes)\n; \n; 1 xrefs:\n; > <???> @ 0x10c3d8\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, #0x60                                          ; +0x0, 0x5470c\nSTP             X24, X23, [SP,#0x50+var_30]                            ; +0x4, 0x54710\nSTP             X22, X21, [SP,#0x50+var_20]                            ; +0x8, 0x54714\nSTP             X20, X19, [SP,#0x50+var_10]                            ; +0xc, 0x54718\nSTP             X29, X30, [SP,#0x50+var_s0]                            ; +0x10, 0x5471c\nLDRB            W8, [X0,#0x3C]                                         ; +0x14, 0x54720\nSTR             X25, [SP,#0x50+var_40]                                 ; +0x18, 0x54724\nADD             X29, SP, #0x50                                         ; +0x1c, 0x54728\nTBNZ            W8, #7, loc_54764                                      ; +0x20, 0x5472c\nLDR             X21, [X0,#0x28]                                        ; +0x24, 0x54730\nMOV             X19, X0                                                ; +0x28, 0x54734\nCBZ             X21, loc_5476C                                         ; +0x2c, 0x54738\nADD             X8, X21, #0x110                                        ; +0x30, 0x5473c\nLDAR            W8, [X8]                                               ; +0x34, 0x54740\nMOV             W23, W3                                                ; +0x38, 0x54744\nMOV             W22, W2                                                ; +0x3c, 0x54748\nMOV             W20, W1                                                ; +0x40, 0x5474c\nCMP             W8, #7                                                 ; +0x44, 0x54750\nB.NE            loc_54774                                              ; +0x48, 0x54754\nTBNZ            W23, #0, loc_54774                                     ; +0x4c, 0x54758\nMOV             W24, #0x2E ; '.'                                       ; +0x50, 0x5475c\nB               loc_54938                                              ; +0x54, 0x54760\nMOV             W24, #0x1E                                             ; +0x58, 0x54764\nB               loc_54938                                              ; +0x5c, 0x54768\nMOV             W24, #0x1F                                             ; +0x60, 0x5476c\nB               loc_54938                                              ; +0x64, 0x54770\nBL              sub_54C9C                                              ; +0x68, 0x54774\nLDR             X8, [X19,#0x18]                                        ; +0x6c, 0x54778\nCBZ             X8, loc_54788                                          ; +0x70, 0x5477c\nLDR             W25, [X8,#0x48]                                        ; +0x74, 0x54780\nB               loc_5478C                                              ; +0x78, 0x54784\nMOV             W25, WZR                                               ; +0x7c, 0x54788\nBL              sub_54CB8                                              ; +0x80, 0x5478c\nLDR             X8, [X19,#0x18]                                        ; +0x84, 0x54790\nCBZ             X8, loc_54934                                          ; +0x88, 0x54794\nTBZ             W25, #0x12, loc_54804                                  ; +0x8c, 0x54798\nCMP             W22, #2                                                ; +0x90, 0x5479c\nB.NE            loc_54804                                              ; +0x94, 0x547a0\nCBZ             W20, loc_54804                                         ; +0x98, 0x547a4\nTBNZ            W25, #0x15, loc_54804                                  ; +0x9c, 0x547a8\nLDR             X8, [X21,#0x180]                                       ; +0xa0, 0x547ac\nLDR             W9, [X21,#0x40]                                        ; +0xa4, 0x547b0\nLDR             W8, [X8,#0x44]                                         ; +0xa8, 0x547b4\nSUB             W24, W9, W8                                            ; +0xac, 0x547b8\nCMP             W24, W20                                               ; +0xb0, 0x547bc\nB.HI            loc_54838                                              ; +0xb4, 0x547c0\nLDR             W8, [X21,#0x18C]                                       ; +0xb8, 0x547c4\nADD             W8, W8, W24                                            ; +0xbc, 0x547c8\nCMP             W8, W20                                                ; +0xc0, 0x547cc\nB.LS            loc_54838                                              ; +0xc4, 0x547d0\nBL              sub_54C9C                                              ; +0xc8, 0x547d4\nLDR             X0, [X19,#0xC0]                                        ; +0xcc, 0x547d8\nSUB             W21, W20, W24                                          ; +0xd0, 0x547dc\nCBZ             X0, loc_547F0                                          ; +0xd4, 0x547e0\nLDR             X8, [X0]                                               ; +0xd8, 0x547e4\nLSL             X1, X21, #0x20 ; ' '                                   ; +0xdc, 0x547e8\nBL              sub_54D00                                              ; +0xe0, 0x547ec\nBL              sub_54CB8                                              ; +0xe4, 0x547f0\nMOV             W24, WZR                                               ; +0xe8, 0x547f4\nSTP             WZR, W21, [X19,#0x90]                                  ; +0xec, 0x547f8\nSTP             WZR, W20, [X19,#0x48]                                  ; +0xf0, 0x547fc\nB               loc_54938                                              ; +0xf4, 0x54800\nCMP             W22, #0x10                                             ; +0xf8, 0x54804\nB.NE            loc_54838                                              ; +0xfc, 0x54808\nBL              sub_54C9C                                              ; +0x100, 0x5480c\nLDR             X0, [X19,#0xC0]                                        ; +0x104, 0x54810\nCBZ             X0, loc_54830                                          ; +0x108, 0x54814\nLDR             X8, [X0]                                               ; +0x10c, 0x54818\nMOV             W2, #0x10                                              ; +0x110, 0x5481c\nMOV             W1, W20                                                ; +0x114, 0x54820\nMOV             W3, WZR                                                ; +0x118, 0x54824\nLDR             X8, [X8,#0xD8]                                         ; +0x11c, 0x54828\nBLR             X8                                                     ; +0x120, 0x5482c\nBL              sub_54CB8                                              ; +0x124, 0x54830\nB               loc_54934                                              ; +0x128, 0x54834\nADD             X8, X21, #0x58 ; 'X'                                   ; +0x12c, 0x54838\nLDAR            W8, [X8]                                               ; +0x130, 0x5483c\nTBNZ            W8, #7, loc_54958                                      ; +0x134, 0x54840\nCMP             W22, #2                                                ; +0x138, 0x54844\nB.NE            loc_5487C                                              ; +0x13c, 0x54848\nLDR             X8, [X21,#0x60]                                        ; +0x140, 0x5484c\nLDR             W9, [X21,#0xC0]                                        ; +0x144, 0x54850\nLDR             W8, [X8,#0x11C]                                        ; +0x148, 0x54854\nCMP             W9, W8                                                 ; +0x14c, 0x54858\nB.NE            loc_5487C                                              ; +0x150, 0x5485c\nADD             X8, X21, #0x58 ; 'X'                                   ; +0x154, 0x54860\nLDAR            W8, [X8]                                               ; +0x158, 0x54864\nTBNZ            W8, #4, loc_5487C                                      ; +0x15c, 0x54868\nMOV             W24, WZR                                               ; +0x160, 0x5486c\nTBNZ            W25, #0x10, loc_54938                                  ; +0x164, 0x54870\nLDR             W8, [X19,#0x3C]                                        ; +0x168, 0x54874\nTBZ             W8, #6, loc_54938                                      ; +0x16c, 0x54878\nLDRB            W8, [X21,#0x2E]                                        ; +0x170, 0x5487c\nTBZ             W8, #0, loc_5498C                                      ; +0x174, 0x54880\nTBNZ            W23, #0, loc_5498C                                     ; +0x178, 0x54884\nBL              sub_54C9C                                              ; +0x17c, 0x54888\nLDR             W8, [X19,#0x3C]                                        ; +0x180, 0x5488c\nLDR             X0, [X19,#8]                                           ; +0x184, 0x54890\nMOV             W1, #8                                                 ; +0x188, 0x54894\nORR             W8, W8, #0x4000                                        ; +0x18c, 0x54898\nSTR             W8, [X19,#0x3C]                                        ; +0x190, 0x5489c\nBL              sub_7B9F0                                              ; +0x194, 0x548a0\nLDR             X0, [X19,#0xC0]                                        ; +0x198, 0x548a4\nCBZ             X0, loc_548B0                                          ; +0x19c, 0x548a8\nBL              sub_54CA8                                              ; +0x1a0, 0x548ac\nLDR             X0, [X21,#0x180]                                       ; +0x1a4, 0x548b0\nMOV             W1, WZR                                                ; +0x1a8, 0x548b4\nLDR             W2, [X0,#0x44]                                         ; +0x1ac, 0x548b8\nBL              sub_67F54                                              ; +0x1b0, 0x548bc\nLDR             X8, [X21,#0x108]                                       ; +0x1b4, 0x548c0\nLDR             X19, [X8,#0x10]                                        ; +0x1b8, 0x548c4\nLDR             X0, [X19,#0x168]                                       ; +0x1bc, 0x548c8\nSTR             X0, [SP,#0x50+var_50]                                  ; +0x1c0, 0x548cc\nBL              .FMOD_OS_CriticalSection_Enter                         ; +0x1c4, 0x548d0\nMOV             W9, #1                                                 ; +0x1c8, 0x548d4\nADD             X10, X21, #0x110                                       ; +0x1cc, 0x548d8\nMOV             W8, #7                                                 ; +0x1d0, 0x548dc\nSTRB            W9, [SP,#0x50+var_48]                                  ; +0x1d4, 0x548e0\nSTLR            W8, [X10]                                              ; +0x1d8, 0x548e4\nLDR             X9, [X21,#0xB8]                                        ; +0x1dc, 0x548e8\nCBZ             X9, loc_548F8                                          ; +0x1e0, 0x548ec\nADD             X9, X9, #0x110                                         ; +0x1e4, 0x548f0\nSTLR            W8, [X9]                                               ; +0x1e8, 0x548f4\nLDR             X8, [X21,#0x108]                                       ; +0x1ec, 0x548f8\nADD             X10, X19, #0x150                                       ; +0x1f0, 0x548fc\nMOV             X0, SP                                                 ; +0x1f4, 0x54900\nSTR             W20, [X8,#0x11C]                                       ; +0x1f8, 0x54904\nSTR             W22, [X8,#0x120]                                       ; +0x1fc, 0x54908\nSTR             X21, [X8,#0x28]                                        ; +0x200, 0x5490c\nLDR             X9, [X19,#0x158]                                       ; +0x204, 0x54910\nSTR             X10, [X8,#0x18]!                                       ; +0x208, 0x54914\nSTR             X9, [X8,#8]                                            ; +0x20c, 0x54918\nSTR             X8, [X19,#0x158]                                       ; +0x210, 0x5491c\nLDR             X9, [X8,#8]                                            ; +0x214, 0x54920\nSTR             X8, [X9]                                               ; +0x218, 0x54924\nBL              sub_52090                                              ; +0x21c, 0x54928\nMOV             X0, X19                                                ; +0x220, 0x5492c\nBL              sub_54C8C                                              ; +0x224, 0x54930\nMOV             W24, WZR                                               ; +0x228, 0x54934\nMOV             W0, W24                                                ; +0x22c, 0x54938\nLDP             X29, X30, [SP,#0x50+var_s0]                            ; +0x230, 0x5493c\nLDP             X20, X19, [SP,#0x50+var_10]                            ; +0x234, 0x54940\nLDP             X22, X21, [SP,#0x50+var_20]                            ; +0x238, 0x54944\nLDP             X24, X23, [SP,#0x50+var_30]                            ; +0x23c, 0x54948\nLDR             X25, [SP,#0x50+var_40]                                 ; +0x240, 0x5494c\nADD             SP, SP, #0x60 ; '`'                                    ; +0x244, 0x54950\nRET                                                                    ; +0x248, 0x54954\nLDR             X0, [X19,#0xC0]                                        ; +0x24c, 0x54958\nCBZ             X0, loc_54974                                          ; +0x250, 0x5495c\nLDR             X8, [X0]                                               ; +0x254, 0x54960\nLSL             X1, X20, #0x20 ; ' '                                   ; +0x258, 0x54964\nBL              sub_54D00                                              ; +0x25c, 0x54968\nMOV             W24, W0                                                ; +0x260, 0x5496c\nCBNZ            W0, loc_54938                                          ; +0x264, 0x54970\nMOV             W24, WZR                                               ; +0x268, 0x54974\nSTP             WZR, W20, [X19,#0x48]                                  ; +0x26c, 0x54978\nSTP             WZR, W20, [X19,#0x90]                                  ; +0x270, 0x5497c\nSTR             WZR, [X19,#0xA0]                                       ; +0x274, 0x54980\nSTR             XZR, [X19,#0x98]                                       ; +0x278, 0x54984\nB               loc_54938                                              ; +0x27c, 0x54988\nSTRB            WZR, [SP,#0x50+var_50]                                 ; +0x280, 0x5498c\nTBZ             W23, #0, loc_549EC                                     ; +0x284, 0x54990\nMOV             X0, X21                                                ; +0x288, 0x54994\nMOV             W1, W20                                                ; +0x28c, 0x54998\nMOV             W2, W22                                                ; +0x290, 0x5499c\nBL              sub_66E18                                              ; +0x294, 0x549a0\nMOV             W24, W0                                                ; +0x298, 0x549a4\nCBNZ            W0, loc_54A30                                          ; +0x29c, 0x549a8\nBL              sub_54C9C                                              ; +0x2a0, 0x549ac\nLDR             X0, [X19,#0xC0]                                        ; +0x2a4, 0x549b0\nCBZ             X0, loc_549C4                                          ; +0x2a8, 0x549b4\nLDR             X8, [X0]                                               ; +0x2ac, 0x549b8\nMOV             X1, XZR                                                ; +0x2b0, 0x549bc\nBL              sub_54D00                                              ; +0x2b4, 0x549c0\nBL              sub_54CB8                                              ; +0x2b8, 0x549c4\nCMP             W22, #2                                                ; +0x2bc, 0x549c8\nSTP             XZR, XZR, [X19,#0x90]                                  ; +0x2c0, 0x549cc\nSTR             WZR, [X19,#0xA0]                                       ; +0x2c4, 0x549d0\nB.EQ            loc_54A20                                              ; +0x2c8, 0x549d4\nLDR             X0, [X21,#0x60]                                        ; +0x2cc, 0x549d8\nADD             X1, X19, #0x4C ; 'L'                                   ; +0x2d0, 0x549dc\nMOV             W2, #2                                                 ; +0x2d4, 0x549e0\nBL              sub_D2CC8                                              ; +0x2d8, 0x549e4\nB               loc_54A24                                              ; +0x2dc, 0x549e8\nBL              sub_54CE8                                              ; +0x2e0, 0x549ec\nLDR             X0, [X19,#0xC0]                                        ; +0x2e4, 0x549f0\nMOV             X1, SP                                                 ; +0x2e8, 0x549f4\nLDR             X8, [X0]                                               ; +0x2ec, 0x549f8\nLDR             X8, [X8,#0x60]                                         ; +0x2f0, 0x549fc\nBLR             X8                                                     ; +0x2f4, 0x54a00\nCBZ             W0, loc_54A10                                          ; +0x2f8, 0x54a04\nMOV             W24, W0                                                ; +0x2fc, 0x54a08\nB               loc_54A4C                                              ; +0x300, 0x54a0c\nLDR             X0, [X19,#0xC0]                                        ; +0x304, 0x54a10\nCBZ             X0, loc_54994                                          ; +0x308, 0x54a14\nBL              sub_54CA8                                              ; +0x30c, 0x54a18\nB               loc_54994                                              ; +0x310, 0x54a1c\nSTR             W20, [X19,#0x4C]                                       ; +0x314, 0x54a20\nMOV             X0, X21                                                ; +0x318, 0x54a24\nBL              sub_66D84                                              ; +0x31c, 0x54a28\nMOV             W24, W0                                                ; +0x320, 0x54a2c\nTBNZ            W23, #0, loc_54938                                     ; +0x324, 0x54a30\nLDR             X0, [X19,#0xC0]                                        ; +0x328, 0x54a34\nCBZ             X0, loc_54A4C                                          ; +0x32c, 0x54a38\nLDR             X8, [X0]                                               ; +0x330, 0x54a3c\nLDRB            W1, [SP,#0x50+var_50]                                  ; +0x334, 0x54a40\nLDR             X8, [X8,#0x58]                                         ; +0x338, 0x54a44\nBLR             X8                                                     ; +0x33c, 0x54a48\nBL              sub_54CF4                                              ; +0x340, 0x54a4c\nB               loc_54938                                              ; +0x344, 0x54a50", "xrefs": ["<???> @ 0x10c3d8"], "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"}