lhmouse / mcfgthread

Cornerstone of the MOST efficient std::thread on Windows for mingw-w64
https://gcc-mcf.lhmouse.com/
Other
269 stars 28 forks source link

fwd: Modernize `__MCF_runtime_failure()` #264

Closed lhmouse closed 4 days ago

lhmouse commented 4 days ago

Closes #263.

lhmouse commented 4 days ago
00000002d62c34a0 <__MCF_runtime_failure>:
   2d62c34a0:   41 55                   push   r13
   2d62c34a2:   41 54                   push   r12
   2d62c34a4:   55                      push   rbp
   2d62c34a5:   57                      push   rdi
   2d62c34a6:   56                      push   rsi
   2d62c34a7:   53                      push   rbx
   2d62c34a8:   48 81 ec 98 0c 00 00    sub    rsp,0xc98
   2d62c34af:   49 89 cd                mov    r13,rcx
   2d62c34b2:   48 8d 9c 24 90 00 00    lea    rbx,[rsp+0x90]
   2d62c34b9:   00 
   2d62c34ba:   ff 15 18 5d 00 00       call   QWORD PTR [rip+0x5d18]        # 2d62c91d8 <__imp_GetLastError>
   2d62c34c0:   45 31 c9                xor    r9d,r9d
   2d62c34c3:   31 d2                   xor    edx,edx
   2d62c34c5:   48 89 5c 24 58          mov    QWORD PTR [rsp+0x58],rbx
   2d62c34ca:   41 89 c4                mov    r12d,eax
   2d62c34cd:   48 8d 84 24 92 0b 00    lea    rax,[rsp+0xb92]
   2d62c34d4:   00 
   2d62c34d5:   4c 89 4c 24 30          mov    QWORD PTR [rsp+0x30],r9
   2d62c34da:   48 8b 2d e7 5c 00 00    mov    rbp,QWORD PTR [rip+0x5ce7]        # 2d62c91c8 <__imp_FormatMessageW>
   2d62c34e1:   48 89 44 24 20          mov    QWORD PTR [rsp+0x20],rax
   2d62c34e6:   41 b9 00 04 00 00       mov    r9d,0x400
   2d62c34ec:   b9 ff 12 00 00          mov    ecx,0x12ff
   2d62c34f1:   41 b8 3e 02 00 00       mov    r8d,0x23e
   2d62c34f7:   c7 44 24 50 00 00 00    mov    DWORD PTR [rsp+0x50],0xc000000
   2d62c34fe:   0c 
   2d62c34ff:   c7 44 24 28 7f 00 00    mov    DWORD PTR [rsp+0x28],0x7f
   2d62c3506:   00 
   2d62c3507:   ff d5                   call   rbp
   2d62c3509:   85 c0                   test   eax,eax
   2d62c350b:   74 55                   je     2d62c3562 <__MCF_runtime_failure+0xc2>
   2d62c350d:   66 83 bc 24 92 0b 00    cmp    WORD PTR [rsp+0xb92],0x7b
   2d62c3514:   00 7b 
   2d62c3516:   75 4a                   jne    2d62c3562 <__MCF_runtime_failure+0xc2>
   2d62c3518:   48 8d 94 24 94 0b 00    lea    rdx,[rsp+0xb94]
   2d62c351f:   00 
   2d62c3520:   48 8d 8c 24 90 0c 00    lea    rcx,[rsp+0xc90]
   2d62c3527:   00 
   2d62c3528:   66 8b 02                mov    ax,WORD PTR [rdx]
   2d62c352b:   66 85 c0                test   ax,ax
   2d62c352e:   74 25                   je     2d62c3555 <__MCF_runtime_failure+0xb5>
   2d62c3530:   66 83 f8 7d             cmp    ax,0x7d
   2d62c3534:   74 1f                   je     2d62c3555 <__MCF_runtime_failure+0xb5>
   2d62c3536:   48 8d b4 24 90 0c 00    lea    rsi,[rsp+0xc90]
   2d62c353d:   00 
   2d62c353e:   48 83 c2 02             add    rdx,0x2
   2d62c3542:   48 39 f3                cmp    rbx,rsi
   2d62c3545:   74 09                   je     2d62c3550 <__MCF_runtime_failure+0xb0>
   2d62c3547:   66 89 03                mov    WORD PTR [rbx],ax
   2d62c354a:   48 83 c3 02             add    rbx,0x2
   2d62c354e:   eb d8                   jmp    2d62c3528 <__MCF_runtime_failure+0x88>
   2d62c3550:   48 89 cb                mov    rbx,rcx
   2d62c3553:   eb d3                   jmp    2d62c3528 <__MCF_runtime_failure+0x88>
   2d62c3555:   48 89 d8                mov    rax,rbx
   2d62c3558:   48 2b 44 24 58          sub    rax,QWORD PTR [rsp+0x58]
   2d62c355d:   66 89 44 24 50          mov    WORD PTR [rsp+0x50],ax
   2d62c3562:   48 8d 84 24 90 0c 00    lea    rax,[rsp+0xc90]
   2d62c3569:   00 
   2d62c356a:   31 c9                   xor    ecx,ecx
   2d62c356c:   48 89 5c 24 68          mov    QWORD PTR [rsp+0x68],rbx
   2d62c3571:   48 89 da                mov    rdx,rbx
   2d62c3574:   48 29 d8                sub    rax,rbx
   2d62c3577:   66 c7 44 24 60 00 00    mov    WORD PTR [rsp+0x60],0x0
   2d62c357e:   49 89 c0                mov    r8,rax
   2d62c3581:   66 89 44 24 62          mov    WORD PTR [rsp+0x62],ax
   2d62c3586:   49 d1 f8                sar    r8,1
   2d62c3589:   ff 15 51 5c 00 00       call   QWORD PTR [rip+0x5c51]        # 2d62c91e0 <__imp_GetModuleFileNameW>
   2d62c358f:   85 c0                   test   eax,eax
   2d62c3591:   74 4c                   je     2d62c35df <__MCF_runtime_failure+0x13f>
   2d62c3593:   89 c0                   mov    eax,eax
   2d62c3595:   48 8d bc 24 90 0c 00    lea    rdi,[rsp+0xc90]
   2d62c359c:   00 
   2d62c359d:   48 01 c0                add    rax,rax
   2d62c35a0:   48 01 d8                add    rax,rbx
   2d62c35a3:   48 39 f8                cmp    rax,rdi
   2d62c35a6:   75 0a                   jne    2d62c35b2 <__MCF_runtime_failure+0x112>
   2d62c35a8:   48 8d 9c 24 90 0c 00    lea    rbx,[rsp+0xc90]
   2d62c35af:   00 
   2d62c35b0:   eb 20                   jmp    2d62c35d2 <__MCF_runtime_failure+0x132>
   2d62c35b2:   48 8d 50 02             lea    rdx,[rax+0x2]
   2d62c35b6:   48 8d b4 24 90 0c 00    lea    rsi,[rsp+0xc90]
   2d62c35bd:   00 
   2d62c35be:   66 c7 00 0d 00          mov    WORD PTR [rax],0xd
   2d62c35c3:   48 39 d6                cmp    rsi,rdx
   2d62c35c6:   74 e0                   je     2d62c35a8 <__MCF_runtime_failure+0x108>
   2d62c35c8:   66 c7 40 02 0a 00       mov    WORD PTR [rax+0x2],0xa
   2d62c35ce:   48 8d 58 04             lea    rbx,[rax+0x4]
   2d62c35d2:   48 89 d8                mov    rax,rbx
   2d62c35d5:   48 2b 44 24 68          sub    rax,QWORD PTR [rsp+0x68]
   2d62c35da:   66 89 44 24 60          mov    WORD PTR [rsp+0x60],ax
   2d62c35df:   45 31 c0                xor    r8d,r8d
   2d62c35e2:   31 d2                   xor    edx,edx
   2d62c35e4:   41 b9 00 04 00 00       mov    r9d,0x400
   2d62c35ea:   b9 ff 12 00 00          mov    ecx,0x12ff
   2d62c35ef:   48 8d 84 24 92 0b 00    lea    rax,[rsp+0xb92]
   2d62c35f6:   00 
   2d62c35f7:   4c 89 44 24 30          mov    QWORD PTR [rsp+0x30],r8
   2d62c35fc:   41 b8 4e 02 00 00       mov    r8d,0x24e
   2d62c3602:   c7 44 24 28 7f 00 00    mov    DWORD PTR [rsp+0x28],0x7f
   2d62c3609:   00 
   2d62c360a:   48 89 44 24 20          mov    QWORD PTR [rsp+0x20],rax
   2d62c360f:   ff d5                   call   rbp
   2d62c3611:   85 c0                   test   eax,eax
   2d62c3613:   0f 84 5d 01 00 00       je     2d62c3776 <__MCF_runtime_failure+0x2d6>
   2d62c3619:   66 83 bc 24 92 0b 00    cmp    WORD PTR [rsp+0xb92],0x7b
   2d62c3620:   00 7b 
   2d62c3622:   0f 85 4e 01 00 00       jne    2d62c3776 <__MCF_runtime_failure+0x2d6>
   2d62c3628:   48 8d 84 24 94 0b 00    lea    rax,[rsp+0xb94]
   2d62c362f:   00 
   2d62c3630:   48 8d 94 24 90 0c 00    lea    rdx,[rsp+0xc90]
   2d62c3637:   00 
   2d62c3638:   41 b8 24 00 00 00       mov    r8d,0x24
   2d62c363e:   4c 8d 0d db 1a 00 00    lea    r9,[rip+0x1adb]        # 2d62c5120 <.rdata>
   2d62c3645:   66 8b 08                mov    cx,WORD PTR [rax]
   2d62c3648:   66 85 c9                test   cx,cx
   2d62c364b:   0f 84 ab 00 00 00       je     2d62c36fc <__MCF_runtime_failure+0x25c>
   2d62c3651:   66 83 f9 7d             cmp    cx,0x7d
   2d62c3655:   0f 84 a1 00 00 00       je     2d62c36fc <__MCF_runtime_failure+0x25c>
   2d62c365b:   66 83 f9 44             cmp    cx,0x44
   2d62c365f:   75 72                   jne    2d62c36d3 <__MCF_runtime_failure+0x233>
   2d62c3661:   48 89 c6                mov    rsi,rax
   2d62c3664:   4c 89 c1                mov    rcx,r8
   2d62c3667:   4c 89 cf                mov    rdi,r9
   2d62c366a:   85 c9                   test   ecx,ecx
   2d62c366c:   f3 a6                   repz cmps BYTE PTR ds:[rsi],BYTE PTR es:[rdi]
   2d62c366e:   75 63                   jne    2d62c36d3 <__MCF_runtime_failure+0x233>
   2d62c3670:   4c 8d 58 24             lea    r11,[rax+0x24]
   2d62c3674:   48 8d 84 24 90 0c 00    lea    rax,[rsp+0xc90]
   2d62c367b:   00 
   2d62c367c:   48 39 c3                cmp    rbx,rax
   2d62c367f:   74 09                   je     2d62c368a <__MCF_runtime_failure+0x1ea>
   2d62c3681:   66 c7 03 60 00          mov    WORD PTR [rbx],0x60
   2d62c3686:   48 8d 43 02             lea    rax,[rbx+0x2]
   2d62c368a:   4d 89 ea                mov    r10,r13
   2d62c368d:   48 8d 9c 24 90 0c 00    lea    rbx,[rsp+0xc90]
   2d62c3694:   00 
   2d62c3695:   41 0f b6 0a             movzx  ecx,BYTE PTR [r10]
   2d62c3699:   84 c9                   test   cl,cl
   2d62c369b:   74 1e                   je     2d62c36bb <__MCF_runtime_failure+0x21b>
   2d62c369d:   48 8d b4 24 90 0c 00    lea    rsi,[rsp+0xc90]
   2d62c36a4:   00 
   2d62c36a5:   49 ff c2                inc    r10
   2d62c36a8:   48 39 f0                cmp    rax,rsi
   2d62c36ab:   74 09                   je     2d62c36b6 <__MCF_runtime_failure+0x216>
   2d62c36ad:   66 89 08                mov    WORD PTR [rax],cx
   2d62c36b0:   48 83 c0 02             add    rax,0x2
   2d62c36b4:   eb df                   jmp    2d62c3695 <__MCF_runtime_failure+0x1f5>
   2d62c36b6:   48 89 d8                mov    rax,rbx
   2d62c36b9:   eb da                   jmp    2d62c3695 <__MCF_runtime_failure+0x1f5>
   2d62c36bb:   48 8d 9c 24 90 0c 00    lea    rbx,[rsp+0xc90]
   2d62c36c2:   00 
   2d62c36c3:   48 39 d8                cmp    rax,rbx
   2d62c36c6:   74 2c                   je     2d62c36f4 <__MCF_runtime_failure+0x254>
   2d62c36c8:   66 c7 00 60 00          mov    WORD PTR [rax],0x60
   2d62c36cd:   48 8d 58 02             lea    rbx,[rax+0x2]
   2d62c36d1:   eb 21                   jmp    2d62c36f4 <__MCF_runtime_failure+0x254>
   2d62c36d3:   48 8d b4 24 90 0c 00    lea    rsi,[rsp+0xc90]
   2d62c36da:   00 
   2d62c36db:   4c 8d 58 02             lea    r11,[rax+0x2]
   2d62c36df:   48 39 f3                cmp    rbx,rsi
   2d62c36e2:   74 0d                   je     2d62c36f1 <__MCF_runtime_failure+0x251>
   2d62c36e4:   66 8b 00                mov    ax,WORD PTR [rax]
   2d62c36e7:   48 83 c3 02             add    rbx,0x2
   2d62c36eb:   66 89 43 fe             mov    WORD PTR [rbx-0x2],ax
   2d62c36ef:   eb 03                   jmp    2d62c36f4 <__MCF_runtime_failure+0x254>
   2d62c36f1:   48 89 d3                mov    rbx,rdx
   2d62c36f4:   4c 89 d8                mov    rax,r11
   2d62c36f7:   e9 49 ff ff ff          jmp    2d62c3645 <__MCF_runtime_failure+0x1a5>
   2d62c36fc:   48 8d 84 24 90 0c 00    lea    rax,[rsp+0xc90]
   2d62c3703:   00 
   2d62c3704:   48 39 c3                cmp    rbx,rax
   2d62c3707:   75 0a                   jne    2d62c3713 <__MCF_runtime_failure+0x273>
   2d62c3709:   4c 8d ac 24 90 0c 00    lea    r13,[rsp+0xc90]
   2d62c3710:   00 
   2d62c3711:   eb 20                   jmp    2d62c3733 <__MCF_runtime_failure+0x293>
   2d62c3713:   48 8d 43 02             lea    rax,[rbx+0x2]
   2d62c3717:   48 8d bc 24 90 0c 00    lea    rdi,[rsp+0xc90]
   2d62c371e:   00 
   2d62c371f:   66 c7 03 3a 00          mov    WORD PTR [rbx],0x3a
   2d62c3724:   48 39 c7                cmp    rdi,rax
   2d62c3727:   74 e0                   je     2d62c3709 <__MCF_runtime_failure+0x269>
   2d62c3729:   66 c7 43 02 20 00       mov    WORD PTR [rbx+0x2],0x20
   2d62c372f:   4c 8d 6b 04             lea    r13,[rbx+0x4]
   2d62c3733:   48 8d 84 24 90 0c 00    lea    rax,[rsp+0xc90]
   2d62c373a:   00 
   2d62c373b:   31 c9                   xor    ecx,ecx
   2d62c373d:   45 89 e0                mov    r8d,r12d
   2d62c3740:   31 d2                   xor    edx,edx
   2d62c3742:   4c 29 e8                sub    rax,r13
   2d62c3745:   48 89 4c 24 30          mov    QWORD PTR [rsp+0x30],rcx
   2d62c374a:   41 b9 00 04 00 00       mov    r9d,0x400
   2d62c3750:   b9 ff 12 00 00          mov    ecx,0x12ff
   2d62c3755:   48 d1 f8                sar    rax,1
   2d62c3758:   4c 89 6c 24 20          mov    QWORD PTR [rsp+0x20],r13
   2d62c375d:   89 44 24 28             mov    DWORD PTR [rsp+0x28],eax
   2d62c3761:   ff d5                   call   rbp
   2d62c3763:   89 c0                   mov    eax,eax
   2d62c3765:   48 01 c0                add    rax,rax
   2d62c3768:   49 01 c5                add    r13,rax
   2d62c376b:   4c 2b 6c 24 68          sub    r13,QWORD PTR [rsp+0x68]
   2d62c3770:   66 44 89 6c 24 60       mov    WORD PTR [rsp+0x60],r13w
   2d62c3776:   48 8d 44 24 60          lea    rax,[rsp+0x60]
   2d62c377b:   31 d2                   xor    edx,edx
   2d62c377d:   b9 18 00 00 50          mov    ecx,0x50000018
   2d62c3782:   48 c7 84 24 80 00 00    mov    QWORD PTR [rsp+0x80],0x10
   2d62c3789:   00 10 00 00 00 
   2d62c378e:   48 89 44 24 70          mov    QWORD PTR [rsp+0x70],rax
   2d62c3793:   48 8d 44 24 50          lea    rax,[rsp+0x50]
   2d62c3798:   4c 8d 4c 24 70          lea    r9,[rsp+0x70]
   2d62c379d:   41 b8 03 00 00 00       mov    r8d,0x3
   2d62c37a3:   48 89 44 24 78          mov    QWORD PTR [rsp+0x78],rax
   2d62c37a8:   31 c0                   xor    eax,eax
   2d62c37aa:   48 89 84 24 88 00 00    mov    QWORD PTR [rsp+0x88],rax
   2d62c37b1:   00 
   2d62c37b2:   48 8d 44 24 4c          lea    rax,[rsp+0x4c]
   2d62c37b7:   89 54 24 4c             mov    DWORD PTR [rsp+0x4c],edx
   2d62c37bb:   ba 04 00 00 00          mov    edx,0x4
   2d62c37c0:   48 89 44 24 28          mov    QWORD PTR [rsp+0x28],rax
   2d62c37c5:   c7 44 24 20 01 00 00    mov    DWORD PTR [rsp+0x20],0x1
   2d62c37cc:   00 
   2d62c37cd:   ff 15 fd 5a 00 00       call   QWORD PTR [rip+0x5afd]        # 2d62c92d0 <__imp_NtRaiseHardError>
   2d62c37d3:   ba 15 00 00 40          mov    edx,0x40000015
   2d62c37d8:   48 83 c9 ff             or     rcx,0xffffffffffffffff
   2d62c37dc:   ff 15 96 5a 00 00       call   QWORD PTR [rip+0x5a96]        # 2d62c9278 <__imp_TerminateProcess>