+ movl %eax, %ebx # ebx <- quotient \r
+ movl 28(%esp), %ecx # ecx <- high dword of divisor \r
+ mull 24(%esp) # edx:eax <- quotient * divisor[0..31]\r
+ imull %ebx, %ecx # ecx <- quotient * divisor[32..63] \r
+ addl %ecx, %edx # edx <- (quotient * divisor)[32..63] \r
+ mov 32(%esp), %ecx # ecx <- addr for Remainder \r
+ jc TooLarge # product > 2^64 \r
+ cmpl %edx, %edi # compare high 32 bits \r
+ ja Correct \r
+ jb TooLarge # product > dividend \r
+ cmpl %eax, %esi \r
+ jae Correct # product <= dividend \r