Skip to content

Instantly share code, notes, and snippets.

View bitRAKE's full-sized avatar
🏠
Working from home.

Rickey Bowers Jr. bitRAKE

🏠
Working from home.
View GitHub Profile
@bitRAKE
bitRAKE / fasm2_proc64.md
Created April 19, 2026 17:23
The documentation `proc64.inc` needs.

proc64.inc for fasm2/fasmg

This document describes the macros in:

  • C:\git\~tgrysztar\fasm2\include\macro\proc64.inc

The file is a Win64-oriented call/procedure macro layer for the fasmg dialect. It is small enough to read in one sitting, but dense enough that a few details are easy to miss. Some of those details are merely convenient tricks; others are serious footguns.

The source revision inspected here is the file dated 2026-02-24 21:53:30.

@bitRAKE
bitRAKE / onetime.inc
Created April 13, 2025 17:10
#pragma once, for fasmg / fasm2:
; We can make a global "#pragma once" mechanism if we assume all files have
; a unique path. Non-cannonical path are fine as long as it's always the same
; form. Be mindful of file organization if you're going to use this.
; Primary benefits:
; + files are not loaded multiple times
; + no change to file needed (i.e. if/endif wrapper)
;macro onetime?: line&
; local name
; match any rest,line
@bitRAKE
bitRAKE / taskbar.asm
Created June 8, 2022 09:43
Taskbar show/hide app icon example:
format PE64 GUI 6.2 at 0x1234_56780000
include 'mywin.inc'
GWL_EXSTYLE := -20
TaskbarDemo:
iterate msg, WM_INITDIALOG,WM_COMMAND,WM_CLOSE
cmp edx,msg
jz .msg
end iterate
@bitRAKE
bitRAKE / CheckElevation.inc
Last active April 13, 2025 17:17
Checks if the current process in running with elevation ...
; kernel32.dll, advapi32.dll, 79 bytes
CheckElevation:
virtual at RBP-.FRAME
rq 4
.P5 dq ?
.hTok dq ? ; HANDLE
.tLen dd ?
.tInfo TOKEN_ELEVATION
@bitRAKE
bitRAKE / sqrt.g
Last active April 13, 2025 17:17
general square root for fasmg
; with the remainder calculations can be split into pieces and extended later
calminstruction ROOT? result*, remainder*, N*
local rem, prox, bit, temp
compute rem, 0
check N = 0
jyes done
compute prox, 0
compute bit, 1 shl (((bsr N) + 1) and -2)
@bitRAKE
bitRAKE / bitvec.asm
Last active April 13, 2025 17:18
Bit vectors are a native type on x86 ...
; Create static bit vector:
; + ignore value set duplicates
; + invert value set when bit length is negative
struc(name) BITVECTOR bits,values&
local result,offset,char,inverted,_bits
virtual
offset = $
db values ; string or byte array
result = 0
while offset < $
@bitRAKE
bitRAKE / UUID.asm
Last active April 13, 2025 17:19
GUID, UUID, ... ?
; it's many forms and names ...
macro UUID line&
match A - B - C - D - E, line
dd 0x#A
dw 0x#B,0x#C
dq 0x#D#E bswap 8
else match { A =, B =, C =, D { E } },line
dd A
dw B,C
@bitRAKE
bitRAKE / mkdb.asm
Created May 11, 2022 19:30
Create data statement from binary file.
; Make data statements from file (don't use this - just use FILE directive).
calminstruction hex_nibble digit*, command: display
compute digit, 0FFh and '0123456789ABCDEF' shr (digit*8)
arrange command, command digit
assemble command
end calminstruction
define _db
@bitRAKE
bitRAKE / Euler.five.asm
Last active April 13, 2025 17:20
Euler's sum of powers conjecture, k=5
; couldn't help myself after watching the video:
; https://www.youtube.com/watch?v=YMpdGLvqlrM
; (there is a better way, tomorrow perhaps)
; Euler's sum of powers conjecture.
; https://en.wikipedia.org/wiki/Euler%27s_sum_of_powers_conjecture
;
; It is unknown whether the conjecture fails or holds for any value k ≥ 6.
;
; Euler's conjecture was disproven by L. J. Lander and T. R. Parkin in 1966 when,
@bitRAKE
bitRAKE / bitmap_decode_ctz.asm
Last active April 13, 2025 17:19
convert bitmask buffer to array indices
; references:
; https://branchfree.org/2018/05/22/bits-to-indexes-in-bmi2-and-avx-512/
; https://lemire.me/blog/2018/03/08/iterating-over-set-bits-quickly-simd-edition/
; http://0x80.pl/notesen/2019-01-05-avx512vbmi-remove-spaces.html
align 64
; RCX : number of quadword to convert
; RSI : source bit array
; RDI : destination index array
bitmap_decode_ctz:
jrcxz .all_zero