{"type": "func", "start": 6443715360, "end": 6443715590, "name": "__crt_win32_buffer<wchar_t,__crt_win32_buffer_public_dynamic_resizing>::detach", "pseudocode": "// \n// __crt_win32_buffer<wchar_t,__crt_win32_buffer_public_dynamic_resizing>::detach from 0x180134b20 to 0x180134c06 (230 bytes)\n// \n// 3 xrefs:\n// > _wfullpath @ 0x180134c75\n// > common_getdcwd<wchar_t> @ 0x18013bfb8\n// > <???> @ 0x1802032c0\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 __crt_win32_buffer<wchar_t,__crt_win32_buffer_public_dynamic_resizing>::detach(__int64 *a1)\n{\n  __int64 v1; // rdi\n  __int64 v3; // rcx\n  void *v4; // rax\n  unsigned __int64 v5; // rsi\n  __int64 v6; // r14\n  unsigned __int64 v7; // rbp\n  __int64 v8; // rax\n\n  v1 = a1[2];\n  if ( v1 )\n  {\n    v3 = a1[4];\n    if ( v3 )\n    {\n      if ( *((_BYTE *)a1 + 40) )\n        goto LABEL_14;\n      v4 = j__malloc_base(2 * v3);\n      v5 = a1[3];\n      v1 = (__int64)v4;\n      v6 = a1[2];\n      v7 = a1[4];\n      if ( !v5 )\n        goto LABEL_14;\n      if ( !v4 )\n        goto LABEL_6;\n      if ( v6 && v7 >= v5 )\n      {\n        memmove(v4, (const void *)a1[2], a1[3]);\n      }\n      else\n      {\n        memset(v4, 0, a1[4]);\n        if ( !v6 )\n        {\nLABEL_6:\n          *errno() = 22;\nLABEL_13:\n          invalid_parameter_noinfo();\n          goto LABEL_14;\n        }\n        if ( v7 < v5 )\n        {\n          *errno() = 34;\n          goto LABEL_13;\n        }\n      }\nLABEL_14:\n      v8 = *a1;\n      a1[4] = 0;\n      a1[2] = v8;\n      a1[3] = a1[1];\n      return v1;\n    }\n  }\n  return 0;\n}", "assembly": "; \n; __crt_win32_buffer<wchar_t,__crt_win32_buffer_public_dynamic_resizing>::detach from 0x180134b20 to 0x180134c06 (230 bytes)\n; \n; 3 xrefs:\n; > _wfullpath @ 0x180134c75\n; > common_getdcwd<wchar_t> @ 0x18013bfb8\n; > <???> @ 0x1802032c0\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     rax, rsp                                                       ; +0x0, 0x180134b20\nmov     [rax+8], rbx                                                   ; +0x3, 0x180134b23\nmov     [rax+10h], rbp                                                 ; +0x7, 0x180134b27\nmov     [rax+18h], rsi                                                 ; +0xb, 0x180134b2b\nmov     [rax+20h], rdi                                                 ; +0xf, 0x180134b2f\npush    r14                                                            ; +0x13, 0x180134b33\nsub     rsp, 20h                                                       ; +0x15, 0x180134b35\nmov     rdi, [rcx+10h]                                                 ; +0x19, 0x180134b39\nmov     rbx, rcx                                                       ; +0x1d, 0x180134b3d\ntest    rdi, rdi                                                       ; +0x20, 0x180134b40\njz      loc_180134BE9                                                  ; +0x23, 0x180134b43\nmov     rcx, [rcx+20h]                                                 ; +0x29, 0x180134b49\ntest    rcx, rcx                                                       ; +0x2d, 0x180134b4d\njz      loc_180134BE9                                                  ; +0x30, 0x180134b50\ncmp     byte ptr [rbx+28h], 0                                          ; +0x36, 0x180134b56\njnz     short loc_180134BD0                                            ; +0x3a, 0x180134b5a\ntest    rcx, rcx                                                       ; +0x3c, 0x180134b5c\njz      short loc_180134BD0                                            ; +0x3f, 0x180134b5f\nadd     rcx, rcx; Size                                                 ; +0x41, 0x180134b61\ncall    j__malloc_base                                                 ; +0x44, 0x180134b64\nmov     rsi, [rbx+18h]                                                 ; +0x49, 0x180134b69\nmov     rdi, rax                                                       ; +0x4d, 0x180134b6d\nmov     r14, [rbx+10h]                                                 ; +0x50, 0x180134b70\nmov     rbp, [rbx+20h]                                                 ; +0x54, 0x180134b74\ntest    rsi, rsi                                                       ; +0x58, 0x180134b78\njz      short loc_180134BD0                                            ; +0x5b, 0x180134b7b\ntest    rax, rax                                                       ; +0x5d, 0x180134b7d\njnz     short loc_180134B8F                                            ; +0x60, 0x180134b80\ncall    _errno                                                         ; +0x62, 0x180134b82\nmov     dword ptr [rax], 16h                                           ; +0x67, 0x180134b87\njmp     short loc_180134BCB                                            ; +0x6d, 0x180134b8d\ntest    r14, r14                                                       ; +0x6f, 0x180134b8f\njz      short loc_180134BA9                                            ; +0x72, 0x180134b92\ncmp     rbp, rsi                                                       ; +0x74, 0x180134b94\njb      short loc_180134BA9                                            ; +0x77, 0x180134b97\nmov     r8, rsi; Size                                                  ; +0x79, 0x180134b99\nmov     rdx, r14; Src                                                  ; +0x7c, 0x180134b9c\nmov     rcx, rax; void *                                               ; +0x7f, 0x180134b9f\ncall    memmove                                                        ; +0x82, 0x180134ba2\njmp     short loc_180134BD0                                            ; +0x87, 0x180134ba7\nmov     r8, rbp; Size                                                  ; +0x89, 0x180134ba9\nxor     edx, edx; Val                                                  ; +0x8c, 0x180134bac\nmov     rcx, rax; void *                                               ; +0x8e, 0x180134bae\ncall    memset                                                         ; +0x91, 0x180134bb1\ntest    r14, r14                                                       ; +0x96, 0x180134bb6\njz      short loc_180134B82                                            ; +0x99, 0x180134bb9\ncmp     rbp, rsi                                                       ; +0x9b, 0x180134bbb\njnb     short loc_180134BD0                                            ; +0x9e, 0x180134bbe\ncall    _errno                                                         ; +0xa0, 0x180134bc0\nmov     dword ptr [rax], 22h ; '\"'                                     ; +0xa5, 0x180134bc5\ncall    _invalid_parameter_noinfo                                      ; +0xab, 0x180134bcb\nmov     rax, [rbx]                                                     ; +0xb0, 0x180134bd0\nand     qword ptr [rbx+20h], 0                                         ; +0xb3, 0x180134bd3\nmov     [rbx+10h], rax                                                 ; +0xb8, 0x180134bd8\nmov     rax, [rbx+8]                                                   ; +0xbc, 0x180134bdc\nmov     [rbx+18h], rax                                                 ; +0xc0, 0x180134be0\nmov     rax, rdi                                                       ; +0xc4, 0x180134be4\njmp     short loc_180134BEB                                            ; +0xc7, 0x180134be7\nxor     eax, eax                                                       ; +0xc9, 0x180134be9\nmov     rbx, [rsp+28h+arg_0]                                           ; +0xcb, 0x180134beb\nmov     rbp, [rsp+28h+arg_8]                                           ; +0xd0, 0x180134bf0\nmov     rsi, [rsp+28h+arg_10]                                          ; +0xd5, 0x180134bf5\nmov     rdi, [rsp+28h+arg_18]                                          ; +0xda, 0x180134bfa\nadd     rsp, 20h                                                       ; +0xdf, 0x180134bff\npop     r14                                                            ; +0xe3, 0x180134c03\nretn                                                                   ; +0xe5, 0x180134c05", "xrefs": ["_wfullpath @ 0x180134c75", "common_getdcwd<wchar_t> @ 0x18013bfb8", "<???> @ 0x1802032c0"], "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"}