pub nakedcc fn _aulldiv() void {
    @setRuntimeSafety(false);
    asm volatile (
        \\.intel_syntax noprefix
        \\
        \\         push        ebx
        \\         push        esi
        \\         mov         eax,dword ptr [esp+18h]
        \\         or          eax,eax
        \\         jne         L1
        \\         mov         ecx,dword ptr [esp+14h]
        \\         mov         eax,dword ptr [esp+10h]
        \\         xor         edx,edx
        \\         div         ecx
        \\         mov         ebx,eax
        \\         mov         eax,dword ptr [esp+0Ch]
        \\         div         ecx
        \\         mov         edx,ebx
        \\         jmp         L2
        \\ L1:
        \\         mov         ecx,eax
        \\         mov         ebx,dword ptr [esp+14h]
        \\         mov         edx,dword ptr [esp+10h]
        \\         mov         eax,dword ptr [esp+0Ch]
        \\ L3:
        \\         shr         ecx,1
        \\         rcr         ebx,1
        \\         shr         edx,1
        \\         rcr         eax,1
        \\         or          ecx,ecx
        \\         jne         L3
        \\         div         ebx
        \\         mov         esi,eax
        \\         mul         dword ptr [esp+18h]
        \\         mov         ecx,eax
        \\         mov         eax,dword ptr [esp+14h]
        \\         mul         esi
        \\         add         edx,ecx
        \\         jb          L4
        \\         cmp         edx,dword ptr [esp+10h]
        \\         ja          L4
        \\         jb          L5
        \\         cmp         eax,dword ptr [esp+0Ch]
        \\         jbe         L5
        \\ L4:
        \\         dec         esi
        \\ L5:
        \\         xor         edx,edx
        \\         mov         eax,esi
        \\ L2:
        \\         pop         esi
        \\         pop         ebx
        \\         ret         10h
    );
}
