{"type": "func", "start": 357936, "end": 358180, "name": "sub_57630", "pseudocode": "// \n// sub_57630 from 0x57630 to 0x57724 (244 bytes)\n// \n// 2 xrefs:\n// > <???> @ 0x10c5d0\n// > <???> @ 0x10c7f8\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_57630(__int64 a1, char a2, float a3, float a4)\n{\n  __int64 result; // x0\n  char v9; // zf\n  int v11; // w8\n  int v12; // w9\n  unsigned int v13; // w8\n  _BYTE v14[4]; // [xsp+Ch] [xbp-24h] BYREF\n\n  result = (*(__int64 (__fastcall **)(__int64, _BYTE *))(*(_QWORD *)a1 + 152LL))(a1, v14);\n  if ( !(_DWORD)result )\n  {\n    if ( (v14[0] & 0x10) == 0 )\n      return 40;\n    ((void (*)(void))loc_578B8)();\n    if ( v9 || (~LODWORD(a4) & 0x7F800000) == 0 )\n      return 29;\n    if ( a3 < 0.0 || a3 > 1.0 )\n      return 31;\n    if ( a4 >= 0.0001 )\n    {\n      result = 31;\n      if ( a4 < 10.0 || a4 > 22050.0 )\n        return result;\n    }\n    else\n    {\n      a4 = *(float *)(*(_QWORD *)(a1 + 8) + 69712LL);\n    }\n    v11 = *(_DWORD *)(a1 + 72);\n    result = 0;\n    *(float *)(a1 + 248) = a3;\n    *(float *)(a1 + 252) = a4;\n    v12 = v11 | 0x100000;\n    v13 = v11 & 0xFFEFFFFF;\n    if ( (a2 & 1) != 0 )\n      v13 = v12;\n    *(_DWORD *)(a1 + 72) = v13;\n  }\n  return result;\n}", "assembly": "; \n; sub_57630 from 0x57630 to 0x57724 (244 bytes)\n; \n; 2 xrefs:\n; > <???> @ 0x10c5d0\n; > <???> @ 0x10c7f8\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, 0x57630\nSTP             D9, D8, [SP,#0x30+var_20]                              ; +0x4, 0x57634\nSTP             X20, X19, [SP,#0x30+var_10]                            ; +0x8, 0x57638\nSTP             X29, X30, [SP,#0x30+var_s0]                            ; +0xc, 0x5763c\nLDR             X8, [X0]                                               ; +0x10, 0x57640\nMOV             W20, W1                                                ; +0x14, 0x57644\nADD             X1, SP, #0x30+var_24                                   ; +0x18, 0x57648\nADD             X29, SP, #0x30                                         ; +0x1c, 0x5764c\nLDR             X8, [X8,#0x98]                                         ; +0x20, 0x57650\nMOV             V9.16B, V1.16B                                         ; +0x24, 0x57654\nMOV             V8.16B, V0.16B                                         ; +0x28, 0x57658\nMOV             X19, X0                                                ; +0x2c, 0x5765c\nBLR             X8                                                     ; +0x30, 0x57660\nCBNZ            W0, loc_57694                                          ; +0x34, 0x57664\nLDRB            W8, [SP,#0x30+var_24]                                  ; +0x38, 0x57668\nTBNZ            W8, #4, loc_57678                                      ; +0x3c, 0x5766c\nMOV             W0, #0x28 ; '('                                        ; +0x40, 0x57670\nB               loc_57694                                              ; +0x44, 0x57674\nBL              loc_578B8                                              ; +0x48, 0x57678\nB.EQ            loc_57690                                              ; +0x4c, 0x5767c\nFMOV            W8, S9                                                 ; +0x50, 0x57680\nMVN             W8, W8                                                 ; +0x54, 0x57684\nTST             W8, #0x7F800000                                        ; +0x58, 0x57688\nB.NE            loc_576A4                                              ; +0x5c, 0x5768c\nMOV             W0, #0x1D                                              ; +0x60, 0x57690\nLDP             X29, X30, [SP,#0x30+var_s0]                            ; +0x64, 0x57694\nLDP             X20, X19, [SP,#0x30+var_10]                            ; +0x68, 0x57698\nLDP             D9, D8, [SP,#0x30+var_20]                              ; +0x6c, 0x5769c\nB               loc_57944                                              ; +0x70, 0x576a0\nFCMP            S8, #0.0                                               ; +0x74, 0x576a4\nFMOV            S0, #1.0                                               ; +0x78, 0x576a8\nFCCMP           S8, S0, #0, GE                                         ; +0x7c, 0x576ac\nB.LE            loc_576BC                                              ; +0x80, 0x576b0\nMOV             W0, #0x1F                                              ; +0x84, 0x576b4\nB               loc_57694                                              ; +0x88, 0x576b8\nADRP            X8, #dword_2EEE0@PAGE                                  ; +0x8c, 0x576bc\nLDR             S0, [X8,#dword_2EEE0@PAGEOFF]                          ; +0x90, 0x576c0\nFCMP            S9, S0                                                 ; +0x94, 0x576c4\nB.GE            loc_576E0                                              ; +0x98, 0x576c8\nLDR             X8, [X19,#8]                                           ; +0x9c, 0x576cc\nMOV             W9, #0x11050                                           ; +0xa0, 0x576d0\nLDR             S9, [X8,X9]                                            ; +0xa8, 0x576d8\nB               loc_57700                                              ; +0xac, 0x576dc\nFMOV            S0, #10.0                                              ; +0xb0, 0x576e0\nFCMP            S9, S0                                                 ; +0xb4, 0x576e4\nMOV             W0, #0x1F                                              ; +0xb8, 0x576e8\nB.LT            loc_57694                                              ; +0xbc, 0x576ec\nADRP            X8, #dword_2F040@PAGE                                  ; +0xc0, 0x576f0\nLDR             S0, [X8,#dword_2F040@PAGEOFF]                          ; +0xc4, 0x576f4\nFCMP            S9, S0                                                 ; +0xc8, 0x576f8\nB.GT            loc_57694                                              ; +0xcc, 0x576fc\nLDR             W8, [X19,#0x48]                                        ; +0xd0, 0x57700\nTST             W20, #1                                                ; +0xd4, 0x57704\nMOV             W0, WZR                                                ; +0xd8, 0x57708\nSTP             S8, S9, [X19,#0xF8]                                    ; +0xdc, 0x5770c\nORR             W9, W8, #0x100000                                      ; +0xe0, 0x57710\nAND             W8, W8, #0xFFEFFFFF                                    ; +0xe4, 0x57714\nCSEL            W8, W9, W8, NE                                         ; +0xe8, 0x57718\nSTR             W8, [X19,#0x48]                                        ; +0xec, 0x5771c\nB               loc_57694                                              ; +0xf0, 0x57720", "xrefs": ["<???> @ 0x10c5d0", "<???> @ 0x10c7f8"], "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"}