{"type": "func", "start": 6442482288, "end": 6442482861, "name": "sub_180007A70", "pseudocode": "// \n// sub_180007A70 from 0x180007a70 to 0x180007cad (573 bytes)\n// \n// 2 xrefs:\n// > sub_180017630 @ 0x180017803\n// > <???> @ 0x1801f63a8\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_180007A70(__int64 a1, __int64 a2)\n{\n  int v4; // esi\n  int v5; // ebp\n  int v6; // r14d\n  int v7; // edi\n  int v8; // eax\n  unsigned int v9; // edi\n  int v10; // eax\n  int v11; // edx\n  __int64 v12; // rcx\n  int v13; // r14d\n  unsigned int v14; // ebp\n  int v15; // edi\n  unsigned int i; // ebp\n  int v17; // eax\n  int v18; // r14d\n  unsigned int v19; // edi\n  int v20; // eax\n  int v21; // eax\n  unsigned int v22; // edi\n  __int64 v23; // rsi\n  int v24; // ecx\n  int v25; // eax\n  unsigned int v26; // r11d\n  int v27; // r10d\n  __int64 v28; // rdi\n  __int64 v29; // rsi\n  int v30; // r9d\n  unsigned int v31; // r8d\n  unsigned int v32; // ecx\n  unsigned __int64 v33; // rdx\n\n  v4 = 0;\n  v5 = 0;\n  v6 = sub_180001340(a2, 8) + 1;\n  v7 = 120 * v6;\n  if ( v6 > 0 )\n  {\n    do\n    {\n      v8 = sub_180001540(a2);\n      if ( v8 < 0 )\n        return 0xFFFFFFFFLL;\n      ++v5;\n      v7 = v8 + ((v7 + 15) & 0xFFFFFFF0);\n    }\n    while ( v5 < v6 );\n  }\n  v9 = (v7 + 3) & 0xFFFFFFFC;\n  v10 = sub_180001340(a2, 6);\n  if ( v10 >= 0 )\n  {\n    v11 = *(_DWORD *)(a2 + 16);\n    do\n    {\n      v12 = (__int64)(v11 + 16) >> 3;\n      v11 = ((_BYTE)v11 + 16) & 7;\n      *(_QWORD *)a2 += v12;\n      --v10;\n    }\n    while ( v10 >= 0 );\n    *(_DWORD *)(a2 + 16) = v11;\n  }\n  v13 = sub_180001340(a2, 6) + 1;\n  v14 = v9 + 8 * v13 + 3;\n  v15 = 0;\n  for ( i = (v13 + v14) & 0xFFFFFFFC; v15 < v13; i += (v17 + 3) & 0xFFFFFFFC )\n  {\n    sub_180001340(a2, 16);\n    v17 = sub_180006380(a1, a2);\n    if ( v17 < 0 )\n      return 0xFFFFFFFFLL;\n    ++v15;\n  }\n  v18 = sub_180001340(a2, 6) + 1;\n  v19 = (i + 40 * v18 + 3) & 0xFFFFFFFC;\n  if ( v18 > 0 )\n  {\n    do\n    {\n      v20 = sub_180009D60(a1, a2);\n      if ( v20 < 0 )\n        return 0xFFFFFFFFLL;\n      ++v4;\n      v19 = (v20 + v19 + 3) & 0xFFFFFFFC;\n    }\n    while ( v4 < v18 );\n  }\n  v21 = sub_180001340(a2, 6) + 1;\n  v22 = v19 + 40 * v21;\n  if ( v21 > 0 )\n  {\n    v23 = (unsigned int)v21;\n    do\n    {\n      v24 = *(_DWORD *)(a2 + 16) + 16;\n      *(_DWORD *)(a2 + 16) = (*(_BYTE *)(a2 + 16) + 16) & 7;\n      *(_QWORD *)a2 += (__int64)v24 >> 3;\n      v22 = (sub_180007CB0(a1, a2) + 3 + v22) & 0xFFFFFFFC;\n      --v23;\n    }\n    while ( v23 );\n  }\n  v25 = sub_180001340(a2, 6) + 1;\n  v26 = (v22 + 2 * v25 + 3) & 0xFFFFFFFC;\n  if ( v25 > 0 )\n  {\n    v27 = *(_DWORD *)(a2 + 16);\n    v28 = *(_QWORD *)a2;\n    v29 = (unsigned int)v25;\n    do\n    {\n      v30 = v27 + 1;\n      v31 = (((_BYTE)v27 + 1) & 7) + 16;\n      v32 = (((((_BYTE)v27 + 1) & 7) + 16) & 7) + 16;\n      v33 = (((((((_BYTE)v27 + 1) & 7) + 16) & 7) + 16) & 7u) + 8;\n      v27 = ((((((((_BYTE)v27 + 1) & 7) + 16) & 7) + 16) & 7) + 8) & 7;\n      v28 += ((unsigned __int64)v31 >> 3) + ((unsigned __int64)v32 >> 3) + (v33 >> 3) + ((__int64)v30 >> 3);\n      --v29;\n    }\n    while ( v29 );\n    *(_DWORD *)(a2 + 16) = v27;\n    *(_QWORD *)a2 = v28;\n  }\n  return v26;\n}", "assembly": "; \n; sub_180007A70 from 0x180007a70 to 0x180007cad (573 bytes)\n; \n; 2 xrefs:\n; > sub_180017630 @ 0x180017803\n; > <???> @ 0x1801f63a8\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, 0x180007a70\nmov     [rsp+arg_8], rbp                                               ; +0x5, 0x180007a75\nmov     [rsp+arg_10], rsi                                              ; +0xa, 0x180007a7a\npush    rdi                                                            ; +0xf, 0x180007a7f\npush    r14                                                            ; +0x10, 0x180007a80\npush    r15                                                            ; +0x12, 0x180007a82\nsub     rsp, 20h                                                       ; +0x14, 0x180007a84\nmov     rbx, rdx                                                       ; +0x18, 0x180007a88\nmov     r15, rcx                                                       ; +0x1b, 0x180007a8b\nmov     rcx, rbx                                                       ; +0x1e, 0x180007a8e\nmov     edx, 8                                                         ; +0x21, 0x180007a91\ncall    sub_180001340                                                  ; +0x26, 0x180007a96\nxor     esi, esi                                                       ; +0x2b, 0x180007a9b\nmov     ebp, esi                                                       ; +0x2d, 0x180007a9d\nlea     r14d, [rax+1]                                                  ; +0x2f, 0x180007a9f\nimul    edi, r14d, 78h ; 'x'                                           ; +0x33, 0x180007aa3\ntest    r14d, r14d                                                     ; +0x37, 0x180007aa7\njle     short loc_180007ACF                                            ; +0x3a, 0x180007aaa\nnop     dword ptr [rax+00h]                                            ; +0x3c, 0x180007aac\nmov     rcx, rbx                                                       ; +0x40, 0x180007ab0\ncall    sub_180001540                                                  ; +0x43, 0x180007ab3\ntest    eax, eax                                                       ; +0x48, 0x180007ab8\njs      loc_180007CA6                                                  ; +0x4a, 0x180007aba\nadd     edi, 0Fh                                                       ; +0x50, 0x180007ac0\ninc     ebp                                                            ; +0x53, 0x180007ac3\nand     edi, 0FFFFFFF0h                                                ; +0x55, 0x180007ac5\nadd     edi, eax                                                       ; +0x58, 0x180007ac8\ncmp     ebp, r14d                                                      ; +0x5a, 0x180007aca\njl      short loc_180007AB0                                            ; +0x5d, 0x180007acd\nadd     edi, 3                                                         ; +0x5f, 0x180007acf\nmov     edx, 6                                                         ; +0x62, 0x180007ad2\nmov     rcx, rbx                                                       ; +0x67, 0x180007ad7\nand     edi, 0FFFFFFFCh                                                ; +0x6a, 0x180007ada\ncall    sub_180001340                                                  ; +0x6d, 0x180007add\ntest    eax, eax                                                       ; +0x72, 0x180007ae2\njs      short loc_180007B0A                                            ; +0x74, 0x180007ae4\nmov     edx, [rbx+10h]                                                 ; +0x76, 0x180007ae6\nnop     dword ptr [rax+00000000h]                                      ; +0x79, 0x180007ae9\nlea     ecx, [rdx+10h]                                                 ; +0x80, 0x180007af0\nmov     edx, ecx                                                       ; +0x83, 0x180007af3\nmovsxd  rcx, ecx                                                       ; +0x85, 0x180007af5\nsar     rcx, 3                                                         ; +0x88, 0x180007af8\nand     edx, 7                                                         ; +0x8c, 0x180007afc\nadd     [rbx], rcx                                                     ; +0x8f, 0x180007aff\nsub     eax, 1                                                         ; +0x92, 0x180007b02\njns     short loc_180007AF0                                            ; +0x95, 0x180007b05\nmov     [rbx+10h], edx                                                 ; +0x97, 0x180007b07\nmov     edx, 6                                                         ; +0x9a, 0x180007b0a\nmov     rcx, rbx                                                       ; +0x9f, 0x180007b0f\ncall    sub_180001340                                                  ; +0xa2, 0x180007b12\nlea     r14d, [rax+1]                                                  ; +0xa7, 0x180007b17\nlea     ebp, ds:3[r14*8]                                               ; +0xab, 0x180007b1b\nadd     ebp, edi                                                       ; +0xb3, 0x180007b23\nmov     edi, esi                                                       ; +0xb5, 0x180007b25\nadd     ebp, r14d                                                      ; +0xb7, 0x180007b27\nand     ebp, 0FFFFFFFCh                                                ; +0xba, 0x180007b2a\ntest    r14d, r14d                                                     ; +0xbd, 0x180007b2d\njle     short loc_180007B61                                            ; +0xc0, 0x180007b30\nmov     edx, 10h                                                       ; +0xc2, 0x180007b32\nmov     rcx, rbx                                                       ; +0xc7, 0x180007b37\ncall    sub_180001340                                                  ; +0xca, 0x180007b3a\nmov     rdx, rbx                                                       ; +0xcf, 0x180007b3f\nmov     rcx, r15                                                       ; +0xd2, 0x180007b42\ncall    sub_180006380                                                  ; +0xd5, 0x180007b45\ntest    eax, eax                                                       ; +0xda, 0x180007b4a\njs      loc_180007CA6                                                  ; +0xdc, 0x180007b4c\nadd     eax, 3                                                         ; +0xe2, 0x180007b52\ninc     edi                                                            ; +0xe5, 0x180007b55\nand     eax, 0FFFFFFFCh                                                ; +0xe7, 0x180007b57\nadd     ebp, eax                                                       ; +0xea, 0x180007b5a\ncmp     edi, r14d                                                      ; +0xec, 0x180007b5c\njl      short loc_180007B32                                            ; +0xef, 0x180007b5f\nmov     edx, 6                                                         ; +0xf1, 0x180007b61\nmov     rcx, rbx                                                       ; +0xf6, 0x180007b66\ncall    sub_180001340                                                  ; +0xf9, 0x180007b69\nlea     r14d, [rax+1]                                                  ; +0xfe, 0x180007b6e\nlea     ecx, [r14+r14*4]                                               ; +0x102, 0x180007b72\nlea     edi, ds:3[rcx*8]                                               ; +0x106, 0x180007b76\nadd     edi, ebp                                                       ; +0x10d, 0x180007b7d\nand     edi, 0FFFFFFFCh                                                ; +0x10f, 0x180007b7f\ntest    r14d, r14d                                                     ; +0x112, 0x180007b82\njle     short loc_180007BB2                                            ; +0x115, 0x180007b85\nnop     word ptr [rax+rax+00000000h]                                   ; +0x117, 0x180007b87\nmov     rdx, rbx                                                       ; +0x120, 0x180007b90\nmov     rcx, r15                                                       ; +0x123, 0x180007b93\ncall    sub_180009D60                                                  ; +0x126, 0x180007b96\ntest    eax, eax                                                       ; +0x12b, 0x180007b9b\njs      loc_180007CA6                                                  ; +0x12d, 0x180007b9d\nadd     edi, 3                                                         ; +0x133, 0x180007ba3\ninc     esi                                                            ; +0x136, 0x180007ba6\nadd     edi, eax                                                       ; +0x138, 0x180007ba8\nand     edi, 0FFFFFFFCh                                                ; +0x13a, 0x180007baa\ncmp     esi, r14d                                                      ; +0x13d, 0x180007bad\njl      short loc_180007B90                                            ; +0x140, 0x180007bb0\nmov     edx, 6                                                         ; +0x142, 0x180007bb2\nmov     rcx, rbx                                                       ; +0x147, 0x180007bb7\ncall    sub_180001340                                                  ; +0x14a, 0x180007bba\ninc     eax                                                            ; +0x14f, 0x180007bbf\nlea     ecx, [rax+rax*4]                                               ; +0x151, 0x180007bc1\nlea     edi, [rdi+rcx*8]                                               ; +0x154, 0x180007bc4\ntest    eax, eax                                                       ; +0x157, 0x180007bc7\njle     short loc_180007C01                                            ; +0x159, 0x180007bc9\nmov     esi, eax                                                       ; +0x15b, 0x180007bcb\nnop     dword ptr [rax]                                                ; +0x15d, 0x180007bcd\nmov     ecx, [rbx+10h]                                                 ; +0x160, 0x180007bd0\nmov     rdx, rbx                                                       ; +0x163, 0x180007bd3\nadd     ecx, 10h                                                       ; +0x166, 0x180007bd6\nmov     eax, ecx                                                       ; +0x169, 0x180007bd9\nand     eax, 7                                                         ; +0x16b, 0x180007bdb\nmov     [rbx+10h], eax                                                 ; +0x16e, 0x180007bde\nmovsxd  rax, ecx                                                       ; +0x171, 0x180007be1\nmov     rcx, r15                                                       ; +0x174, 0x180007be4\nsar     rax, 3                                                         ; +0x177, 0x180007be7\nadd     [rbx], rax                                                     ; +0x17b, 0x180007beb\ncall    sub_180007CB0                                                  ; +0x17e, 0x180007bee\nadd     eax, 3                                                         ; +0x183, 0x180007bf3\nadd     edi, eax                                                       ; +0x186, 0x180007bf6\nand     edi, 0FFFFFFFCh                                                ; +0x188, 0x180007bf8\nsub     rsi, 1                                                         ; +0x18b, 0x180007bfb\njnz     short loc_180007BD0                                            ; +0x18f, 0x180007bff\nmov     edx, 6                                                         ; +0x191, 0x180007c01\nmov     rcx, rbx                                                       ; +0x196, 0x180007c06\ncall    sub_180001340                                                  ; +0x199, 0x180007c09\ninc     eax                                                            ; +0x19e, 0x180007c0e\nlea     r11d, ds:3[rax*2]                                              ; +0x1a0, 0x180007c10\nadd     r11d, edi                                                      ; +0x1a8, 0x180007c18\nand     r11d, 0FFFFFFFCh                                               ; +0x1ab, 0x180007c1b\ntest    eax, eax                                                       ; +0x1af, 0x180007c1f\njle     short loc_180007C8A                                            ; +0x1b1, 0x180007c21\nmov     r10d, [rbx+10h]                                                ; +0x1b3, 0x180007c23\nmov     rdi, [rbx]                                                     ; +0x1b7, 0x180007c27\nmov     esi, eax                                                       ; +0x1ba, 0x180007c2a\nnop     dword ptr [rax+00h]                                            ; +0x1bc, 0x180007c2c\nlea     r9d, [r10+1]                                                   ; +0x1c0, 0x180007c30\nmov     r8d, r9d                                                       ; +0x1c4, 0x180007c34\nand     r8d, 7                                                         ; +0x1c7, 0x180007c37\nadd     r8d, 10h                                                       ; +0x1cb, 0x180007c3b\nmov     ecx, r8d                                                       ; +0x1cf, 0x180007c3f\nand     ecx, 7                                                         ; +0x1d2, 0x180007c42\nadd     ecx, 10h                                                       ; +0x1d5, 0x180007c45\nmov     eax, ecx                                                       ; +0x1d8, 0x180007c48\nand     eax, 7                                                         ; +0x1da, 0x180007c4a\nadd     eax, 8                                                         ; +0x1dd, 0x180007c4d\nmov     r10d, eax                                                      ; +0x1e0, 0x180007c50\nmov     edx, eax                                                       ; +0x1e3, 0x180007c53\nmov     eax, ecx                                                       ; +0x1e5, 0x180007c55\nand     r10d, 7                                                        ; +0x1e7, 0x180007c57\nshr     rdx, 3                                                         ; +0x1eb, 0x180007c5b\nshr     rax, 3                                                         ; +0x1ef, 0x180007c5f\nadd     rdx, rax                                                       ; +0x1f3, 0x180007c63\nmov     ecx, r8d                                                       ; +0x1f6, 0x180007c66\nshr     rcx, 3                                                         ; +0x1f9, 0x180007c69\nadd     rdx, rcx                                                       ; +0x1fd, 0x180007c6d\nmovsxd  rcx, r9d                                                       ; +0x200, 0x180007c70\nsar     rcx, 3                                                         ; +0x203, 0x180007c73\nadd     rdi, rcx                                                       ; +0x207, 0x180007c77\nadd     rdi, rdx                                                       ; +0x20a, 0x180007c7a\nsub     rsi, 1                                                         ; +0x20d, 0x180007c7d\njnz     short loc_180007C30                                            ; +0x211, 0x180007c81\nmov     [rbx+10h], r10d                                                ; +0x213, 0x180007c83\nmov     [rbx], rdi                                                     ; +0x217, 0x180007c87\nmov     eax, r11d                                                      ; +0x21a, 0x180007c8a\nmov     rbx, [rsp+38h+arg_0]                                           ; +0x21d, 0x180007c8d\nmov     rbp, [rsp+38h+arg_8]                                           ; +0x222, 0x180007c92\nmov     rsi, [rsp+38h+arg_10]                                          ; +0x227, 0x180007c97\nadd     rsp, 20h                                                       ; +0x22c, 0x180007c9c\npop     r15                                                            ; +0x230, 0x180007ca0\npop     r14                                                            ; +0x232, 0x180007ca2\npop     rdi                                                            ; +0x234, 0x180007ca4\nretn                                                                   ; +0x235, 0x180007ca5\nmov     eax, 0FFFFFFFFh                                                ; +0x236, 0x180007ca6\njmp     short loc_180007C8D                                            ; +0x23b, 0x180007cab", "xrefs": ["sub_180017630 @ 0x180017803", "<???> @ 0x1801f63a8"], "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"}