{"type": "func", "start": 1065912, "end": 1066140, "name": "sub_1043B8", "pseudocode": "// \n// sub_1043B8 from 0x1043b8 to 0x10449c (228 bytes)\n// \n// 2 xrefs:\n// > sub_10449C @ 0x1046c0\n// > sub_1047B8 @ 0x1047c8\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__n128 __fastcall sub_1043B8(__int64 a1, __int64 a2, __n128 *a3, _OWORD *a4)\n{\n  __int64 v7; // x3\n  __int16 v9; // w2\n  int v10; // w10\n  __int64 v11; // x8\n  int v12; // w2\n  __n128 result; // q0\n  __int128 v14; // q1\n\n  v7 = **(_QWORD **)a2 >> *(_DWORD *)(a2 + 16);\n  v9 = *(_WORD *)(*(_QWORD *)(a1 + 48) + 2LL * ((unsigned int)v7 & *(_DWORD *)(a1 + 112)));\n  if ( v9 < 0 )\n    sub_FBCF8(a1, a2, v9, v7);\n  sub_1047DC();\n  *(_DWORD *)(a2 + 16) = v10;\n  *(_QWORD *)a2 = v11;\n  LOBYTE(v10) = *(_BYTE *)(a1 + 102);\n  LODWORD(v11) = *(unsigned __int16 *)(*(_QWORD *)(a1 + 72) + 2LL * (unsigned int)(v12 - 1));\n  result.n128_u64[0] = __PAIR64__((unsigned int)v11 >> v10, v11);\n  LODWORD(v11) = (unsigned int)v11 >> v10 >> v10;\n  result.n128_u64[1] = __PAIR64__((unsigned int)v11 >> v10, v11);\n  LODWORD(v14) = (unsigned int)v11 >> v10 >> v10;\n  DWORD1(v14) = (unsigned int)v14 >> v10;\n  DWORD2(v14) = (unsigned int)v14 >> v10 >> v10;\n  HIDWORD(v14) = DWORD2(v14) >> v10;\n  *a3 = result;\n  *a4 = v14;\n  return result;\n}", "assembly": "; \n; sub_1043B8 from 0x1043b8 to 0x10449c (228 bytes)\n; \n; 2 xrefs:\n; > sub_10449C @ 0x1046c0\n; > sub_1047B8 @ 0x1047c8\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             X23, [SP,#-0x10+var_30]!                               ; +0x0, 0x1043b8\nSTP             X22, X21, [SP,#0x30+var_20]                            ; +0x4, 0x1043bc\nSTP             X20, X19, [SP,#0x30+var_10]                            ; +0x8, 0x1043c0\nSTP             X29, X30, [SP,#0x30+var_s0]                            ; +0xc, 0x1043c4\nLDR             X8, [X1]                                               ; +0x10, 0x1043c8\nLDR             W9, [X1,#0x10]                                         ; +0x14, 0x1043cc\nLDR             W11, [X0,#0x70]                                        ; +0x18, 0x1043d0\nLDP             X12, X23, [X0,#0x30]                                   ; +0x1c, 0x1043d4\nLDR             X10, [X8]                                              ; +0x20, 0x1043d8\nMOV             X19, X3                                                ; +0x24, 0x1043dc\nMOV             X20, X2                                                ; +0x28, 0x1043e0\nMOV             X22, X1                                                ; +0x2c, 0x1043e4\nLSR             X3, X10, X9                                            ; +0x30, 0x1043e8\nAND             X10, X3, X11                                           ; +0x34, 0x1043ec\nLDRSH           W10, [X12,X10,LSL#1]                                   ; +0x38, 0x1043f0\nMOV             X21, X0                                                ; +0x3c, 0x1043f4\nADD             X29, SP, #0x30                                         ; +0x40, 0x1043f8\nAND             W2, W10, #0xFFFF                                       ; +0x44, 0x1043fc\nTBNZ            W10, #0x1F, loc_10440C                                 ; +0x48, 0x104400\nAND             W0, W10, #0x7FFF                                       ; +0x4c, 0x104404\nB               loc_104424                                             ; +0x50, 0x104408\nMOV             X0, X21                                                ; +0x54, 0x10440c\nMOV             X1, X22                                                ; +0x58, 0x104410\nBL              sub_FBCF8                                              ; +0x5c, 0x104414\nLDR             W9, [X22,#0x10]                                        ; +0x60, 0x104418\nLDR             X8, [X22]                                              ; +0x64, 0x10441c\nMOV             W2, W0                                                 ; +0x68, 0x104420\nLDRB            W10, [X23,W0,UXTW]                                     ; +0x6c, 0x104424\nBL              sub_1047DC                                             ; +0x70, 0x104428\nSTR             W10, [X22,#0x10]                                       ; +0x74, 0x10442c\nSTR             X8, [X22]                                              ; +0x78, 0x104430\nLDR             X8, [X21,#0x48]                                        ; +0x7c, 0x104434\nSUB             W9, W2, #1                                             ; +0x80, 0x104438\nLDRB            W10, [X21,#0x66]                                       ; +0x84, 0x10443c\nLDRH            W8, [X8,W9,UXTW#1]                                     ; +0x88, 0x104440\nLSR             W9, W8, W10                                            ; +0x8c, 0x104444\nFMOV            S0, W8                                                 ; +0x90, 0x104448\nLSR             W8, W9, W10                                            ; +0x94, 0x10444c\nINS             V0.S[1], W9                                            ; +0x98, 0x104450\nLSR             W9, W8, W10                                            ; +0x9c, 0x104454\nINS             V0.S[2], W8                                            ; +0xa0, 0x104458\nLSR             W8, W9, W10                                            ; +0xa4, 0x10445c\nINS             V0.S[3], W9                                            ; +0xa8, 0x104460\nLSR             W9, W8, W10                                            ; +0xac, 0x104464\nFMOV            S1, W8                                                 ; +0xb0, 0x104468\nLSR             W8, W9, W10                                            ; +0xb4, 0x10446c\nINS             V1.S[1], W9                                            ; +0xb8, 0x104470\nLSR             W9, W8, W10                                            ; +0xbc, 0x104474\nINS             V1.S[2], W8                                            ; +0xc0, 0x104478\nINS             V1.S[3], W9                                            ; +0xc4, 0x10447c\nSTR             Q0, [X20]                                              ; +0xc8, 0x104480\nSTR             Q1, [X19]                                              ; +0xcc, 0x104484\nLDP             X29, X30, [SP,#0x30+var_s0]                            ; +0xd0, 0x104488\nLDP             X20, X19, [SP,#0x30+var_10]                            ; +0xd4, 0x10448c\nLDP             X22, X21, [SP,#0x30+var_20]                            ; +0xd8, 0x104490\nLDR             X23, [SP+0x30+var_30],#0x40                            ; +0xdc, 0x104494\nRET                                                                    ; +0xe0, 0x104498", "xrefs": ["sub_10449C @ 0x1046c0", "sub_1047B8 @ 0x1047c8"], "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"}