29 lines
942 B
Python
29 lines
942 B
Python
import struct
|
|
import time
|
|
|
|
bitWidth = 32
|
|
startTime = time.time()
|
|
|
|
with open('isEven.bin', 'wb') as file:
|
|
|
|
file.write(b"\x31\xC0") # XOR EAX, EAX
|
|
|
|
for i in range(2**bitWidth):
|
|
print(f"[{round(time.time() - startTime, 1)}s elapsed] status: {i}/{2**bitWidth} ({2**bitWidth - i} left) ", end='\r')
|
|
|
|
ib = struct.pack("<I", i) # Encode i as 32 bit little endian integer
|
|
|
|
file.write(b"\x81\xF9" + ib) # CMP ECX, i
|
|
|
|
if i%2 == 0:
|
|
file.write(b"\x75\x03") # JNE +3
|
|
file.write(b"\xFF\xC0") # INC EAX
|
|
file.write(b"\xC3") # RET
|
|
else:
|
|
file.write(b"\x75\x01") # JNE +1
|
|
file.write(b"\xC3") # RET
|
|
|
|
file.write(b"\xC3") # Fallback RET
|
|
|
|
print()
|
|
print(f"took: {round(time.time() - startTime, 8)}s")
|