{"type": "func", "start": 6443631780, "end": 6443631837, "name": "__scrt_acquire_startup_lock", "pseudocode": "// \n// __scrt_acquire_startup_lock from 0x1801204a4 to 0x1801204dd (57 bytes)\n// \n// 3 xrefs:\n// > dllmain_crt_process_attach @ 0x180120b06\n// > dllmain_crt_process_detach @ 0x180120c20\n// > <???> @ 0x180202474\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\nchar _scrt_acquire_startup_lock()\n{\n  int v0; // eax\n  PVOID StackBase; // rcx\n  signed __int64 v2; // rax\n\n  LOBYTE(v0) = __uncaught_exception();\n  if ( v0 )\n  {\n    StackBase = NtCurrentTeb()->NtTib.StackBase;\n    while ( 1 )\n    {\n      v2 = _InterlockedCompareExchange64(&qword_1801F49A0, (signed __int64)StackBase, 0);\n      if ( !v2 )\n        break;\n      if ( StackBase == (PVOID)v2 )\n        return 1;\n    }\n  }\n  return 0;\n}", "assembly": "; \n; __scrt_acquire_startup_lock from 0x1801204a4 to 0x1801204dd (57 bytes)\n; \n; 3 xrefs:\n; > dllmain_crt_process_attach @ 0x180120b06\n; > dllmain_crt_process_detach @ 0x180120c20\n; > <???> @ 0x180202474\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\nsub     rsp, 28h                                                       ; +0x0, 0x1801204a4\ncall    ?__uncaught_exception@@YA_NXZ                                  ; +0x4, 0x1801204a8\ntest    eax, eax                                                       ; +0x9, 0x1801204ad\njz      short loc_1801204D2                                            ; +0xb, 0x1801204af\nmov     rax, gs:30h                                                    ; +0xd, 0x1801204b1\nmov     rcx, [rax+8]                                                   ; +0x16, 0x1801204ba\njmp     short loc_1801204C5                                            ; +0x1a, 0x1801204be\ncmp     rcx, rax                                                       ; +0x1c, 0x1801204c0\njz      short loc_1801204D9                                            ; +0x1f, 0x1801204c3\nxor     eax, eax                                                       ; +0x21, 0x1801204c5\nlock cmpxchg cs:qword_1801F49A0, rcx                                   ; +0x23, 0x1801204c7\njnz     short loc_1801204C0                                            ; +0x2c, 0x1801204d0\nxor     al, al                                                         ; +0x2e, 0x1801204d2\nadd     rsp, 28h                                                       ; +0x30, 0x1801204d4\nretn                                                                   ; +0x34, 0x1801204d8\nmov     al, 1                                                          ; +0x35, 0x1801204d9\njmp     short loc_1801204D4                                            ; +0x37, 0x1801204db", "xrefs": ["dllmain_crt_process_attach @ 0x180120b06", "dllmain_crt_process_detach @ 0x180120c20", "<???> @ 0x180202474"], "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"}