{"type": "func", "start": 372548, "end": 372932, "name": "sub_5AF44", "pseudocode": "// \n// sub_5AF44 from 0x5af44 to 0x5b0c4 (384 bytes)\n// \n// 1 xrefs:\n// > sub_5A364 @ 0x5a3d8\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_5AF44()\n{\n  __int64 v0; // x0\n  __int64 v1; // x1\n  char v2; // w2\n  __int64 v3; // x8\n  char v4; // w21\n  __int64 v5; // x20\n  __int64 v6; // x19\n  __int64 v7; // x10\n  int v8; // w12\n  unsigned int v9; // w9\n  int v10; // w12\n  __int64 v16; // x9\n  __int64 result; // x0\n  __int64 v18; // [xsp+8h] [xbp-28h] BYREF\n\n  v0 = sub_5C6DC();\n  if ( !v3 )\n    return 30;\n  v4 = v2;\n  v5 = v0;\n  v6 = v1;\n  *(_QWORD *)(v1 + 512) = v0;\n  *(_QWORD *)(v3 + 40) = 0;\n  *(_QWORD *)(v3 + 48) = v1;\n  *(_DWORD *)(v3 + 92) = -1;\n  *(_QWORD *)(v3 + 84) = 0xFFFFFFFFLL;\n  *(_DWORD *)(v3 + 56) = 8;\n  *(_QWORD *)(v3 + 24) = v0;\n  if ( (v2 & 1) != 0 )\n  {\n    v7 = *(_QWORD *)(v0 + 8);\n    v8 = *(_DWORD *)(v0 + 72);\n    *(_DWORD *)(v0 + 24) = 1;\n    *(_QWORD *)(v0 + 496) = 0;\n    *(_QWORD *)(v0 + 16) = 0;\n    *(_QWORD *)(v0 + 40) = 0;\n    v9 = v8 & 0xFEEDFFD8;\n    v10 = *(_DWORD *)(v7 + 70460);\n    *(_OWORD *)(v0 + 152) = xmmword_2F340;\n    __asm { FMOV            V0.2S, #1.0 }\n    *(_DWORD *)(v0 + 72) = v9;\n    *(_QWORD *)(v0 + 184) = 0x3F80000000000000LL;\n    *(_DWORD *)(v0 + 552) = 0;\n    *(_DWORD *)(v0 + 544) = 1065353216;\n    *(_DWORD *)(v0 + 52) = 1065353216;\n    *(_QWORD *)(v0 + 120) = _D0;\n    *(_DWORD *)(v0 + 192) = 0;\n    *(_OWORD *)(v0 + 168) = xmmword_2F610;\n    *(_QWORD *)(v0 + 224) = 0;\n    *(_DWORD *)(v0 + 232) = 0;\n    *(_QWORD *)(v0 + 240) = _D0;\n    *(_DWORD *)(v0 + 256) = 0;\n    *(_DWORD *)(v0 + 248) = 0;\n    *(_DWORD *)(v0 + 548) = v10;\n    *(_DWORD *)(v0 + 252) = *(_DWORD *)(v7 + 69712);\n    *(_QWORD *)(v0 + 88) = 1065353216;\n    if ( v7 )\n    {\n      v16 = 0;\n      while ( v16 != 4 )\n        sub_5C6F0();\n    }\n    *(_QWORD *)(v5 + 296) = 0;\n    *(_QWORD *)(v5 + 304) = 0;\n    *(_BYTE *)(v5 + 312) = 0;\n  }\n  result = sub_5C500(*(_QWORD *)(v5 + 96));\n  if ( !(_DWORD)result )\n  {\n    if ( (v4 & 1) == 0 )\n      return (*(__int64 (__fastcall **)(_QWORD, __int64))(**(_QWORD **)(v5 + 472) + 48LL))(*(_QWORD *)(v5 + 472), v6);\n    result = sub_5C638();\n    if ( !(_DWORD)result )\n    {\n      result = sub_AFE50(*(_QWORD *)(v5 + 112));\n      if ( !(_DWORD)result )\n      {\n        result = sub_5C50C(*(_QWORD *)(v5 + 32), 4294967293LL, &v18);\n        if ( !(_DWORD)result )\n        {\n          result = sub_5C538(v18, *(_QWORD *)(v5 + 96));\n          if ( !(_DWORD)result )\n            return (*(__int64 (__fastcall **)(_QWORD, __int64))(**(_QWORD **)(v5 + 472) + 48LL))(\n                     *(_QWORD *)(v5 + 472),\n                     v6);\n        }\n      }\n    }\n  }\n  return result;\n}", "assembly": "; \n; sub_5AF44 from 0x5af44 to 0x5b0c4 (384 bytes)\n; \n; 1 xrefs:\n; > sub_5A364 @ 0x5a3d8\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\nSTR             X21, [SP,#var_30]!                                     ; +0x0, 0x5af44\nSTP             X20, X19, [SP,#0x30+var_20]                            ; +0x4, 0x5af48\nSTP             X29, X30, [SP,#0x30+var_10]                            ; +0x8, 0x5af4c\nBL              sub_5C6DC                                              ; +0xc, 0x5af50\nCBZ             X8, loc_5B04C                                          ; +0x10, 0x5af54\nMOV             W21, W2                                                ; +0x14, 0x5af58\nMOV             X20, X0                                                ; +0x18, 0x5af5c\nMOV             X19, X1                                                ; +0x1c, 0x5af60\nMOV             W9, #0xFFFFFFFF                                        ; +0x20, 0x5af64\nMOVI            D0, #0xFFFFFFFF                                        ; +0x24, 0x5af68\nMOV             W10, #8                                                ; +0x28, 0x5af6c\nSTR             X0, [X1,#0x200]                                        ; +0x2c, 0x5af70\nSTP             XZR, X1, [X8,#0x28]                                    ; +0x30, 0x5af74\nSTR             W9, [X8,#0x5C]                                         ; +0x34, 0x5af78\nSTUR            D0, [X8,#0x54]                                         ; +0x38, 0x5af7c\nSTR             W10, [X8,#0x38]                                        ; +0x3c, 0x5af80\nSTR             X0, [X8,#0x18]                                         ; +0x40, 0x5af84\nTBZ             W2, #0, loc_5B05C                                      ; +0x44, 0x5af88\nMOV             W9, #1                                                 ; +0x48, 0x5af8c\nLDR             X10, [X20,#8]                                          ; +0x4c, 0x5af90\nLDR             W12, [X20,#0x48]                                       ; +0x50, 0x5af94\nSTR             W9, [X20,#0x18]                                        ; +0x54, 0x5af98\nADRP            X9, #xmmword_2F340@PAGE                                ; +0x58, 0x5af9c\nMOV             W11, #0x1050                                           ; +0x5c, 0x5afa0\nLDR             Q0, [X9,#xmmword_2F340@PAGEOFF]                        ; +0x60, 0x5afa4\nADRP            X9, #xmmword_2F610@PAGE                                ; +0x64, 0x5afa8\nMOVK            W11, #1,LSL#16                                         ; +0x68, 0x5afac\nLDR             Q1, [X9,#xmmword_2F610@PAGEOFF]                        ; +0x6c, 0x5afb0\nMOV             W9, #0xFFD8                                            ; +0x70, 0x5afb4\nSTR             XZR, [X20,#0x1F0]                                      ; +0x74, 0x5afb8\nSTR             XZR, [X20,#0x10]                                       ; +0x78, 0x5afbc\nSTR             XZR, [X20,#0x28]                                       ; +0x7c, 0x5afc0\nMOVK            W9, #0xFEED,LSL#16                                     ; +0x80, 0x5afc4\nADD             X11, X10, X11                                          ; +0x84, 0x5afc8\nAND             W9, W12, W9                                            ; +0x88, 0x5afcc\nLDR             W12, [X11,#0x2EC]                                      ; +0x8c, 0x5afd0\nMOV             W8, #0x3F800000                                        ; +0x90, 0x5afd4\nSTUR            Q0, [X20,#0x98]                                        ; +0x94, 0x5afd8\nFMOV            V0.2S, #1.0                                            ; +0x98, 0x5afdc\nSTR             W9, [X20,#0x48]                                        ; +0x9c, 0x5afe0\nMOV             X9, #0x3F80000000000000                                ; +0xa0, 0x5afe4\nSTR             X9, [X20,#0xB8]                                        ; +0xa4, 0x5afe8\nADRP            X9, #qword_2EB58@PAGE                                  ; +0xa8, 0x5afec\nSTR             WZR, [X20,#0x228]                                      ; +0xac, 0x5aff0\nSTR             W8, [X20,#0x220]                                       ; +0xb0, 0x5aff4\nSTR             W8, [X20,#0x34]                                        ; +0xb4, 0x5aff8\nSTR             D0, [X20,#0x78]                                        ; +0xb8, 0x5affc\nSTR             WZR, [X20,#0xC0]                                       ; +0xbc, 0x5b000\nSTUR            Q1, [X20,#0xA8]                                        ; +0xc0, 0x5b004\nSTR             XZR, [X20,#0xE0]                                       ; +0xc4, 0x5b008\nSTR             WZR, [X20,#0xE8]                                       ; +0xc8, 0x5b00c\nSTR             D0, [X20,#0xF0]                                        ; +0xcc, 0x5b010\nSTR             WZR, [X20,#0x100]                                      ; +0xd0, 0x5b014\nSTR             WZR, [X20,#0xF8]                                       ; +0xd4, 0x5b018\nSTR             W12, [X20,#0x224]                                      ; +0xd8, 0x5b01c\nLDR             W11, [X11]                                             ; +0xdc, 0x5b020\nLDR             D0, [X9,#qword_2EB58@PAGEOFF]                          ; +0xe0, 0x5b024\nSTR             W11, [X20,#0xFC]                                       ; +0xe4, 0x5b028\nSTR             D0, [X20,#0x58]                                        ; +0xe8, 0x5b02c\nCBZ             X10, loc_5B054                                         ; +0xec, 0x5b030\nMOV             X9, XZR                                                ; +0xf0, 0x5b034\nADD             X10, X20, #0x13C                                       ; +0xf4, 0x5b038\nCMP             X9, #4                                                 ; +0xf8, 0x5b03c\nB.EQ            loc_5B054                                              ; +0xfc, 0x5b040\nBL              sub_5C6F0                                              ; +0x100, 0x5b044\nB               loc_5B03C                                              ; +0x104, 0x5b048\nMOV             W0, #0x1E                                              ; +0x108, 0x5b04c\nB               loc_5B0BC                                              ; +0x10c, 0x5b050\nSTP             XZR, XZR, [X20,#0x128]                                 ; +0x110, 0x5b054\nSTRB            WZR, [X20,#0x138]                                      ; +0x114, 0x5b058\nLDR             X0, [X20,#0x60]                                        ; +0x118, 0x5b05c\nBL              sub_5C500                                              ; +0x11c, 0x5b060\nCBNZ            W0, loc_5B0BC                                          ; +0x120, 0x5b064\nTBZ             W21, #0, loc_5B0A8                                     ; +0x124, 0x5b068\nBL              sub_5C638                                              ; +0x128, 0x5b06c\nCBNZ            W0, loc_5B0BC                                          ; +0x12c, 0x5b070\nLDR             X0, [X20,#0x70]                                        ; +0x130, 0x5b074\nBL              sub_AFE50                                              ; +0x134, 0x5b078\nCBNZ            W0, loc_5B0BC                                          ; +0x138, 0x5b07c\nLDR             X0, [X20,#0x20]                                        ; +0x13c, 0x5b080\nADD             X2, SP, #0x30+var_28                                   ; +0x140, 0x5b084\nMOV             W1, #0xFFFFFFFD                                        ; +0x144, 0x5b088\nLDR             X8, [X0]                                               ; +0x148, 0x5b08c\nBL              sub_5C50C                                              ; +0x14c, 0x5b090\nCBNZ            W0, loc_5B0BC                                          ; +0x150, 0x5b094\nLDR             X0, [SP,#0x30+var_28]                                  ; +0x154, 0x5b098\nLDR             X1, [X20,#0x60]                                        ; +0x158, 0x5b09c\nBL              sub_5C538                                              ; +0x15c, 0x5b0a0\nCBNZ            W0, loc_5B0BC                                          ; +0x160, 0x5b0a4\nLDR             X0, [X20,#0x1D8]                                       ; +0x164, 0x5b0a8\nMOV             X1, X19                                                ; +0x168, 0x5b0ac\nLDR             X8, [X0]                                               ; +0x16c, 0x5b0b0\nLDR             X8, [X8,#0x30]                                         ; +0x170, 0x5b0b4\nBLR             X8                                                     ; +0x174, 0x5b0b8\nLDP             X29, X30, [SP,#0x30+var_10]                            ; +0x178, 0x5b0bc\nB               loc_5C56C                                              ; +0x17c, 0x5b0c0", "xrefs": ["sub_5A364 @ 0x5a3d8"], "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"}