{"type": "func", "start": 6442457360, "end": 6442457615, "name": "sub_180001910", "pseudocode": "// \n// sub_180001910 from 0x180001910 to 0x180001a0f (255 bytes)\n// \n// 6 xrefs:\n// > sub_180002760 @ 0x1800027b2\n// > sub_180002830 @ 0x180002893\n// > sub_180002960 @ 0x180002a34\n// > sub_180002960 @ 0x180002a77\n// > sub_180002960 @ 0x180002aad\n// > sub_180002960 @ 0x180002ae8\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_180001910(__int64 a1, __int64 a2, __int16 a3, int a4)\n{\n  __int64 v4; // r8\n  unsigned int v5; // edx\n  unsigned int v6; // r11d\n  unsigned int v7; // r9d\n  unsigned int v8; // edx\n  __int64 v9; // r9\n  int v10; // eax\n  char v11; // cl\n  unsigned int v12; // edx\n  unsigned int *v13; // rax\n  unsigned int v14; // r8d\n  int v15; // ecx\n\n  v4 = a3 & 0x7FFF;\n  v5 = __ROL4__(a4 & *(_DWORD *)(a1 + 104), 16);\n  v6 = *(__int16 *)(a1 + 98);\n  v7 = (v5 << 8) ^ ((v5 << 8) ^ (v5 >> 8)) & 0xFF00FF;\n  v8 = (16 * v7) ^ ((16 * v7) ^ (v7 >> 4)) & 0xF0F0F0F;\n  v9 = *(_QWORD *)(a1 + 64);\n  v10 = 2 * ((4 * v8) ^ ((4 * v8) ^ (v8 >> 2)) & 0x33333333);\n  v11 = v6 - v4;\n  v12 = v10 ^ (v10 ^ (((4 * v8) ^ ((4 * v8) ^ (v8 >> 2)) & 0x33333333) >> 1)) & 0x55555555;\n  v13 = (unsigned int *)(v9 + 4 * v4);\n  v14 = (v6 - (unsigned int)v4) >> 2;\n  if ( v14 )\n  {\n    while ( *v13 <= v12 )\n    {\n      if ( v13[1] > v12 )\n        return ((__int64)v13 - v9 + 4) >> 2;\n      if ( v13[2] > v12 )\n        return ((__int64)v13 - v9 + 8) >> 2;\n      if ( v13[3] > v12 )\n        return ((__int64)v13 - v9 + 12) >> 2;\n      v13 += 4;\n      if ( !--v14 )\n        goto LABEL_7;\n    }\n  }\n  else\n  {\nLABEL_7:\n    v15 = v11 & 3;\n    if ( !v15 )\n      return v6;\n    while ( *v13 <= v12 )\n    {\n      ++v13;\n      if ( !--v15 )\n        return v6;\n    }\n  }\n  return ((__int64)v13 - v9) >> 2;\n}", "assembly": "; \n; sub_180001910 from 0x180001910 to 0x180001a0f (255 bytes)\n; \n; 6 xrefs:\n; > sub_180002760 @ 0x1800027b2\n; > sub_180002830 @ 0x180002893\n; > sub_180002960 @ 0x180002a34\n; > sub_180002960 @ 0x180002a77\n; > sub_180002960 @ 0x180002aad\n; > sub_180002960 @ 0x180002ae8\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     edx, [rcx+68h]                                                 ; +0x0, 0x180001910\nmov     r10, rcx                                                       ; +0x3, 0x180001913\nand     edx, r9d                                                       ; +0x6, 0x180001916\nand     r8d, 7FFFh                                                     ; +0x9, 0x180001919\nrol     edx, 10h                                                       ; +0x10, 0x180001920\nmov     r9d, edx                                                       ; +0x13, 0x180001923\nmov     eax, edx                                                       ; +0x16, 0x180001926\nmovsx   r11d, word ptr [r10+62h]                                       ; +0x18, 0x180001928\nshl     edx, 8                                                         ; +0x1d, 0x18000192d\nshl     eax, 8                                                         ; +0x20, 0x180001930\nshr     r9d, 8                                                         ; +0x23, 0x180001933\nxor     r9d, eax                                                       ; +0x27, 0x180001937\nand     r9d, 0FF00FFh                                                  ; +0x2a, 0x18000193a\nxor     r9d, edx                                                       ; +0x31, 0x180001941\nmov     eax, r9d                                                       ; +0x34, 0x180001944\nmov     edx, r9d                                                       ; +0x37, 0x180001947\nshr     edx, 4                                                         ; +0x3a, 0x18000194a\nshl     eax, 4                                                         ; +0x3d, 0x18000194d\nxor     edx, eax                                                       ; +0x40, 0x180001950\nshl     r9d, 4                                                         ; +0x42, 0x180001952\nand     edx, 0F0F0F0Fh                                                 ; +0x46, 0x180001956\nxor     edx, r9d                                                       ; +0x4c, 0x18000195c\nmov     r9, [r10+40h]                                                  ; +0x4f, 0x18000195f\nmov     ecx, edx                                                       ; +0x53, 0x180001963\nshr     ecx, 2                                                         ; +0x55, 0x180001965\nlea     eax, ds:0[rdx*4]                                               ; +0x58, 0x180001968\nxor     ecx, eax                                                       ; +0x5f, 0x18000196f\nlea     eax, ds:0[rdx*4]                                               ; +0x61, 0x180001971\nand     ecx, 33333333h                                                 ; +0x68, 0x180001978\nxor     ecx, eax                                                       ; +0x6e, 0x18000197e\nmov     edx, ecx                                                       ; +0x70, 0x180001980\nshr     edx, 1                                                         ; +0x72, 0x180001982\nlea     eax, [rcx+rcx]                                                 ; +0x74, 0x180001984\nxor     edx, eax                                                       ; +0x77, 0x180001987\nlea     eax, [rcx+rcx]                                                 ; +0x79, 0x180001989\nand     edx, 55555555h                                                 ; +0x7c, 0x18000198c\nmov     ecx, r11d                                                      ; +0x82, 0x180001992\nsub     ecx, r8d                                                       ; +0x85, 0x180001995\nxor     edx, eax                                                       ; +0x88, 0x180001998\nlea     rax, [r9+r8*4]                                                 ; +0x8a, 0x18000199a\nmov     r8d, ecx                                                       ; +0x8e, 0x18000199e\nshr     r8d, 2                                                         ; +0x91, 0x1800019a1\ntest    r8d, r8d                                                       ; +0x95, 0x1800019a5\njz      short loc_1800019CD                                            ; +0x98, 0x1800019a8\nnop     word ptr [rax+rax+00h]                                         ; +0x9a, 0x1800019aa\ncmp     [rax], edx                                                     ; +0xa0, 0x1800019b0\nja      short loc_180001A07                                            ; +0xa2, 0x1800019b2\ncmp     [rax+4], edx                                                   ; +0xa4, 0x1800019b4\nja      short loc_1800019FB                                            ; +0xa7, 0x1800019b7\ncmp     [rax+8], edx                                                   ; +0xa9, 0x1800019b9\nja      short loc_1800019EF                                            ; +0xac, 0x1800019bc\ncmp     [rax+0Ch], edx                                                 ; +0xae, 0x1800019be\nja      short loc_1800019E3                                            ; +0xb1, 0x1800019c1\nadd     rax, 10h                                                       ; +0xb3, 0x1800019c3\nadd     r8d, 0FFFFFFFFh                                                ; +0xb7, 0x1800019c7\njnz     short loc_1800019B0                                            ; +0xbb, 0x1800019cb\nand     ecx, 3                                                         ; +0xbd, 0x1800019cd\njz      short loc_1800019DF                                            ; +0xc0, 0x1800019d0\ncmp     [rax], edx                                                     ; +0xc2, 0x1800019d2\nja      short loc_180001A07                                            ; +0xc4, 0x1800019d4\nadd     rax, 4                                                         ; +0xc6, 0x1800019d6\nadd     ecx, 0FFFFFFFFh                                                ; +0xca, 0x1800019da\njnz     short loc_1800019D2                                            ; +0xcd, 0x1800019dd\nmov     eax, r11d                                                      ; +0xcf, 0x1800019df\nretn                                                                   ; +0xd2, 0x1800019e2\nsub     rax, r9                                                        ; +0xd3, 0x1800019e3\nadd     rax, 0Ch                                                       ; +0xd6, 0x1800019e6\nsar     rax, 2                                                         ; +0xda, 0x1800019ea\nretn                                                                   ; +0xde, 0x1800019ee\nsub     rax, r9                                                        ; +0xdf, 0x1800019ef\nadd     rax, 8                                                         ; +0xe2, 0x1800019f2\nsar     rax, 2                                                         ; +0xe6, 0x1800019f6\nretn                                                                   ; +0xea, 0x1800019fa\nsub     rax, r9                                                        ; +0xeb, 0x1800019fb\nadd     rax, 4                                                         ; +0xee, 0x1800019fe\nsar     rax, 2                                                         ; +0xf2, 0x180001a02\nretn                                                                   ; +0xf6, 0x180001a06\nsub     rax, r9                                                        ; +0xf7, 0x180001a07\nsar     rax, 2                                                         ; +0xfa, 0x180001a0a\nretn                                                                   ; +0xfe, 0x180001a0e", "xrefs": ["sub_180002760 @ 0x1800027b2", "sub_180002830 @ 0x180002893", "sub_180002960 @ 0x180002a34", "sub_180002960 @ 0x180002a77", "sub_180002960 @ 0x180002aad", "sub_180002960 @ 0x180002ae8"], "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"}