{"type": "func", "start": 382388, "end": 382724, "name": "sub_5D5B4", "pseudocode": "// \n// sub_5D5B4 from 0x5d5b4 to 0x5d704 (336 bytes)\n// \n// 1 xrefs:\n// > sub_5E11C @ 0x5e330\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_5D5B4(__int64 a1)\n{\n  float32x2_t v1; // d0\n  float v3; // s2\n  float v4; // s4\n  __int64 v5; // x1\n  float v6; // s3\n  float32x2_t v7; // d6\n  float v8; // s2\n  float v9; // s4\n  float v10; // s5\n  float v11; // s1\n  __int64 v12; // d2\n  unsigned __int32 v13; // v0.s[1]\n  __int64 v14; // x0\n  float32x2_t v16; // [xsp+0h] [xbp-30h] BYREF\n  float v17; // [xsp+8h] [xbp-28h]\n  unsigned __int64 v18; // [xsp+10h] [xbp-20h] BYREF\n  float v19; // [xsp+18h] [xbp-18h]\n\n  v1.n64_u32[0] = *(_DWORD *)(a1 + 88);\n  v1.n64_u32[1] = *(_DWORD *)(a1 + 100);\n  v18 = vmul_f32(vadd_f32(v1, *(float32x2_t *)(a1 + 92)), (float32x2_t)0x3F0000003F000000LL).n64_u64[0];\n  v19 = (float)(*(float *)(a1 + 104) + *(float *)(a1 + 108)) * 0.5;\n  sub_5D704(a1 + 164, &v18, &v16);\n  v16.n64_u64[0] = vadd_f32(v16, *(float32x2_t *)(a1 + 140)).n64_u64[0];\n  v17 = v17 + *(float *)(a1 + 148);\n  v3 = (float)(*(float *)(a1 + 92) - *(float *)(a1 + 88)) * 0.5;\n  v4 = (float)(*(float *)(a1 + 100) - *(float *)(a1 + 96)) * 0.5;\n  v5 = *(_QWORD *)(a1 + 264);\n  v6 = (float)(*(float *)(a1 + 108) - *(float *)(a1 + 104)) * 0.5;\n  v7.n64_u64[0] = vmla_n_f32(\n                    vmla_n_f32(\n                      vmul_n_f32(vabs_f32(*(float32x2_t *)(a1 + 164)), v3),\n                      vabs_f32(*(float32x2_t *)(a1 + 180)),\n                      v4),\n                    vabs_f32(*(float32x2_t *)(a1 + 196)),\n                    v6).n64_u64[0];\n  v8 = (float)((float)(fabsf(*(float *)(a1 + 172)) * v3) + (float)(fabsf(*(float *)(a1 + 188)) * v4))\n     + (float)(fabsf(*(float *)(a1 + 204)) * v6);\n  v9 = v16.n64_f32[1];\n  v10 = v8 + v17;\n  v11 = v17 - v8;\n  LODWORD(v12) = vadd_f32(v16, v7).n64_u32[0];\n  v13 = vsub_f32(v16, v7).n64_u32[1];\n  *(float *)v5 = v16.n64_f32[0] - v7.n64_f32[0];\n  HIDWORD(v12) = v13;\n  *(float *)(v5 + 16) = v11;\n  *(float *)(v5 + 20) = v10;\n  *(_QWORD *)(v5 + 4) = v12;\n  *(float *)(v5 + 12) = v7.n64_f32[1] + v9;\n  v14 = *(_QWORD *)(*(_QWORD *)(a1 + 24) + 416LL);\n  if ( *(_BYTE *)(a1 + 112) )\n    return sub_60F60(v14);\n  else\n    return sub_60D14(v14);\n}", "assembly": "; \n; sub_5D5B4 from 0x5d5b4 to 0x5d704 (336 bytes)\n; \n; 1 xrefs:\n; > sub_5E11C @ 0x5e330\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, 0x5d5b4\nSTP             X29, X30, [SP,#0x30+var_s0]                            ; +0x4, 0x5d5b8\nLDR             S0, [X0,#0x58]                                         ; +0x8, 0x5d5bc\nADD             X8, X0, #0x64 ; 'd'                                    ; +0xc, 0x5d5c0\nLDUR            D1, [X0,#0x5C]                                         ; +0x10, 0x5d5c4\nSTR             D8, [SP,#0x30+var_10]                                  ; +0x14, 0x5d5c8\nLD1             {V0.S}[1], [X8]                                        ; +0x18, 0x5d5cc\nSTR             X19, [SP,#0x30+var_8]                                  ; +0x1c, 0x5d5d0\nFMOV            S8, #0.5                                               ; +0x20, 0x5d5d4\nMOV             X19, X0                                                ; +0x24, 0x5d5d8\nFADD            V0.2S, V0.2S, V1.2S                                    ; +0x28, 0x5d5dc\nMOVI            V1.2S, #0x3F,LSL#24 ; '?'                              ; +0x2c, 0x5d5e0\nFMUL            V0.2S, V0.2S, V1.2S                                    ; +0x30, 0x5d5e4\nSTR             D0, [SP,#0x30+var_20]                                  ; +0x34, 0x5d5e8\nLDP             S0, S1, [X0,#0x68]                                     ; +0x38, 0x5d5ec\nADD             X0, X0, #0xA4                                          ; +0x3c, 0x5d5f0\nADD             X1, SP, #0x30+var_20                                   ; +0x40, 0x5d5f4\nMOV             X2, SP                                                 ; +0x44, 0x5d5f8\nFADD            S0, S0, S1                                             ; +0x48, 0x5d5fc\nFMUL            S0, S0, S8                                             ; +0x4c, 0x5d600\nADD             X29, SP, #0x30                                         ; +0x50, 0x5d604\nSTR             S0, [SP,#0x30+var_18]                                  ; +0x54, 0x5d608\nBL              sub_5D704                                              ; +0x58, 0x5d60c\nLDUR            D0, [X19,#0x8C]                                        ; +0x5c, 0x5d610\nLDR             D1, [SP,#0x30+var_30]                                  ; +0x60, 0x5d614\nLDR             S2, [SP,#0x30+var_28]                                  ; +0x64, 0x5d618\nFADD            V0.2S, V1.2S, V0.2S                                    ; +0x68, 0x5d61c\nSTR             D0, [SP,#0x30+var_30]                                  ; +0x6c, 0x5d620\nLDR             S1, [X19,#0x94]                                        ; +0x70, 0x5d624\nFADD            S1, S2, S1                                             ; +0x74, 0x5d628\nSTR             S1, [SP,#0x30+var_28]                                  ; +0x78, 0x5d62c\nLDP             S2, S3, [X19,#0x58]                                    ; +0x7c, 0x5d630\nLDP             S4, S5, [X19,#0x60]                                    ; +0x80, 0x5d634\nLDUR            D6, [X19,#0xA4]                                        ; +0x84, 0x5d638\nLDUR            D7, [X19,#0xB4]                                        ; +0x88, 0x5d63c\nFSUB            S2, S3, S2                                             ; +0x8c, 0x5d640\nLDR             S3, [X19,#0xAC]                                        ; +0x90, 0x5d644\nFSUB            S4, S5, S4                                             ; +0x94, 0x5d648\nLDR             S5, [X19,#0xBC]                                        ; +0x98, 0x5d64c\nFABS            V6.2S, V6.2S                                           ; +0x9c, 0x5d650\nFMUL            S2, S2, S8                                             ; +0xa0, 0x5d654\nFABS            V7.2S, V7.2S                                           ; +0xa4, 0x5d658\nFABS            S3, S3                                                 ; +0xa8, 0x5d65c\nFMUL            S4, S4, S8                                             ; +0xac, 0x5d660\nFMUL            V6.2S, V6.2S, V2.S[0]                                  ; +0xb0, 0x5d664\nFMUL            S2, S3, S2                                             ; +0xb4, 0x5d668\nFMLA            V6.2S, V7.2S, V4.S[0]                                  ; +0xb8, 0x5d66c\nLDP             S3, S7, [X19,#0x68]                                    ; +0xbc, 0x5d670\nFABS            S5, S5                                                 ; +0xc0, 0x5d674\nFMADD           S2, S5, S4, S2                                         ; +0xc4, 0x5d678\nLDUR            D4, [X19,#0xC4]                                        ; +0xc8, 0x5d67c\nLDR             S5, [X19,#0xCC]                                        ; +0xcc, 0x5d680\nFSUB            S3, S7, S3                                             ; +0xd0, 0x5d684\nLDR             X1, [X19,#0x108]                                       ; +0xd4, 0x5d688\nFMUL            S3, S3, S8                                             ; +0xd8, 0x5d68c\nFABS            V4.2S, V4.2S                                           ; +0xdc, 0x5d690\nFABS            S5, S5                                                 ; +0xe0, 0x5d694\nFMLA            V6.2S, V4.2S, V3.S[0]                                  ; +0xe4, 0x5d698\nFMADD           S2, S5, S3, S2                                         ; +0xe8, 0x5d69c\nDUP             S4, V0.S[1]                                            ; +0xec, 0x5d6a0\nFSUB            S3, S0, S6                                             ; +0xf0, 0x5d6a4\nFADD            S5, S2, S1                                             ; +0xf4, 0x5d6a8\nFSUB            S1, S1, S2                                             ; +0xf8, 0x5d6ac\nFADD            V2.2S, V0.2S, V6.2S                                    ; +0xfc, 0x5d6b0\nFSUB            V0.2S, V0.2S, V6.2S                                    ; +0x100, 0x5d6b4\nDUP             S6, V6.S[1]                                            ; +0x104, 0x5d6b8\nSTR             S3, [X1]                                               ; +0x108, 0x5d6bc\nFADD            S3, S6, S4                                             ; +0x10c, 0x5d6c0\nINS             V2.S[1], V0.S[1]                                       ; +0x110, 0x5d6c4\nSTP             S1, S5, [X1,#0x10]                                     ; +0x114, 0x5d6c8\nSTUR            D2, [X1,#4]                                            ; +0x118, 0x5d6cc\nSTR             S3, [X1,#0xC]                                          ; +0x11c, 0x5d6d0\nLDR             X8, [X19,#0x18]                                        ; +0x120, 0x5d6d4\nLDRB            W9, [X19,#0x70]                                        ; +0x124, 0x5d6d8\nLDR             X0, [X8,#0x1A0]                                        ; +0x128, 0x5d6dc\nCBZ             W9, loc_5D6EC                                          ; +0x12c, 0x5d6e0\nBL              sub_60F60                                              ; +0x130, 0x5d6e4\nB               loc_5D6F0                                              ; +0x134, 0x5d6e8\nBL              sub_60D14                                              ; +0x138, 0x5d6ec\nLDP             X29, X30, [SP,#0x30+var_s0]                            ; +0x13c, 0x5d6f0\nLDR             X19, [SP,#0x30+var_8]                                  ; +0x140, 0x5d6f4\nLDR             D8, [SP,#0x30+var_10]                                  ; +0x144, 0x5d6f8\nADD             SP, SP, #0x40 ; '@'                                    ; +0x148, 0x5d6fc\nRET                                                                    ; +0x14c, 0x5d700", "xrefs": ["sub_5E11C @ 0x5e330"], "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"}