{"type": "func", "start": 6442461024, "end": 6442461225, "name": "sub_180002760", "pseudocode": "// \n// sub_180002760 from 0x180002760 to 0x180002829 (201 bytes)\n// \n// 4 xrefs:\n// > sub_180002B80 @ 0x180002cc8\n// > sub_180002B80 @ 0x180002cd7\n// > sub_180002B80 @ 0x180002e2b\n// > <???> @ 0x1801f6120\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__m128i __fastcall sub_180002760(__int64 a1, __int64 a2)\n{\n  _QWORD *v2; // r10\n  __int64 v4; // rsi\n  int v6; // ecx\n  __int64 v7; // r9\n  unsigned int v8; // edx\n  int v9; // r8d\n  unsigned int v10; // eax\n  int v11; // ecx\n  unsigned int v12; // r9d\n  unsigned int v13; // edx\n\n  v2 = *(_QWORD **)a2;\n  v4 = *(_QWORD *)(a1 + 56);\n  v6 = *(_DWORD *)(a2 + 16);\n  v7 = **(_QWORD **)a2 >> v6;\n  v8 = *(unsigned __int16 *)(*(_QWORD *)(a1 + 48) + 2LL * ((unsigned int)v7 & *(_DWORD *)(a1 + 112)));\n  v9 = *(char *)((*(_WORD *)(*(_QWORD *)(a1 + 48) + 2LL * ((unsigned int)v7 & *(_DWORD *)(a1 + 112))) & 0x7FFF) + v4);\n  if ( v8 >= 0x8000 )\n  {\n    v10 = sub_180001910(a1, a2, v8, v7);\n    v6 = *(_DWORD *)(a2 + 16);\n    v2 = *(_QWORD **)a2;\n    v8 = v10;\n    v9 = *(char *)(v10 + v4);\n  }\n  v11 = v9 + v6;\n  *(_DWORD *)(a2 + 16) = v11 & 7;\n  *(_QWORD *)a2 = (char *)v2 + ((__int64)v11 >> 3);\n  v12 = *(unsigned __int16 *)(*(_QWORD *)(a1 + 72) + 2LL * (v8 - 1));\n  v13 = v12 >> *(_BYTE *)(a1 + 102) >> *(_BYTE *)(a1 + 102);\n  return _mm_unpacklo_epi64(\n           _mm_unpacklo_epi32(_mm_cvtsi32_si128(v12), _mm_cvtsi32_si128(v12 >> *(_BYTE *)(a1 + 102))),\n           _mm_unpacklo_epi32(_mm_cvtsi32_si128(v13), _mm_cvtsi32_si128(v13 >> *(_BYTE *)(a1 + 102))));\n}", "assembly": "; \n; sub_180002760 from 0x180002760 to 0x180002829 (201 bytes)\n; \n; 4 xrefs:\n; > sub_180002B80 @ 0x180002cc8\n; > sub_180002B80 @ 0x180002cd7\n; > sub_180002B80 @ 0x180002e2b\n; > <???> @ 0x1801f6120\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\nmov     [rsp+arg_0], rbx                                               ; +0x0, 0x180002760\nmov     [rsp+arg_8], rsi                                               ; +0x5, 0x180002765\npush    rdi                                                            ; +0xa, 0x18000276a\nsub     rsp, 20h                                                       ; +0xb, 0x18000276b\nmov     r10, [rdx]                                                     ; +0xf, 0x18000276f\nmov     rdi, rcx                                                       ; +0x12, 0x180002772\nmov     rsi, [rcx+38h]                                                 ; +0x15, 0x180002775\nmov     rbx, rdx                                                       ; +0x19, 0x180002779\nmov     ecx, [rdx+10h]                                                 ; +0x1c, 0x18000277c\nmov     rax, [rdi+30h]                                                 ; +0x1f, 0x18000277f\nmov     r9, [r10]                                                      ; +0x23, 0x180002783\nmov     r8d, [rdi+70h]                                                 ; +0x26, 0x180002786\nshr     r9, cl                                                         ; +0x2a, 0x18000278a\nand     r8, r9                                                         ; +0x2d, 0x18000278d\nmovzx   edx, word ptr [rax+r8*2]                                       ; +0x30, 0x180002790\nmov     eax, edx                                                       ; +0x35, 0x180002795\nand     eax, 7FFFh                                                     ; +0x37, 0x180002797\nmovsx   r8d, byte ptr [rax+rsi]                                        ; +0x3c, 0x18000279c\ncmp     edx, 8000h                                                     ; +0x41, 0x1800027a1\njb      short loc_1800027C4                                            ; +0x47, 0x1800027a7\nmov     r8d, edx                                                       ; +0x49, 0x1800027a9\nmov     rcx, rdi                                                       ; +0x4c, 0x1800027ac\nmov     rdx, rbx                                                       ; +0x4f, 0x1800027af\ncall    sub_180001910                                                  ; +0x52, 0x1800027b2\nmov     ecx, [rbx+10h]                                                 ; +0x57, 0x1800027b7\nmov     r10, [rbx]                                                     ; +0x5a, 0x1800027ba\nmov     edx, eax                                                       ; +0x5d, 0x1800027bd\nmovsx   r8d, byte ptr [rdx+rsi]                                        ; +0x5f, 0x1800027bf\nmov     rsi, [rsp+28h+arg_8]                                           ; +0x64, 0x1800027c4\nlea     edx, [rdx-1]                                                   ; +0x69, 0x1800027c9\nadd     ecx, r8d                                                       ; +0x6c, 0x1800027cc\nmov     eax, ecx                                                       ; +0x6f, 0x1800027cf\nand     eax, 7                                                         ; +0x71, 0x1800027d1\nmov     [rbx+10h], eax                                                 ; +0x74, 0x1800027d4\nmovsxd  rax, ecx                                                       ; +0x77, 0x1800027d7\nsar     rax, 3                                                         ; +0x7a, 0x1800027da\nadd     rax, r10                                                       ; +0x7e, 0x1800027de\nmov     [rbx], rax                                                     ; +0x81, 0x1800027e1\nmovsx   ecx, byte ptr [rdi+66h]                                        ; +0x84, 0x1800027e4\nmov     rax, [rdi+48h]                                                 ; +0x88, 0x1800027e8\nmov     rbx, [rsp+28h+arg_0]                                           ; +0x8c, 0x1800027ec\nmovzx   r9d, word ptr [rax+rdx*2]                                      ; +0x91, 0x1800027f1\nmov     r8d, r9d                                                       ; +0x96, 0x1800027f6\nshr     r8d, cl                                                        ; +0x99, 0x1800027f9\nmov     edx, r8d                                                       ; +0x9c, 0x1800027fc\nshr     edx, cl                                                        ; +0x9f, 0x1800027ff\nmov     eax, edx                                                       ; +0xa1, 0x180002801\nmovd    xmm0, r9d                                                      ; +0xa3, 0x180002803\nshr     eax, cl                                                        ; +0xa8, 0x180002808\nmovd    xmm1, r8d                                                      ; +0xaa, 0x18000280a\nmovd    xmm3, edx                                                      ; +0xaf, 0x18000280f\npunpckldq xmm0, xmm1                                                   ; +0xb3, 0x180002813\nmovd    xmm2, eax                                                      ; +0xb7, 0x180002817\npunpckldq xmm3, xmm2                                                   ; +0xbb, 0x18000281b\npunpcklqdq xmm0, xmm3                                                  ; +0xbf, 0x18000281f\nadd     rsp, 20h                                                       ; +0xc3, 0x180002823\npop     rdi                                                            ; +0xc7, 0x180002827\nretn                                                                   ; +0xc8, 0x180002828", "xrefs": ["sub_180002B80 @ 0x180002cc8", "sub_180002B80 @ 0x180002cd7", "sub_180002B80 @ 0x180002e2b", "<???> @ 0x1801f6120"], "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"}