{"type": "func", "start": 6442481552, "end": 6442482275, "name": "sub_180007790", "pseudocode": "// \n// sub_180007790 from 0x180007790 to 0x180007a63 (723 bytes)\n// \n// 2 xrefs:\n// > sub_180017630 @ 0x180017929\n// > <???> @ 0x1801f639c\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_180007790(__int64 a1, _QWORD *a2)\n{\n  __int64 v2; // rbx\n  int v6; // eax\n  int v7; // ebp\n  int v8; // esi\n  int v9; // esi\n  int v10; // eax\n  __int64 v11; // rax\n  __int64 v12; // rcx\n  int v13; // r14d\n  __int64 v14; // rsi\n  unsigned __int8 v15; // cl\n  int v16; // eax\n  int v17; // esi\n  int v18; // eax\n  int v19; // esi\n  int v20; // eax\n  __int64 v21; // rsi\n\n  v2 = *(_QWORD *)(a1 + 32);\n  if ( !v2 )\n    return 4294967167LL;\n  v6 = sub_180001340((__int64)a2, 8) + 1;\n  *(_DWORD *)(v2 + 24) = v6;\n  v7 = 0;\n  *(_QWORD *)(v2 + 72) = sub_180018340(16, (unsigned int)(120 * v6));\n  v8 = 0;\n  if ( *(int *)(v2 + 24) > 0 )\n  {\n    while ( !(unsigned int)sub_180001A10(a2, *(_QWORD *)(v2 + 72) + 120LL * v8) )\n    {\n      if ( ++v8 >= *(_DWORD *)(v2 + 24) )\n        goto LABEL_6;\n    }\n    return 4294967163LL;\n  }\nLABEL_6:\n  v9 = sub_180001340((__int64)a2, 6);\n  if ( v9 >= 0 )\n  {\n    while ( !(unsigned int)sub_180001340((__int64)a2, 16) )\n    {\n      if ( --v9 < 0 )\n        goto LABEL_9;\n    }\n    return 4294967163LL;\n  }\nLABEL_9:\n  v10 = sub_180001340((__int64)a2, 6);\n  *(_DWORD *)(v2 + 16) = v10 + 1;\n  v11 = sub_1800182F0((unsigned int)(8 * (v10 + 1)));\n  v12 = *(unsigned int *)(v2 + 16);\n  *(_QWORD *)(v2 + 56) = v11;\n  v13 = 0;\n  *(_QWORD *)(v2 + 48) = sub_1800182F0(v12);\n  if ( *(int *)(v2 + 16) > 0 )\n  {\n    v14 = 0;\n    do\n    {\n      *(_BYTE *)(v14 + *(_QWORD *)(v2 + 48)) = sub_180001340((__int64)a2, 16);\n      v15 = *(_BYTE *)(v14 + *(_QWORD *)(v2 + 48));\n      if ( v15 > 1u )\n        return 4294967163LL;\n      if ( v15 )\n        *(_QWORD *)(*(_QWORD *)(v2 + 56) + 8 * v14) = sub_180006640(a1, a2);\n      if ( !*(_QWORD *)(*(_QWORD *)(v2 + 56) + 8 * v14) )\n        return 4294967163LL;\n      ++v13;\n      ++v14;\n    }\n    while ( v13 < *(_DWORD *)(v2 + 16) );\n  }\n  v16 = sub_180001340((__int64)a2, 6) + 1;\n  *(_DWORD *)(v2 + 20) = v16;\n  v17 = 0;\n  *(_QWORD *)(v2 + 64) = sub_1800182F0((unsigned int)(40 * v16));\n  if ( *(int *)(v2 + 20) > 0 )\n  {\n    while ( !(unsigned int)sub_180009F30(*(_QWORD *)(v2 + 64) + 40LL * v17, a1, a2) )\n    {\n      if ( ++v17 >= *(_DWORD *)(v2 + 20) )\n        goto LABEL_19;\n    }\n    return 4294967163LL;\n  }\nLABEL_19:\n  v18 = sub_180001340((__int64)a2, 6) + 1;\n  *(_DWORD *)(v2 + 12) = v18;\n  v19 = 0;\n  *(_QWORD *)(v2 + 40) = sub_1800182F0((unsigned int)(40 * v18));\n  if ( *(int *)(v2 + 12) > 0 )\n  {\n    while ( !(unsigned int)sub_180001340((__int64)a2, 16)\n         && !(unsigned int)sub_180007E10(*(_QWORD *)(v2 + 40) + 40LL * v19, a1, a2) )\n    {\n      if ( ++v19 >= *(_DWORD *)(v2 + 12) )\n        goto LABEL_23;\n    }\n    return 4294967163LL;\n  }\nLABEL_23:\n  v20 = sub_180001340((__int64)a2, 6);\n  *(_DWORD *)(v2 + 8) = v20 + 1;\n  *(_QWORD *)(v2 + 32) = sub_1800182F0((unsigned int)(2 * (v20 + 1)));\n  if ( *(int *)(v2 + 8) > 0 )\n  {\n    v21 = 0;\n    do\n    {\n      *(_BYTE *)(v21 + *(_QWORD *)(v2 + 32)) = sub_180001340((__int64)a2, 1);\n      if ( (unsigned int)sub_180001340((__int64)a2, 16) )\n        return 4294967163LL;\n      if ( (unsigned int)sub_180001340((__int64)a2, 16) )\n        return 4294967163LL;\n      *(_BYTE *)(v21 + *(_QWORD *)(v2 + 32) + 1) = sub_180001340((__int64)a2, 8);\n      if ( *(unsigned __int8 *)(v21 + *(_QWORD *)(v2 + 32) + 1) >= *(int *)(v2 + 12) )\n        return 4294967163LL;\n      ++v7;\n      v21 += 2;\n    }\n    while ( v7 < *(_DWORD *)(v2 + 8) );\n  }\n  if ( (unsigned int)sub_180001340((__int64)a2, 1) != 1 )\n    return 4294967163LL;\n  return 0;\n}", "assembly": "; \n; sub_180007790 from 0x180007790 to 0x180007a63 (723 bytes)\n; \n; 2 xrefs:\n; > sub_180017630 @ 0x180017929\n; > <???> @ 0x1801f639c\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\npush    rbx                                                            ; +0x0, 0x180007790\npush    rdi                                                            ; +0x2, 0x180007792\npush    r15                                                            ; +0x3, 0x180007793\nsub     rsp, 20h                                                       ; +0x5, 0x180007795\nmov     rbx, [rcx+20h]                                                 ; +0x9, 0x180007799\nmov     rdi, rdx                                                       ; +0xd, 0x18000779d\nmov     r15, rcx                                                       ; +0x10, 0x1800077a0\ntest    rbx, rbx                                                       ; +0x13, 0x1800077a3\njnz     short loc_1800077B6                                            ; +0x16, 0x1800077a6\nmov     eax, 0FFFFFF7Fh                                                ; +0x18, 0x1800077a8\nadd     rsp, 20h                                                       ; +0x1d, 0x1800077ad\npop     r15                                                            ; +0x21, 0x1800077b1\npop     rdi                                                            ; +0x23, 0x1800077b3\npop     rbx                                                            ; +0x24, 0x1800077b4\nretn                                                                   ; +0x25, 0x1800077b5\nmov     [rsp+38h+arg_0], rbp                                           ; +0x26, 0x1800077b6\nmov     edx, 8                                                         ; +0x2b, 0x1800077bb\nmov     [rsp+38h+arg_8], rsi                                           ; +0x30, 0x1800077c0\nmov     rcx, rdi                                                       ; +0x35, 0x1800077c5\nmov     [rsp+38h+arg_10], r14                                          ; +0x38, 0x1800077c8\ncall    sub_180001340                                                  ; +0x3d, 0x1800077cd\ninc     eax                                                            ; +0x42, 0x1800077d2\nmov     ecx, 10h                                                       ; +0x44, 0x1800077d4\nimul    edx, eax, 78h ; 'x'                                            ; +0x49, 0x1800077d9\nmov     [rbx+18h], eax                                                 ; +0x4c, 0x1800077dc\ncall    sub_180018340                                                  ; +0x4f, 0x1800077df\nxor     ebp, ebp                                                       ; +0x54, 0x1800077e4\nmov     [rbx+48h], rax                                                 ; +0x56, 0x1800077e6\nmov     esi, ebp                                                       ; +0x5a, 0x1800077ea\ncmp     [rbx+18h], ebp                                                 ; +0x5c, 0x1800077ec\njle     short loc_180007813                                            ; +0x5f, 0x1800077ef\nmovsxd  rax, esi                                                       ; +0x61, 0x1800077f1\nmov     rcx, rdi                                                       ; +0x64, 0x1800077f4\nimul    rdx, rax, 78h ; 'x'                                            ; +0x67, 0x1800077f7\nadd     rdx, [rbx+48h]                                                 ; +0x6b, 0x1800077fb\ncall    sub_180001A10                                                  ; +0x6f, 0x1800077ff\ntest    eax, eax                                                       ; +0x74, 0x180007804\njnz     loc_180007A42                                                  ; +0x76, 0x180007806\ninc     esi                                                            ; +0x7c, 0x18000780c\ncmp     esi, [rbx+18h]                                                 ; +0x7e, 0x18000780e\njl      short loc_1800077F1                                            ; +0x81, 0x180007811\nmov     edx, 6                                                         ; +0x83, 0x180007813\nmov     rcx, rdi                                                       ; +0x88, 0x180007818\ncall    sub_180001340                                                  ; +0x8b, 0x18000781b\nmov     esi, eax                                                       ; +0x90, 0x180007820\ntest    eax, eax                                                       ; +0x92, 0x180007822\njs      short loc_18000784A                                            ; +0x94, 0x180007824\nnop     word ptr [rax+rax+00000000h]                                   ; +0x96, 0x180007826\nmov     edx, 10h                                                       ; +0xa0, 0x180007830\nmov     rcx, rdi                                                       ; +0xa5, 0x180007835\ncall    sub_180001340                                                  ; +0xa8, 0x180007838\ntest    eax, eax                                                       ; +0xad, 0x18000783d\njnz     loc_180007A42                                                  ; +0xaf, 0x18000783f\nsub     esi, 1                                                         ; +0xb5, 0x180007845\njns     short loc_180007830                                            ; +0xb8, 0x180007848\nmov     edx, 6                                                         ; +0xba, 0x18000784a\nmov     rcx, rdi                                                       ; +0xbf, 0x18000784f\ncall    sub_180001340                                                  ; +0xc2, 0x180007852\nlea     ecx, [rax+1]                                                   ; +0xc7, 0x180007857\nmov     [rbx+10h], ecx                                                 ; +0xca, 0x18000785a\nlea     ecx, ds:0[rcx*8]                                               ; +0xcd, 0x18000785d\ncall    sub_1800182F0                                                  ; +0xd4, 0x180007864\nmov     ecx, [rbx+10h]                                                 ; +0xd9, 0x180007869\nmov     [rbx+38h], rax                                                 ; +0xdc, 0x18000786c\ncall    sub_1800182F0                                                  ; +0xe0, 0x180007870\nmov     r14d, ebp                                                      ; +0xe5, 0x180007875\nmov     [rbx+30h], rax                                                 ; +0xe8, 0x180007878\ncmp     [rbx+10h], ebp                                                 ; +0xec, 0x18000787c\njle     short loc_1800078E6                                            ; +0xef, 0x18000787f\nmov     rsi, rbp                                                       ; +0xf1, 0x180007881\nnop     dword ptr [rax+00h]                                            ; +0xf4, 0x180007884\nnop     dword ptr [rax+rax+00000000h]                                  ; +0xf8, 0x180007888\nmov     edx, 10h                                                       ; +0x100, 0x180007890\nmov     rcx, rdi                                                       ; +0x105, 0x180007895\ncall    sub_180001340                                                  ; +0x108, 0x180007898\nmov     rcx, [rbx+30h]                                                 ; +0x10d, 0x18000789d\nmov     [rsi+rcx], al                                                  ; +0x111, 0x1800078a1\nmov     rax, [rbx+30h]                                                 ; +0x114, 0x1800078a4\nmovzx   ecx, byte ptr [rsi+rax]                                        ; +0x118, 0x1800078a8\ncmp     cl, 1                                                          ; +0x11c, 0x1800078ac\nja      loc_180007A42                                                  ; +0x11f, 0x1800078af\ntest    cl, cl                                                         ; +0x125, 0x1800078b5\njz      short loc_1800078CC                                            ; +0x127, 0x1800078b7\nmov     rdx, rdi                                                       ; +0x129, 0x1800078b9\nmov     rcx, r15                                                       ; +0x12c, 0x1800078bc\ncall    sub_180006640                                                  ; +0x12f, 0x1800078bf\nmov     rcx, [rbx+38h]                                                 ; +0x134, 0x1800078c4\nmov     [rcx+rsi*8], rax                                               ; +0x138, 0x1800078c8\nmov     rax, [rbx+38h]                                                 ; +0x13c, 0x1800078cc\ncmp     [rax+rsi*8], rbp                                               ; +0x140, 0x1800078d0\njz      loc_180007A42                                                  ; +0x144, 0x1800078d4\ninc     r14d                                                           ; +0x14a, 0x1800078da\ninc     rsi                                                            ; +0x14d, 0x1800078dd\ncmp     r14d, [rbx+10h]                                                ; +0x150, 0x1800078e0\njl      short loc_180007890                                            ; +0x154, 0x1800078e4\nmov     edx, 6                                                         ; +0x156, 0x1800078e6\nmov     rcx, rdi                                                       ; +0x15b, 0x1800078eb\ncall    sub_180001340                                                  ; +0x15e, 0x1800078ee\ninc     eax                                                            ; +0x163, 0x1800078f3\nmov     [rbx+14h], eax                                                 ; +0x165, 0x1800078f5\nlea     ecx, [rax+rax*4]                                               ; +0x168, 0x1800078f8\nshl     ecx, 3                                                         ; +0x16b, 0x1800078fb\ncall    sub_1800182F0                                                  ; +0x16e, 0x1800078fe\nmov     esi, ebp                                                       ; +0x173, 0x180007903\nmov     [rbx+40h], rax                                                 ; +0x175, 0x180007905\ncmp     [rbx+14h], ebp                                                 ; +0x179, 0x180007909\njle     short loc_180007939                                            ; +0x17c, 0x18000790c\nxchg    ax, ax                                                         ; +0x17e, 0x18000790e\nmovsxd  rax, esi                                                       ; +0x180, 0x180007910\nmov     r8, rdi                                                        ; +0x183, 0x180007913\nmov     rdx, r15                                                       ; +0x186, 0x180007916\nlea     rcx, [rax+rax*4]                                               ; +0x189, 0x180007919\nmov     rax, [rbx+40h]                                                 ; +0x18d, 0x18000791d\nlea     rcx, [rax+rcx*8]                                               ; +0x191, 0x180007921\ncall    sub_180009F30                                                  ; +0x195, 0x180007925\ntest    eax, eax                                                       ; +0x19a, 0x18000792a\njnz     loc_180007A42                                                  ; +0x19c, 0x18000792c\ninc     esi                                                            ; +0x1a2, 0x180007932\ncmp     esi, [rbx+14h]                                                 ; +0x1a4, 0x180007934\njl      short loc_180007910                                            ; +0x1a7, 0x180007937\nmov     edx, 6                                                         ; +0x1a9, 0x180007939\nmov     rcx, rdi                                                       ; +0x1ae, 0x18000793e\ncall    sub_180001340                                                  ; +0x1b1, 0x180007941\ninc     eax                                                            ; +0x1b6, 0x180007946\nmov     [rbx+0Ch], eax                                                 ; +0x1b8, 0x180007948\nlea     ecx, [rax+rax*4]                                               ; +0x1bb, 0x18000794b\nshl     ecx, 3                                                         ; +0x1be, 0x18000794e\ncall    sub_1800182F0                                                  ; +0x1c1, 0x180007951\nmov     esi, ebp                                                       ; +0x1c6, 0x180007956\nmov     [rbx+28h], rax                                                 ; +0x1c8, 0x180007958\ncmp     [rbx+0Ch], ebp                                                 ; +0x1cc, 0x18000795c\njle     short loc_18000799F                                            ; +0x1cf, 0x18000795f\nmov     edx, 10h                                                       ; +0x1d1, 0x180007961\nmov     rcx, rdi                                                       ; +0x1d6, 0x180007966\ncall    sub_180001340                                                  ; +0x1d9, 0x180007969\ntest    eax, eax                                                       ; +0x1de, 0x18000796e\njnz     loc_180007A42                                                  ; +0x1e0, 0x180007970\nmovsxd  rax, esi                                                       ; +0x1e6, 0x180007976\nmov     r8, rdi                                                        ; +0x1e9, 0x180007979\nmov     rdx, r15                                                       ; +0x1ec, 0x18000797c\nlea     rcx, [rax+rax*4]                                               ; +0x1ef, 0x18000797f\nmov     rax, [rbx+28h]                                                 ; +0x1f3, 0x180007983\nlea     rcx, [rax+rcx*8]                                               ; +0x1f7, 0x180007987\ncall    sub_180007E10                                                  ; +0x1fb, 0x18000798b\ntest    eax, eax                                                       ; +0x200, 0x180007990\njnz     loc_180007A42                                                  ; +0x202, 0x180007992\ninc     esi                                                            ; +0x208, 0x180007998\ncmp     esi, [rbx+0Ch]                                                 ; +0x20a, 0x18000799a\njl      short loc_180007961                                            ; +0x20d, 0x18000799d\nmov     edx, 6                                                         ; +0x20f, 0x18000799f\nmov     rcx, rdi                                                       ; +0x214, 0x1800079a4\ncall    sub_180001340                                                  ; +0x217, 0x1800079a7\nlea     ecx, [rax+1]                                                   ; +0x21c, 0x1800079ac\nmov     [rbx+8], ecx                                                   ; +0x21f, 0x1800079af\nadd     ecx, ecx                                                       ; +0x222, 0x1800079b2\ncall    sub_1800182F0                                                  ; +0x224, 0x1800079b4\nmov     [rbx+20h], rax                                                 ; +0x229, 0x1800079b9\ncmp     [rbx+8], ebp                                                   ; +0x22d, 0x1800079bd\njle     short loc_180007A30                                            ; +0x230, 0x1800079c0\nmov     rsi, rbp                                                       ; +0x232, 0x1800079c2\nnop     word ptr [rax+rax+00000000h]                                   ; +0x235, 0x1800079c5\nmov     edx, 1                                                         ; +0x240, 0x1800079d0\nmov     rcx, rdi                                                       ; +0x245, 0x1800079d5\ncall    sub_180001340                                                  ; +0x248, 0x1800079d8\nmov     rcx, [rbx+20h]                                                 ; +0x24d, 0x1800079dd\nmov     edx, 10h                                                       ; +0x251, 0x1800079e1\nmov     [rsi+rcx], al                                                  ; +0x256, 0x1800079e6\nmov     rcx, rdi                                                       ; +0x259, 0x1800079e9\ncall    sub_180001340                                                  ; +0x25c, 0x1800079ec\ntest    eax, eax                                                       ; +0x261, 0x1800079f1\njnz     short loc_180007A42                                            ; +0x263, 0x1800079f3\nlea     edx, [rax+10h]                                                 ; +0x265, 0x1800079f5\nmov     rcx, rdi                                                       ; +0x268, 0x1800079f8\ncall    sub_180001340                                                  ; +0x26b, 0x1800079fb\ntest    eax, eax                                                       ; +0x270, 0x180007a00\njnz     short loc_180007A42                                            ; +0x272, 0x180007a02\nlea     edx, [rax+8]                                                   ; +0x274, 0x180007a04\nmov     rcx, rdi                                                       ; +0x277, 0x180007a07\ncall    sub_180001340                                                  ; +0x27a, 0x180007a0a\nmov     rcx, [rbx+20h]                                                 ; +0x27f, 0x180007a0f\nmov     [rsi+rcx+1], al                                                ; +0x283, 0x180007a13\nmov     rax, [rbx+20h]                                                 ; +0x287, 0x180007a17\nmovzx   ecx, byte ptr [rsi+rax+1]                                      ; +0x28b, 0x180007a1b\ncmp     ecx, [rbx+0Ch]                                                 ; +0x290, 0x180007a20\njge     short loc_180007A42                                            ; +0x293, 0x180007a23\ninc     ebp                                                            ; +0x295, 0x180007a25\nadd     rsi, 2                                                         ; +0x297, 0x180007a27\ncmp     ebp, [rbx+8]                                                   ; +0x29b, 0x180007a2b\njl      short loc_1800079D0                                            ; +0x29e, 0x180007a2e\nmov     edx, 1                                                         ; +0x2a0, 0x180007a30\nmov     rcx, rdi                                                       ; +0x2a5, 0x180007a35\ncall    sub_180001340                                                  ; +0x2a8, 0x180007a38\ncmp     eax, 1                                                         ; +0x2ad, 0x180007a3d\njz      short loc_180007A49                                            ; +0x2b0, 0x180007a40\nmov     eax, 0FFFFFF7Bh                                                ; +0x2b2, 0x180007a42\njmp     short loc_180007A4B                                            ; +0x2b7, 0x180007a47\nxor     eax, eax                                                       ; +0x2b9, 0x180007a49\nmov     rsi, [rsp+38h+arg_8]                                           ; +0x2bb, 0x180007a4b\nmov     rbp, [rsp+38h+arg_0]                                           ; +0x2c0, 0x180007a50\nmov     r14, [rsp+38h+arg_10]                                          ; +0x2c5, 0x180007a55\nadd     rsp, 20h                                                       ; +0x2ca, 0x180007a5a\npop     r15                                                            ; +0x2ce, 0x180007a5e\npop     rdi                                                            ; +0x2d0, 0x180007a60\npop     rbx                                                            ; +0x2d1, 0x180007a61\nretn                                                                   ; +0x2d2, 0x180007a62", "xrefs": ["sub_180017630 @ 0x180017929", "<???> @ 0x1801f639c"], "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"}