{"type": "func", "start": 362100, "end": 362332, "name": "sub_58674", "pseudocode": "// \n// sub_58674 from 0x58674 to 0x5875c (232 bytes)\n// \n// 1 xrefs:\n// > <???> @ 0x10c418\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_58674(__int64 a1, __int64 a2, float a3)\n{\n  __int64 v3; // x30\n  __int64 v5; // x0\n  char v6; // w1\n  long double v7; // q0\n  char v8; // zf\n  __int64 result; // x0\n  int v10; // w8\n  float v11; // s4\n  float v12; // s5\n  float v13; // s6\n  float v14; // s3\n  float v15; // s1\n  __int64 *v16; // x20\n  float v17; // s9\n  char v18; // w19\n\n  v5 = sub_593A4(a1, a2, v3);\n  if ( v8 )\n    return 29;\n  v10 = *(_DWORD *)(v5 + 72);\n  v11 = *(float *)(v5 + 240);\n  v12 = *(float *)(v5 + 120);\n  v13 = *(float *)(v5 + 164);\n  v14 = *(float *)(v5 + 208);\n  LODWORD(v7) = 0;\n  v15 = 1.0 - *(float *)(v5 + 192);\n  v16 = (__int64 *)v5;\n  v17 = *(float *)(v5 + 48);\n  *(float *)(v5 + 48) = a3;\n  if ( (v10 & 2) == 0 )\n    *(float *)&v7 = a3;\n  v18 = v6;\n  *(float *)&v7 = (float)(v15 - (float)(v14 * v15))\n                * (float)((float)(*(float *)&v7 * (float)((float)(1.0 - v11) + (float)(v12 * v11)))\n                        * (float)((float)(1.0 - v11) + (float)(v13 * v11)));\n  result = sub_B0C10(*(_QWORD *)(v5 + 112), (unsigned __int8)((v10 & 0x80030) == 0) << 6, 1, 0, v7);\n  if ( !(_DWORD)result )\n  {\n    if ( v17 == a3 && (v18 & 1) == 0 )\n      return 0;\n    result = sub_55DCC(v16, 0, 0, v18 & 1);\n    if ( !(_DWORD)result )\n      return 0;\n  }\n  return result;\n}", "assembly": "; \n; sub_58674 from 0x58674 to 0x5875c (232 bytes)\n; \n; 1 xrefs:\n; > <???> @ 0x10c418\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             D9, D8, [SP,#var_30]!                                  ; +0x0, 0x58674\nMOV             V8.16B, V0.16B                                         ; +0x4, 0x58678\nFMOV            W8, S8                                                 ; +0x8, 0x5867c\nMOV             X2, X30                                                ; +0xc, 0x58680\nBL              sub_593A4                                              ; +0x10, 0x58684\nMOV             X30, X2                                                ; +0x14, 0x58688\nSTP             X20, X19, [SP,#0x30+var_20]                            ; +0x18, 0x5868c\nSTP             X29, X30, [SP,#0x30+var_10]                            ; +0x1c, 0x58690\nADD             X29, SP, #0x30+var_10                                  ; +0x20, 0x58694\nB.NE            loc_586A4                                              ; +0x24, 0x58698\nMOV             W0, #0x1D                                              ; +0x28, 0x5869c\nB               loc_5874C                                              ; +0x2c, 0x586a0\nLDR             W8, [X0,#0x48]                                         ; +0x30, 0x586a4\nLDR             S1, [X0,#0xC0]                                         ; +0x34, 0x586a8\nLDR             S4, [X0,#0xF0]                                         ; +0x38, 0x586ac\nLDR             S5, [X0,#0x78]                                         ; +0x3c, 0x586b0\nLDR             S6, [X0,#0xA4]                                         ; +0x40, 0x586b4\nFMOV            S2, #1.0                                               ; +0x44, 0x586b8\nLDR             S3, [X0,#0xD0]                                         ; +0x48, 0x586bc\nFMOV            S0, WZR                                                ; +0x4c, 0x586c0\nMOV             W9, #0x30 ; '0'                                        ; +0x50, 0x586c4\nTST             W8, #2                                                 ; +0x54, 0x586c8\nFSUB            S1, S2, S1                                             ; +0x58, 0x586cc\nFSUB            S2, S2, S4                                             ; +0x5c, 0x586d0\nMOV             X20, X0                                                ; +0x60, 0x586d4\nLDR             S9, [X0,#0x30]                                         ; +0x64, 0x586d8\nSTR             S8, [X0,#0x30]                                         ; +0x68, 0x586dc\nMOVK            W9, #8,LSL#16                                          ; +0x6c, 0x586e0\nFCSEL           S0, S8, S0, EQ                                         ; +0x70, 0x586e4\nLDR             X0, [X0,#0x70]                                         ; +0x74, 0x586e8\nFMADD           S5, S5, S4, S2                                         ; +0x78, 0x586ec\nTST             W8, W9                                                 ; +0x7c, 0x586f0\nFMADD           S2, S6, S4, S2                                         ; +0x80, 0x586f4\nFMUL            S0, S0, S5                                             ; +0x84, 0x586f8\nFMSUB           S1, S3, S1, S1                                         ; +0x88, 0x586fc\nCSET            W8, EQ                                                 ; +0x8c, 0x58700\nFMUL            S0, S0, S2                                             ; +0x90, 0x58704\nMOV             W19, W1                                                ; +0x94, 0x58708\nFMUL            S0, S1, S0                                             ; +0x98, 0x5870c\nLSL             W1, W8, #6                                             ; +0x9c, 0x58710\nMOV             W2, #1                                                 ; +0xa0, 0x58714\nMOV             W3, WZR                                                ; +0xa4, 0x58718\nBL              sub_B0C10                                              ; +0xa8, 0x5871c\nCBNZ            W0, loc_5874C                                          ; +0xac, 0x58720\nFCMP            S9, S8                                                 ; +0xb0, 0x58724\nB.NE            loc_58730                                              ; +0xb4, 0x58728\nTBZ             W19, #0, loc_58748                                     ; +0xb8, 0x5872c\nAND             W3, W19, #1                                            ; +0xbc, 0x58730\nMOV             X0, X20                                                ; +0xc0, 0x58734\nMOV             W1, WZR                                                ; +0xc4, 0x58738\nMOV             W2, WZR                                                ; +0xc8, 0x5873c\nBL              sub_55DCC                                              ; +0xcc, 0x58740\nCBNZ            W0, loc_5874C                                          ; +0xd0, 0x58744\nMOV             W0, WZR                                                ; +0xd4, 0x58748\nLDP             X29, X30, [SP,#0x30+var_10]                            ; +0xd8, 0x5874c\nLDP             X20, X19, [SP,#0x30+var_20]                            ; +0xdc, 0x58750\nLDP             D9, D8, [SP+0x30+var_30],#0x30                         ; +0xe0, 0x58754\nRET                                                                    ; +0xe4, 0x58758", "xrefs": ["<???> @ 0x10c418"], "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"}