{"type": "func", "start": 6443632220, "end": 6443632359, "name": "__scrt_initialize_onexit_tables", "pseudocode": "// \n// __scrt_initialize_onexit_tables from 0x18012065c to 0x1801206e7 (139 bytes)\n// \n// 3 xrefs:\n// > __scrt_dllmain_before_initialize_c @ 0x18012051a\n// > __scrt_initialize_thread_safe_statics @ 0x1801208c7\n// > <???> @ 0x1802024e0\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 __fastcall _scrt_initialize_onexit_tables(unsigned int a1)\n{\n  int v2; // eax\n\n  if ( !byte_1801F49A9 )\n  {\n    if ( a1 > 1 )\n    {\n      _scrt_fastfail(5);\n      JUMPOUT(0x1801206E6LL);\n    }\n    LOBYTE(v2) = __uncaught_exception();\n    if ( !v2 || a1 )\n    {\n      *(__m128i *)&Table._first = _mm_load_si128((const __m128i *)&xmmword_1801651D0);\n      Table._end = (_PVFV *)-1LL;\n      *(_OWORD *)&stru_1801F49C8._first = *(_OWORD *)&Table._first;\n      stru_1801F49C8._end = (_PVFV *)-1LL;\n    }\n    else if ( initialize_onexit_table(&Table) || initialize_onexit_table(&stru_1801F49C8) )\n    {\n      return 0;\n    }\n    byte_1801F49A9 = 1;\n  }\n  return 1;\n}", "assembly": "; \n; __scrt_initialize_onexit_tables from 0x18012065c to 0x1801206e7 (139 bytes)\n; \n; 3 xrefs:\n; > __scrt_dllmain_before_initialize_c @ 0x18012051a\n; > __scrt_initialize_thread_safe_statics @ 0x1801208c7\n; > <???> @ 0x1802024e0\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, 0x18012065c\nsub     rsp, 20h                                                       ; +0x2, 0x18012065e\ncmp     cs:byte_1801F49A9, 0                                           ; +0x6, 0x180120662\nmov     ebx, ecx                                                       ; +0xd, 0x180120669\njnz     short loc_1801206D4                                            ; +0xf, 0x18012066b\ncmp     ecx, 1                                                         ; +0x11, 0x18012066d\nja      short loc_1801206DC                                            ; +0x14, 0x180120670\ncall    ?__uncaught_exception@@YA_NXZ                                  ; +0x16, 0x180120672\ntest    eax, eax                                                       ; +0x1b, 0x180120677\njz      short loc_1801206A3                                            ; +0x1d, 0x180120679\ntest    ebx, ebx                                                       ; +0x1f, 0x18012067b\njnz     short loc_1801206A3                                            ; +0x21, 0x18012067d\nlea     rcx, Table; Table                                              ; +0x23, 0x18012067f\ncall    _initialize_onexit_table                                       ; +0x2a, 0x180120686\ntest    eax, eax                                                       ; +0x2f, 0x18012068b\njnz     short loc_18012069F                                            ; +0x31, 0x18012068d\nlea     rcx, stru_1801F49C8; Table                                     ; +0x33, 0x18012068f\ncall    _initialize_onexit_table                                       ; +0x3a, 0x180120696\ntest    eax, eax                                                       ; +0x3f, 0x18012069b\njz      short loc_1801206CD                                            ; +0x41, 0x18012069d\nxor     al, al                                                         ; +0x43, 0x18012069f\njmp     short loc_1801206D6                                            ; +0x45, 0x1801206a1\nmovdqa  xmm0, cs:xmmword_1801651D0                                     ; +0x47, 0x1801206a3\nor      rax, 0FFFFFFFFFFFFFFFFh                                        ; +0x4f, 0x1801206ab\nmovdqu  xmmword ptr cs:Table._first, xmm0                              ; +0x53, 0x1801206af\nmov     cs:Table._end, rax                                             ; +0x5b, 0x1801206b7\nmovdqu  xmmword ptr cs:stru_1801F49C8._first, xmm0                     ; +0x62, 0x1801206be\nmov     cs:stru_1801F49C8._end, rax                                    ; +0x6a, 0x1801206c6\nmov     cs:byte_1801F49A9, 1                                           ; +0x71, 0x1801206cd\nmov     al, 1                                                          ; +0x78, 0x1801206d4\nadd     rsp, 20h                                                       ; +0x7a, 0x1801206d6\npop     rbx                                                            ; +0x7e, 0x1801206da\nretn                                                                   ; +0x7f, 0x1801206db\nmov     ecx, 5                                                         ; +0x80, 0x1801206dc\ncall    __scrt_fastfail                                                ; +0x85, 0x1801206e1\ndb 0CCh                                                                ; +0x8a, 0x1801206e6", "xrefs": ["__scrt_dllmain_before_initialize_c @ 0x18012051a", "__scrt_initialize_thread_safe_statics @ 0x1801208c7", "<???> @ 0x1802024e0"], "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"}