{"type": "func", "start": 384160, "end": 384500, "name": "sub_5DCA0", "pseudocode": "// \n// sub_5DCA0 from 0x5dca0 to 0x5ddf4 (340 bytes)\n// \n// 2 xrefs:\n// > sub_5E794 @ 0x5eb68\n// > FMOD::Geometry::addPolygon @ 0xd50ec\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 sub_5DCA0()\n{\n  __int64 v0; // x19\n  long double v1; // q0\n  _DWORD *v2; // x4\n  _DWORD *v3; // x23\n  __int64 v4; // x8\n  __int64 *v5; // x3\n  __int64 *v6; // x20\n  int v7; // w2\n  int v8; // w21\n  char v9; // w1\n  char v10; // w22\n  int v11; // s1\n  int v12; // s8\n  int v13; // s9\n  __int64 v14; // x0\n  unsigned int v15; // w24\n  int v16; // w8\n  int v17; // w9\n  int v18; // w10\n  __int64 v19; // x11\n  __int64 v20; // x10\n  int v21; // w11\n  __int64 v22; // x8\n  __int64 v23; // x9\n  int v24; // w12\n  __int64 v25; // x10\n  int v26; // w11\n  __int64 v27; // t1\n\n  v1 = sub_5F2A0();\n  v3 = v2;\n  v6 = v5;\n  v8 = v7;\n  v10 = v9;\n  v12 = v11;\n  v13 = LODWORD(v1);\n  v14 = sub_5F218(*(_QWORD *)(v4 + 400));\n  v15 = 31;\n  if ( v8 >= 3 && v6 )\n  {\n    v16 = *(_DWORD *)(v0 + 44);\n    if ( v16 < *(_DWORD *)(v0 + 40) && (v17 = *(_DWORD *)(v0 + 36) + v8, v17 <= *(_DWORD *)(v0 + 32)) )\n    {\n      if ( v3 )\n      {\n        *v3 = v16;\n        v16 = *(_DWORD *)(v0 + 44);\n        v17 = *(_DWORD *)(v0 + 36) + v8;\n      }\n      v18 = *(_DWORD *)(v0 + 56);\n      v19 = *(_QWORD *)(v0 + 48);\n      *(_DWORD *)(v0 + 36) = v17;\n      *(_DWORD *)(v19 + 4LL * v16) = v18;\n      v20 = *(int *)(v0 + 56);\n      if ( (v10 & 1) != 0 )\n        v21 = v8 | 0x10000;\n      else\n        v21 = v8;\n      v22 = *(_QWORD *)(v0 + 64) + v20;\n      v23 = (unsigned __int16)v21;\n      v24 = v20 + 12 * v8 + 188;\n      ++*(_DWORD *)(v0 + 44);\n      v25 = v22 + 188;\n      *(_DWORD *)(v0 + 56) = v24;\n      *(_OWORD *)(v22 + 32) = 0u;\n      *(_OWORD *)(v22 + 48) = 0u;\n      *(_OWORD *)v22 = 0u;\n      *(_OWORD *)(v22 + 16) = 0u;\n      *(_OWORD *)(v22 + 64) = 0u;\n      *(_OWORD *)(v22 + 80) = 0u;\n      *(_OWORD *)(v22 + 96) = 0u;\n      *(_OWORD *)(v22 + 112) = 0u;\n      *(_OWORD *)(v22 + 128) = 0u;\n      *(_OWORD *)(v22 + 144) = 0u;\n      *(_DWORD *)(v22 + 176) = v13;\n      *(_DWORD *)(v22 + 180) = v12;\n      *(_DWORD *)(v22 + 184) = v21;\n      if ( (_WORD)v21 )\n      {\n        do\n        {\n          v26 = *((_DWORD *)v6 + 2);\n          v27 = *v6;\n          v6 = (__int64 *)((char *)v6 + 12);\n          --v23;\n          *(_DWORD *)(v25 + 8) = v26;\n          *(_QWORD *)v25 = v27;\n          v25 += 12;\n        }\n        while ( v23 );\n      }\n      *(_QWORD *)(v22 + 72) = *(_QWORD *)(v0 + 80);\n      *(_QWORD *)(v0 + 80) = v22;\n      v14 = sub_5D760(v0);\n      v15 = 0;\n    }\n    else\n    {\n      v15 = 31;\n    }\n  }\n  sub_5F234(v14);\n  return v15;\n}", "assembly": "; \n; sub_5DCA0 from 0x5dca0 to 0x5ddf4 (340 bytes)\n; \n; 2 xrefs:\n; > sub_5E794 @ 0x5eb68\n; > FMOD::Geometry::addPolygon @ 0xd50ec\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, 0x5dca0\nSTP             D9, D8, [SP,#0x60+var_50]                              ; +0x4, 0x5dca4\nSTP             X24, X23, [SP,#0x60+var_40]                            ; +0x8, 0x5dca8\nSTP             X22, X21, [SP,#0x60+var_30]                            ; +0xc, 0x5dcac\nSTP             X20, X19, [SP,#0x60+var_20]                            ; +0x10, 0x5dcb0\nSTP             X29, X30, [SP,#0x60+var_10]                            ; +0x14, 0x5dcb4\nBL              sub_5F2A0                                              ; +0x18, 0x5dcb8\nADD             X29, SP, #0x60+var_10                                  ; +0x1c, 0x5dcbc\nMOV             X23, X4                                                ; +0x20, 0x5dcc0\nLDR             X0, [X8,#0x190]                                        ; +0x24, 0x5dcc4\nMOV             X20, X3                                                ; +0x28, 0x5dcc8\nMOV             W21, W2                                                ; +0x2c, 0x5dccc\nMOV             W22, W1                                                ; +0x30, 0x5dcd0\nMOV             V8.16B, V1.16B                                         ; +0x34, 0x5dcd4\nMOV             V9.16B, V0.16B                                         ; +0x38, 0x5dcd8\nBL              sub_5F218                                              ; +0x3c, 0x5dcdc\nMOV             W8, #1                                                 ; +0x40, 0x5dce0\nCMP             W21, #3                                                ; +0x44, 0x5dce4\nMOV             W24, #0x1F                                             ; +0x48, 0x5dce8\nSTRB            W8, [SP,#0x60+var_58]                                  ; +0x4c, 0x5dcec\nB.LT            loc_5DDD0                                              ; +0x50, 0x5dcf0\nCBZ             X20, loc_5DDD0                                         ; +0x54, 0x5dcf4\nLDP             W9, W8, [X19,#0x28]                                    ; +0x58, 0x5dcf8\nCMP             W8, W9                                                 ; +0x5c, 0x5dcfc\nB.GE            loc_5DD14                                              ; +0x60, 0x5dd00\nLDP             W10, W9, [X19,#0x20]                                   ; +0x64, 0x5dd04\nADD             W9, W9, W21                                            ; +0x68, 0x5dd08\nCMP             W9, W10                                                ; +0x6c, 0x5dd0c\nB.LE            loc_5DD1C                                              ; +0x70, 0x5dd10\nMOV             W24, #0x1F                                             ; +0x74, 0x5dd14\nB               loc_5DDD0                                              ; +0x78, 0x5dd18\nCBZ             X23, loc_5DD30                                         ; +0x7c, 0x5dd1c\nSTR             W8, [X23]                                              ; +0x80, 0x5dd20\nLDR             W9, [X19,#0x24]                                        ; +0x84, 0x5dd24\nLDR             W8, [X19,#0x2C]                                        ; +0x88, 0x5dd28\nADD             W9, W9, W21                                            ; +0x8c, 0x5dd2c\nLDR             W10, [X19,#0x38]                                       ; +0x90, 0x5dd30\nLDR             X11, [X19,#0x30]                                       ; +0x94, 0x5dd34\nSTR             W9, [X19,#0x24]                                        ; +0x98, 0x5dd38\nORR             W9, W21, #0x10000                                      ; +0x9c, 0x5dd3c\nTST             W22, #1                                                ; +0xa0, 0x5dd40\nSTR             W10, [X11,W8,SXTW#2]                                   ; +0xa4, 0x5dd44\nLDRSW           X10, [X19,#0x38]                                       ; +0xa8, 0x5dd48\nCSEL            W11, W9, W21, NE                                       ; +0xac, 0x5dd4c\nLDR             X9, [X19,#0x40]                                        ; +0xb0, 0x5dd50\nLDR             W13, [X19,#0x2C]                                       ; +0xb4, 0x5dd54\nMOV             W8, #0xC                                               ; +0xb8, 0x5dd58\nMADD            W12, W21, W8, W10                                      ; +0xbc, 0x5dd5c\nADD             X8, X9, X10                                            ; +0xc0, 0x5dd60\nADD             W10, W13, #1                                           ; +0xc4, 0x5dd64\nMOVI            V0.2D, #0                                              ; +0xc8, 0x5dd68\nAND             W9, W11, #0xFFFF                                       ; +0xcc, 0x5dd6c\nADD             W12, W12, #0xBC                                        ; +0xd0, 0x5dd70\nSTR             W10, [X19,#0x2C]                                       ; +0xd4, 0x5dd74\nADD             X10, X8, #0xBC                                         ; +0xd8, 0x5dd78\nSTR             W12, [X19,#0x38]                                       ; +0xdc, 0x5dd7c\nSTP             Q0, Q0, [X8,#0x20]                                     ; +0xe0, 0x5dd80\nSTP             Q0, Q0, [X8]                                           ; +0xe4, 0x5dd84\nSTP             Q0, Q0, [X8,#0x40]                                     ; +0xe8, 0x5dd88\nSTP             Q0, Q0, [X8,#0x60]                                     ; +0xec, 0x5dd8c\nSTP             Q0, Q0, [X8,#0x80]                                     ; +0xf0, 0x5dd90\nSTP             S9, S8, [X8,#0xB0]                                     ; +0xf4, 0x5dd94\nSTR             W11, [X8,#0xB8]                                        ; +0xf8, 0x5dd98\nCBZ             X9, loc_5DDB8                                          ; +0xfc, 0x5dd9c\nLDR             W11, [X20,#8]                                          ; +0x100, 0x5dda0\nLDR             X12, [X20],#0xC                                        ; +0x104, 0x5dda4\nSUB             X9, X9, #1                                             ; +0x108, 0x5dda8\nSTR             W11, [X10,#8]                                          ; +0x10c, 0x5ddac\nSTR             X12, [X10],#0xC                                        ; +0x110, 0x5ddb0\nCBNZ            X9, loc_5DDA0                                          ; +0x114, 0x5ddb4\nLDR             X9, [X19,#0x50]                                        ; +0x118, 0x5ddb8\nMOV             X0, X19                                                ; +0x11c, 0x5ddbc\nSTR             X9, [X8,#0x48]                                         ; +0x120, 0x5ddc0\nSTR             X8, [X19,#0x50]                                        ; +0x124, 0x5ddc4\nBL              sub_5D760                                              ; +0x128, 0x5ddc8\nMOV             W24, WZR                                               ; +0x12c, 0x5ddcc\nBL              sub_5F234                                              ; +0x130, 0x5ddd0\nMOV             W0, W24                                                ; +0x134, 0x5ddd4\nLDP             X29, X30, [SP,#0x60+var_10]                            ; +0x138, 0x5ddd8\nLDP             X20, X19, [SP,#0x60+var_20]                            ; +0x13c, 0x5dddc\nLDP             X22, X21, [SP,#0x60+var_30]                            ; +0x140, 0x5dde0\nLDP             X24, X23, [SP,#0x60+var_40]                            ; +0x144, 0x5dde4\nLDP             D9, D8, [SP,#0x60+var_50]                              ; +0x148, 0x5dde8\nADD             SP, SP, #0x60 ; '`'                                    ; +0x14c, 0x5ddec\nRET                                                                    ; +0x150, 0x5ddf0", "xrefs": ["sub_5E794 @ 0x5eb68", "FMOD::Geometry::addPolygon @ 0xd50ec"], "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"}