Look at your code:
void pushq(int64_t x) {
pushq((x & 0xFFFFFFFF00000000) >> 32);
pushq(x & 0x00000000FFFFFFFF);
}
So
pushq
calls
pushq
, which calls
pushq
, which ... continues until out of stack space and your app crashes.
Did you mean to call
pushd
instead? If so, you probably want to cast the values as well to avoid warnings on some compilers.