{"type": "func", "start": 1070504, "end": 1070968, "name": "sub_1055A8", "pseudocode": "// \n// sub_1055A8 from 0x1055a8 to 0x105778 (464 bytes)\n// \n// 1 xrefs:\n// > <???> @ 0x11c0a0\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_1055A8(_QWORD *a1, __int64 a2, _DWORD *a3, float *s)\n{\n  int v4; // w8\n  int v5; // w13\n  int v6; // w15\n  __int64 v7; // x10\n  int v8; // w17\n  __int64 v9; // x0\n  int32x4_t v10; // q0\n  float32x4_t *v11; // x16\n  int v12; // w14\n  int v13; // w0\n  unsigned int v14; // w0\n  int v15; // w17\n  int v16; // w4\n  int v17; // w15\n  int32x4_t v18; // q1\n  int32x4_t v19; // q0\n  int i; // w0\n  int32x4_t v21; // q2\n  float32x4_t v22; // q3\n  __int64 v23; // x0\n  int v24; // w4\n  int v25; // w15\n  float v26; // s1\n  __int64 j; // x11\n\n  v4 = *(_DWORD *)(*(_QWORD *)(*a1 + 48LL) + 4LL * a1[6]) / 2;\n  if ( a3 )\n  {\n    v5 = 0;\n    v6 = 0;\n    v7 = 1;\n    v8 = *(_DWORD *)(a2 + 56) * *a3;\n    while ( v7 < *(int *)(a2 + 52) )\n    {\n      v9 = *(unsigned __int8 *)(*(_QWORD *)(a2 + 24) + v7);\n      if ( a3[v9] >> 15 )\n      {\n        v12 = v8;\n      }\n      else\n      {\n        v10.n128_u32[3] = 0;\n        v11 = (float32x4_t *)&s[v6];\n        v12 = *(_DWORD *)(a2 + 56) * (a3[v9] & 0x7FFF);\n        v5 = *(unsigned __int16 *)(*(_QWORD *)(a2 + 16) + 2 * v9);\n        if ( v12 - v8 >= 0 )\n          v13 = 1024;\n        else\n          v13 = 1047552;\n        v14 = v13 & 0xFFFFF | ((unsigned __int16)v8 << 20);\n        v15 = ((v12 - v8) << 20) / (v5 - v6);\n        if ( v4 <= v5 )\n          v16 = v4;\n        else\n          v16 = v5;\n        v17 = v16 - v6;\n        v10.n128_u32[0] = 3 * v15;\n        v10.n128_u32[1] = 2 * v15;\n        v10.n128_u32[2] = v15;\n        v18 = vdupq_n_s32(4 * v15);\n        v19 = vaddq_s32(v10, vdupq_n_s32(v14));\n        for ( i = v17 >> 2; i; ++v11 )\n        {\n          v21 = vshrq_n_s32(v19, 0x14u);\n          v22.n128_f32[0] = flt_4F3F4[v21.n128_i32[3]];\n          v22.n128_f32[1] = flt_4F3F4[v21.n128_i32[2]];\n          v22.n128_f32[2] = flt_4F3F4[v21.n128_i32[1]];\n          v19 = vaddq_s32(v19, v18);\n          v22.n128_f32[3] = flt_4F3F4[v21.n128_i32[0]];\n          --i;\n          *v11 = vmulq_f32(v22, *v11);\n        }\n        if ( (v17 & 3) != 0 )\n        {\n          v23 = 0;\n          v24 = v19.n128_i32[3];\n          v25 = v17 & 3;\n          while ( v25 != (_DWORD)v23 )\n          {\n            v26 = flt_4F3F4[v24 >> 20];\n            v24 += v15;\n            v11->n128_f32[v23] = v11->n128_f32[v23] * v26;\n            ++v23;\n          }\n        }\n        v6 = v5;\n      }\n      ++v7;\n      v8 = v12;\n    }\n    for ( j = v5; j < v4; ++j )\n      s[j] = s[j] * flt_4F3F4[v8];\n    return 1;\n  }\n  else\n  {\n    memset(s, 0, 4LL * v4);\n    return 0;\n  }\n}", "assembly": "; \n; sub_1055A8 from 0x1055a8 to 0x105778 (464 bytes)\n; \n; 1 xrefs:\n; > <???> @ 0x11c0a0\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             X29, X30, [SP,#-0x10+var_s0]!                          ; +0x0, 0x1055a8\nLDR             X8, [X0]                                               ; +0x4, 0x1055ac\nLDR             X9, [X0,#0x30]                                         ; +0x8, 0x1055b0\nMOV             X29, SP                                                ; +0xc, 0x1055b4\nLDR             X8, [X8,#0x30]                                         ; +0x10, 0x1055b8\nLDR             W8, [X8,X9,LSL#2]                                      ; +0x14, 0x1055bc\nMOV             W9, #2                                                 ; +0x18, 0x1055c0\nSDIV            W8, W8, W9                                             ; +0x1c, 0x1055c4\nCBZ             X2, loc_10575C                                         ; +0x20, 0x1055c8\nLDR             W9, [X2]                                               ; +0x24, 0x1055cc\nLDR             W14, [X1,#0x38]                                        ; +0x28, 0x1055d0\nMOV             W13, WZR                                               ; +0x2c, 0x1055d4\nMOV             W15, WZR                                               ; +0x30, 0x1055d8\nMOV             W10, #1                                                ; +0x34, 0x1055dc\nMUL             W17, W14, W9                                           ; +0x38, 0x1055e0\nADRP            X9, #off_10FBB8@PAGE                                   ; +0x3c, 0x1055e4\nLDR             X9, [X9,#off_10FBB8@PAGEOFF]; flt_4F3F4                ; +0x40, 0x1055e8\nMOV             W11, #0x400                                            ; +0x44, 0x1055ec\nMOV             W12, #0xFFC00                                          ; +0x48, 0x1055f0\nLDRSW           X14, [X1,#0x34]                                        ; +0x4c, 0x1055f4\nCMP             X10, X14                                               ; +0x50, 0x1055f8\nB.GE            loc_105728                                             ; +0x54, 0x1055fc\nLDR             X14, [X1,#0x18]                                        ; +0x58, 0x105600\nLDRB            W0, [X14,X10]                                          ; +0x5c, 0x105604\nLDR             W14, [X2,X0,LSL#2]                                     ; +0x60, 0x105608\nLSR             W16, W14, #0xF                                         ; +0x64, 0x10560c\nCBNZ            W16, loc_105710                                        ; +0x68, 0x105610\nAND             W13, W14, #0x7FFF                                      ; +0x6c, 0x105614\nLDR             W14, [X1,#0x38]                                        ; +0x70, 0x105618\nLDR             X4, [X1,#0x10]                                         ; +0x74, 0x10561c\nMOVI            V0.2D, #0                                              ; +0x78, 0x105620\nADD             X16, X3, W15,SXTW#2                                    ; +0x7c, 0x105624\nMUL             W14, W14, W13                                          ; +0x80, 0x105628\nLDRH            W13, [X4,X0,LSL#1]                                     ; +0x84, 0x10562c\nSUB             W0, W14, W17                                           ; +0x88, 0x105630\nCMP             W0, #0                                                 ; +0x8c, 0x105634\nLSL             W4, W0, #0x14                                          ; +0x90, 0x105638\nCSEL            W0, W12, W11, LT                                       ; +0x94, 0x10563c\nBFI             W0, W17, #0x14, #0xC                                   ; +0x98, 0x105640\nSUB             W17, W13, W15                                          ; +0x9c, 0x105644\nCMP             W8, W13                                                ; +0xa0, 0x105648\nSDIV            W17, W4, W17                                           ; +0xa4, 0x10564c\nCSEL            W4, W13, W8, GT                                        ; +0xa8, 0x105650\nDUP             V2.4S, W0                                              ; +0xac, 0x105654\nADD             W0, W17, W17,LSL#1                                     ; +0xb0, 0x105658\nSUB             W15, W4, W15                                           ; +0xb4, 0x10565c\nLSL             W4, W17, #1                                            ; +0xb8, 0x105660\nINS             V0.S[0], W0                                            ; +0xbc, 0x105664\nINS             V0.S[1], W4                                            ; +0xc0, 0x105668\nLSL             W0, W17, #2                                            ; +0xc4, 0x10566c\nINS             V0.S[2], W17                                           ; +0xc8, 0x105670\nDUP             V1.4S, W0                                              ; +0xcc, 0x105674\nADD             V0.4S, V0.4S, V2.4S                                    ; +0xd0, 0x105678\nASR             W0, W15, #2                                            ; +0xd4, 0x10567c\nCBZ             W0, loc_1056D4                                         ; +0xd8, 0x105680\nSSHR            V2.4S, V0.4S, #0x14                                    ; +0xdc, 0x105684\nUMOV            W4, V2.S[3]                                            ; +0xe0, 0x105688\nLDR             S3, [X9,W4,SXTW#2]                                     ; +0xe4, 0x10568c\nUMOV            W4, V2.S[2]                                            ; +0xe8, 0x105690\nADD             X4, X9, W4,SXTW#2                                      ; +0xec, 0x105694\nFMOV            W5, S2                                                 ; +0xf0, 0x105698\nLD1             {V3.S}[1], [X4]                                        ; +0xf4, 0x10569c\nUMOV            W4, V2.S[1]                                            ; +0xf8, 0x1056a0\nADD             X4, X9, W4,SXTW#2                                      ; +0xfc, 0x1056a4\nADD             X5, X9, W5,SXTW#2                                      ; +0x100, 0x1056a8\nLD1             {V3.S}[2], [X4]                                        ; +0x104, 0x1056ac\nMOV             X4, X16                                                ; +0x108, 0x1056b0\nLDR             Q2, [X4],#0x10                                         ; +0x10c, 0x1056b4\nADD             V0.4S, V0.4S, V1.4S                                    ; +0x110, 0x1056b8\nLD1             {V3.S}[3], [X5]                                        ; +0x114, 0x1056bc\nSUB             W0, W0, #1                                             ; +0x118, 0x1056c0\nFMUL            V2.4S, V3.4S, V2.4S                                    ; +0x11c, 0x1056c4\nSTR             Q2, [X16]                                              ; +0x120, 0x1056c8\nMOV             X16, X4                                                ; +0x124, 0x1056cc\nCBNZ            W0, loc_105684                                         ; +0x128, 0x1056d0\nTST             W15, #3                                                ; +0x12c, 0x1056d4\nB.EQ            loc_105718                                             ; +0x130, 0x1056d8\nMOV             X0, XZR                                                ; +0x134, 0x1056dc\nUMOV            W4, V0.S[3]                                            ; +0x138, 0x1056e0\nAND             X15, X15, #3                                           ; +0x13c, 0x1056e4\nCMP             W15, W0                                                ; +0x140, 0x1056e8\nB.EQ            loc_105718                                             ; +0x144, 0x1056ec\nASR             W5, W4, #0x14                                          ; +0x148, 0x1056f0\nLDR             S0, [X16,X0,LSL#2]                                     ; +0x14c, 0x1056f4\nLDR             S1, [X9,W5,SXTW#2]                                     ; +0x150, 0x1056f8\nADD             W4, W4, W17                                            ; +0x154, 0x1056fc\nFMUL            S0, S0, S1                                             ; +0x158, 0x105700\nSTR             S0, [X16,X0,LSL#2]                                     ; +0x15c, 0x105704\nADD             X0, X0, #1                                             ; +0x160, 0x105708\nB               loc_1056E8                                             ; +0x164, 0x10570c\nMOV             W14, W17                                               ; +0x168, 0x105710\nB               loc_10571C                                             ; +0x16c, 0x105714\nMOV             W15, W13                                               ; +0x170, 0x105718\nADD             X10, X10, #1                                           ; +0x174, 0x10571c\nMOV             W17, W14                                               ; +0x178, 0x105720\nB               loc_1055F4                                             ; +0x17c, 0x105724\nSXTW            X10, W17                                               ; +0x180, 0x105728\nSXTW            X11, W13                                               ; +0x184, 0x10572c\nSXTW            X8, W8                                                 ; +0x188, 0x105730\nCMP             X11, X8                                                ; +0x18c, 0x105734\nB.GE            loc_105754                                             ; +0x190, 0x105738\nLDR             S0, [X9,X10,LSL#2]                                     ; +0x194, 0x10573c\nLDR             S1, [X3,X11,LSL#2]                                     ; +0x198, 0x105740\nFMUL            S0, S1, S0                                             ; +0x19c, 0x105744\nSTR             S0, [X3,X11,LSL#2]                                     ; +0x1a0, 0x105748\nADD             X11, X11, #1                                           ; +0x1a4, 0x10574c\nB               loc_105734                                             ; +0x1a8, 0x105750\nMOV             W0, #1                                                 ; +0x1ac, 0x105754\nB               loc_105770                                             ; +0x1b0, 0x105758\nSBFIZ           X2, X8, #2, #0x20 ; ' '; n                             ; +0x1b4, 0x10575c\nMOV             X0, X3; s                                              ; +0x1b8, 0x105760\nMOV             W1, WZR; c                                             ; +0x1bc, 0x105764\nBL              .memset                                                ; +0x1c0, 0x105768\nMOV             W0, WZR                                                ; +0x1c4, 0x10576c\nLDP             X29, X30, [SP+var_s0],#0x10                            ; +0x1c8, 0x105770\nRET                                                                    ; +0x1cc, 0x105774", "xrefs": ["<???> @ 0x11c0a0"], "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"}