{"type": "func", "start": 6443698668, "end": 6443698765, "name": "common_end_thread", "pseudocode": "// \n// common_end_thread from 0x1801309ec to 0x180130a4d (97 bytes)\n// \n// 2 xrefs:\n// > _endthreadex @ 0x180130b88\n// > <???> @ 0x180202e64\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\nvoid __fastcall __noreturn common_end_thread(DWORD dwExitCode)\n{\n  __int64 v2; // rax\n  __int64 v3; // rbx\n  char *v4; // rcx\n  HMODULE v5; // rcx\n\n  v2 = _acrt_getptd_noexit();\n  if ( v2 )\n  {\n    v3 = *(_QWORD *)(v2 + 960);\n    if ( v3 )\n    {\n      if ( *(_BYTE *)(v3 + 32) )\n        _acrt_RoUninitialize();\n      v4 = *(char **)(v3 + 16);\n      if ( (unsigned __int64)(v4 - 1) <= 0xFFFFFFFFFFFFFFFDuLL )\n        CloseHandle(v4);\n      v5 = *(HMODULE *)(v3 + 24);\n      if ( (unsigned __int64)v5 - 1 <= 0xFFFFFFFFFFFFFFFDuLL )\n        FreeLibraryAndExitThread(v5, dwExitCode);\n    }\n  }\n  ExitThread(dwExitCode);\n}", "assembly": "; \n; common_end_thread from 0x1801309ec to 0x180130a4d (97 bytes)\n; \n; 2 xrefs:\n; > _endthreadex @ 0x180130b88\n; > <???> @ 0x180202e64\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, 0x1801309ec\npush    rdi                                                            ; +0x5, 0x1801309f1\nsub     rsp, 20h                                                       ; +0x6, 0x1801309f2\nmov     edi, ecx                                                       ; +0xa, 0x1801309f6\ncall    __acrt_getptd_noexit                                           ; +0xc, 0x1801309f8\ntest    rax, rax                                                       ; +0x11, 0x1801309fd\njz      short loc_180130A44                                            ; +0x14, 0x180130a00\nmov     rbx, [rax+3C0h]                                                ; +0x16, 0x180130a02\ntest    rbx, rbx                                                       ; +0x1d, 0x180130a09\njz      short loc_180130A44                                            ; +0x20, 0x180130a0c\ncmp     byte ptr [rbx+20h], 0                                          ; +0x22, 0x180130a0e\njz      short loc_180130A19                                            ; +0x26, 0x180130a12\ncall    __acrt_RoUninitialize                                          ; +0x28, 0x180130a14\nmov     rcx, [rbx+10h]; hObject                                        ; +0x2d, 0x180130a19\nlea     rax, [rcx-1]                                                   ; +0x31, 0x180130a1d\ncmp     rax, 0FFFFFFFFFFFFFFFDh                                        ; +0x35, 0x180130a21\nja      short loc_180130A2D                                            ; +0x39, 0x180130a25\ncall    cs:CloseHandle                                                 ; +0x3b, 0x180130a27\nmov     rcx, [rbx+18h]; hLibModule                                     ; +0x41, 0x180130a2d\nlea     rax, [rcx-1]                                                   ; +0x45, 0x180130a31\ncmp     rax, 0FFFFFFFFFFFFFFFDh                                        ; +0x49, 0x180130a35\nja      short loc_180130A44                                            ; +0x4d, 0x180130a39\nmov     edx, edi; dwExitCode                                           ; +0x4f, 0x180130a3b\ncall    cs:FreeLibraryAndExitThread                                    ; +0x51, 0x180130a3d\nalign 4                                                                ; +0x57, 0x180130a43\nmov     ecx, edi; dwExitCode                                           ; +0x58, 0x180130a44\ncall    cs:ExitThread                                                  ; +0x5a, 0x180130a46\ndb 0CCh                                                                ; +0x60, 0x180130a4c", "xrefs": ["_endthreadex @ 0x180130b88", "<???> @ 0x180202e64"], "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"}