{"type": "func", "start": 341392, "end": 341916, "name": "sub_53590", "pseudocode": "// \n// sub_53590 from 0x53590 to 0x5379c (524 bytes)\n// \n// 1 xrefs:\n// > sub_537A4 @ 0x537c8\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_53590(__int64 a1, float a2)\n{\n  long double v2; // q8\n  __int64 v3; // x8\n  float v4; // s9\n  __int64 v5; // x10\n  int v6; // w9\n  __int64 v7; // x20\n  __int64 v9; // x10\n  float v10; // s0\n  float v11; // s11\n  float v12; // s10\n  float v13; // s0\n  float v14; // s1\n  float v15; // s2\n  __int64 v16; // x0\n  __int64 v17; // x9\n  int v18; // w8\n  __int64 v19; // x9\n  __int64 v20; // x3\n  __int64 v21; // x1\n\n  v3 = *(_QWORD *)(a1 + 24);\n  v4 = 1.0;\n  v5 = *(_QWORD *)(a1 + 40);\n  v6 = *(_DWORD *)(v3 + 72);\n  if ( (v6 & 2) != 0 )\n    a2 = 0.0;\n  v7 = *(_QWORD *)(v3 + 112);\n  *(float *)&v2 = a2\n                * (float)((float)(*(float *)(v3 + 536)\n                                * (float)((float)(1.0 - *(float *)(v3 + 240))\n                                        + (float)(*(float *)(v3 + 120) * *(float *)(v3 + 240))))\n                        * (float)((float)(1.0 - *(float *)(v3 + 240))\n                                + (float)(*(float *)(v3 + 164) * *(float *)(v3 + 240))));\n  if ( v5 )\n  {\n    v9 = *(_QWORD *)(v5 + 280);\n    if ( v9 )\n      *(float *)&v2 = *(float *)(v9 + 120) * *(float *)&v2;\n  }\n  v10 = (float)(1.0 - *(float *)(v3 + 192)) - (float)(*(float *)(v3 + 208) * (float)(1.0 - *(float *)(v3 + 192)));\n  if ( *(_QWORD *)(a1 + 752) )\n  {\n    v11 = 0.0;\n    v12 = *(float *)(v3 + 544) * v10;\n    if ( (*(_BYTE *)(*(_QWORD *)(a1 + 8) + 121LL) & 2) == 0 || !*(_QWORD *)(a1 + 760) )\n    {\nLABEL_19:\n      v16 = *(_QWORD *)(a1 + 752);\n      if ( v12 < 1.0 || v11 > 0.0 )\n      {\n        sub_C7DE0(v16, 0);\n        sub_CBD5C(\n          *(_QWORD *)(a1 + 752),\n          0,\n          fminf(\n            *(float *)(*(_QWORD *)(a1 + 24) + 252LL)\n          + (float)((float)((float)(1.0 - v11) * (float)(1.0 - v11))\n                  * (float)(22050.0 - *(float *)(*(_QWORD *)(a1 + 24) + 252LL))),\n            (float)(v12 * v12) * 22050.0));\n      }\n      else\n      {\n        sub_C7DE0(v16, 1);\n      }\n      goto LABEL_23;\n    }\n    if ( (v6 & 0x100000) != 0 )\n    {\n      v4 = *(float *)(v3 + 248);\n    }\n    else\n    {\n      v13 = *(float *)(v3 + 152);\n      v14 = *(float *)(v3 + 160);\n      if ( v13 > v14 )\n      {\nLABEL_16:\n        ((void (*)(void))sub_C7DE0)();\n        sub_CBD5C(\n          *(_QWORD *)(a1 + 760),\n          0,\n          (float)((float)(v4 * v4) * (float)(*(float *)(*(_QWORD *)(a1 + 24) + 252LL) + -10.0)) + 10.0);\nLABEL_18:\n        v11 = v4;\n        goto LABEL_19;\n      }\n      v15 = *(float *)(v3 + 156);\n      v4 = 0.0;\n      if ( v13 <= v15 )\n      {\nLABEL_17:\n        ((void (*)(void))sub_C7DE0)();\n        goto LABEL_18;\n      }\n      v4 = (float)(v13 - v15) / (float)(v14 - v15);\n    }\n    if ( v4 > 0.0 )\n      goto LABEL_16;\n    goto LABEL_17;\n  }\n  *(float *)&v2 = v10 * *(float *)&v2;\nLABEL_23:\n  v17 = *(_QWORD *)(a1 + 24);\n  v18 = *(_DWORD *)(v17 + 72);\n  if ( (v18 & 0x200000) != 0 )\n  {\n    v20 = 1;\n    v21 = 64;\n  }\n  else\n  {\n    v19 = *(_QWORD *)(v17 + 32);\n    if ( v19 && (*(_BYTE *)(v19 + 72) & 0x10) != 0 )\n    {\n      v21 = 0;\n      v20 = 0;\n    }\n    else\n    {\n      v20 = 0;\n      v21 = (unsigned __int8)((v18 & 0xC0020) == 0) << 6;\n    }\n  }\n  return sub_B0C10(v7, v21, (*(_DWORD *)(a1 + 60) & 0x10000) == 0, v20, v2);\n}", "assembly": "; \n; sub_53590 from 0x53590 to 0x5379c (524 bytes)\n; \n; 1 xrefs:\n; > sub_537A4 @ 0x537c8\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             D11, D10, [SP,#-0x10+var_30]!                          ; +0x0, 0x53590\nSTP             D9, D8, [SP,#0x30+var_20]                              ; +0x4, 0x53594\nSTP             X20, X19, [SP,#0x30+var_10]                            ; +0x8, 0x53598\nSTP             X29, X30, [SP,#0x30+var_s0]                            ; +0xc, 0x5359c\nLDR             X8, [X0,#0x18]                                         ; +0x10, 0x535a0\nFMOV            S1, WZR                                                ; +0x14, 0x535a4\nFMOV            S9, #1.0                                               ; +0x18, 0x535a8\nLDR             X10, [X0,#0x28]                                        ; +0x1c, 0x535ac\nLDR             W9, [X8,#0x48]                                         ; +0x20, 0x535b0\nLDR             S3, [X8,#0xF0]                                         ; +0x24, 0x535b4\nLDR             S4, [X8,#0x78]                                         ; +0x28, 0x535b8\nLDR             S2, [X8,#0x218]                                        ; +0x2c, 0x535bc\nLDR             S5, [X8,#0xA4]                                         ; +0x30, 0x535c0\nTST             W9, #2                                                 ; +0x34, 0x535c4\nFCSEL           S0, S0, S1, EQ                                         ; +0x38, 0x535c8\nFSUB            S1, S9, S3                                             ; +0x3c, 0x535cc\nFMADD           S4, S4, S3, S1                                         ; +0x40, 0x535d0\nLDR             X20, [X8,#0x70]                                        ; +0x44, 0x535d4\nFMUL            S2, S2, S4                                             ; +0x48, 0x535d8\nFMADD           S1, S5, S3, S1                                         ; +0x4c, 0x535dc\nFMUL            S1, S2, S1                                             ; +0x50, 0x535e0\nMOV             X19, X0                                                ; +0x54, 0x535e4\nFMUL            S8, S0, S1                                             ; +0x58, 0x535e8\nADD             X29, SP, #0x30                                         ; +0x5c, 0x535ec\nCBZ             X10, loc_53604                                         ; +0x60, 0x535f0\nLDR             X10, [X10,#0x118]                                      ; +0x64, 0x535f4\nCBZ             X10, loc_53604                                         ; +0x68, 0x535f8\nLDR             S0, [X10,#0x78]                                        ; +0x6c, 0x535fc\nFMUL            S8, S0, S8                                             ; +0x70, 0x53600\nLDR             S0, [X8,#0xC0]                                         ; +0x74, 0x53604\nLDR             S1, [X8,#0xD0]                                         ; +0x78, 0x53608\nLDR             X10, [X19,#0x2F0]                                      ; +0x7c, 0x5360c\nFSUB            S0, S9, S0                                             ; +0x80, 0x53610\nFMSUB           S0, S1, S0, S0                                         ; +0x84, 0x53614\nCBZ             X10, loc_53670                                         ; +0x88, 0x53618\nLDR             X10, [X19,#8]                                          ; +0x8c, 0x5361c\nLDR             S1, [X8,#0x220]                                        ; +0x90, 0x53620\nFMOV            S11, WZR                                               ; +0x94, 0x53624\nLDRB            W10, [X10,#0x79]                                       ; +0x98, 0x53628\nFMUL            S10, S1, S0                                            ; +0x9c, 0x5362c\nTBZ             W10, #1, loc_536C4                                     ; +0xa0, 0x53630\nLDR             X0, [X19,#0x2F8]                                       ; +0xa4, 0x53634\nCBZ             X0, loc_536C4                                          ; +0xa8, 0x53638\nTBNZ            W9, #0x14, loc_53678                                   ; +0xac, 0x5363c\nLDR             S0, [X8,#0x98]                                         ; +0xb0, 0x53640\nLDR             S1, [X8,#0xA0]                                         ; +0xb4, 0x53644\nFCMP            S0, S1                                                 ; +0xb8, 0x53648\nB.GT            loc_53684                                              ; +0xbc, 0x5364c\nLDR             S2, [X8,#0x9C]                                         ; +0xc0, 0x53650\nFMOV            S9, WZR                                                ; +0xc4, 0x53654\nFCMP            S0, S2                                                 ; +0xc8, 0x53658\nB.LE            loc_536B8                                              ; +0xcc, 0x5365c\nFSUB            S0, S0, S2                                             ; +0xd0, 0x53660\nFSUB            S1, S1, S2                                             ; +0xd4, 0x53664\nFDIV            S9, S0, S1                                             ; +0xd8, 0x53668\nB               loc_5367C                                              ; +0xdc, 0x5366c\nFMUL            S8, S0, S8                                             ; +0xe0, 0x53670\nB               loc_53728                                              ; +0xe4, 0x53674\nLDR             S9, [X8,#0xF8]                                         ; +0xe8, 0x53678\nFCMP            S9, #0.0                                               ; +0xec, 0x5367c\nB.LE            loc_536B8                                              ; +0xf0, 0x53680\nMOV             W1, WZR                                                ; +0xf4, 0x53684\nBL              sub_C7DE0                                              ; +0xf8, 0x53688\nLDR             X8, [X19,#0x18]                                        ; +0xfc, 0x5368c\nLDR             X0, [X19,#0x2F8]                                       ; +0x100, 0x53690\nFMOV            S2, #-10.0                                             ; +0x104, 0x53694\nFMUL            S1, S9, S9                                             ; +0x108, 0x53698\nLDR             S0, [X8,#0xFC]                                         ; +0x10c, 0x5369c\nMOV             W1, WZR                                                ; +0x110, 0x536a0\nFADD            S0, S0, S2                                             ; +0x114, 0x536a4\nFMOV            S2, #10.0                                              ; +0x118, 0x536a8\nFMADD           S0, S1, S0, S2                                         ; +0x11c, 0x536ac\nBL              sub_CBD5C                                              ; +0x120, 0x536b0\nB               loc_536C0                                              ; +0x124, 0x536b4\nMOV             W1, #1                                                 ; +0x128, 0x536b8\nBL              sub_C7DE0                                              ; +0x12c, 0x536bc\nMOV             V11.16B, V9.16B                                        ; +0x130, 0x536c0\nLDR             X0, [X19,#0x2F0]                                       ; +0x134, 0x536c4\nFMOV            S9, #1.0                                               ; +0x138, 0x536c8\nFCMP            S10, S9                                                ; +0x13c, 0x536cc\nB.LT            loc_536E8                                              ; +0x140, 0x536d0\nFCMP            S11, #0.0                                              ; +0x144, 0x536d4\nB.GT            loc_536E8                                              ; +0x148, 0x536d8\nMOV             W1, #1                                                 ; +0x14c, 0x536dc\nBL              sub_C7DE0                                              ; +0x150, 0x536e0\nB               loc_53728                                              ; +0x154, 0x536e4\nMOV             W1, WZR                                                ; +0x158, 0x536e8\nBL              sub_C7DE0                                              ; +0x15c, 0x536ec\nLDR             X9, [X19,#0x18]                                        ; +0x160, 0x536f0\nADRP            X8, #dword_2F040@PAGE                                  ; +0x164, 0x536f4\nLDR             S0, [X8,#dword_2F040@PAGEOFF]                          ; +0x168, 0x536f8\nFMUL            S1, S10, S10                                           ; +0x16c, 0x536fc\nLDR             S2, [X9,#0xFC]                                         ; +0x170, 0x53700\nFSUB            S3, S9, S11                                            ; +0x174, 0x53704\nLDR             X0, [X19,#0x2F0]                                       ; +0x178, 0x53708\nFMUL            S1, S1, S0                                             ; +0x17c, 0x5370c\nFMUL            S3, S3, S3                                             ; +0x180, 0x53710\nFSUB            S0, S0, S2                                             ; +0x184, 0x53714\nFMADD           S0, S3, S0, S2                                         ; +0x188, 0x53718\nFMINNM          S0, S0, S1                                             ; +0x18c, 0x5371c\nMOV             W1, WZR                                                ; +0x190, 0x53720\nBL              sub_CBD5C                                              ; +0x194, 0x53724\nLDR             X9, [X19,#0x18]                                        ; +0x198, 0x53728\nLDR             W8, [X9,#0x48]                                         ; +0x19c, 0x5372c\nTBNZ            W8, #0x15, loc_53760                                   ; +0x1a0, 0x53730\nLDR             X9, [X9,#0x20]                                         ; +0x1a4, 0x53734\nCBZ             X9, loc_53744                                          ; +0x1a8, 0x53738\nLDRB            W9, [X9,#0x48]                                         ; +0x1ac, 0x5373c\nTBNZ            W9, #4, loc_5376C                                      ; +0x1b0, 0x53740\nMOV             W9, #0xC0020                                           ; +0x1b4, 0x53744\nTST             W8, W9                                                 ; +0x1bc, 0x5374c\nCSET            W8, EQ                                                 ; +0x1c0, 0x53750\nMOV             W3, WZR                                                ; +0x1c4, 0x53754\nLSL             W1, W8, #6                                             ; +0x1c8, 0x53758\nB               loc_53774                                              ; +0x1cc, 0x5375c\nMOV             W3, #1                                                 ; +0x1d0, 0x53760\nMOV             W1, #0x40 ; '@'                                        ; +0x1d4, 0x53764\nB               loc_53774                                              ; +0x1d8, 0x53768\nMOV             W1, WZR                                                ; +0x1dc, 0x5376c\nMOV             W3, WZR                                                ; +0x1e0, 0x53770\nLDR             W8, [X19,#0x3C]                                        ; +0x1e4, 0x53774\nMOV             X0, X20                                                ; +0x1e8, 0x53778\nMOV             V0.16B, V8.16B                                         ; +0x1ec, 0x5377c\nLDP             X29, X30, [SP,#0x30+var_s0]                            ; +0x1f0, 0x53780\nLDP             X20, X19, [SP,#0x30+var_10]                            ; +0x1f4, 0x53784\nLDP             D9, D8, [SP,#0x30+var_20]                              ; +0x1f8, 0x53788\nTST             W8, #0x10000                                           ; +0x1fc, 0x5378c\nCSET            W2, EQ                                                 ; +0x200, 0x53790\nLDP             D11, D10, [SP+0x30+var_30],#0x40                       ; +0x204, 0x53794\nB               sub_B0C10                                              ; +0x208, 0x53798", "xrefs": ["sub_537A4 @ 0x537c8"], "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"}