Hang on, So, what went wrong? it faulted on the mov (298) 290: 51 push %ecx 291: 8b 54 24 08 mov 0x8(%esp,1),%edx 295: 52 push %edx 296: 57 push %edi 297: 56 push %esi 298: 8b 40 14 mov 0x14(%eax),%eax 29b: ff d0 call *%eax but...the call was: op_create_vi(vn, vi, is_affected, tb->insert_size [0]); why is it loading EAX rather than calling the address directly? The answer is: it's another macro...