The binary is from here: https://files.fm/u/qtqmhhdd
I've been attempting this a couple of days. It's an ELF-64 bit file and I've gdb and IDA to see how it works for a while. You can run the file by
./reverse1.bin TEST (outputs a fail message)
In gdb it runs a _Z5checkPc function and you can use "disas check". It uses the flag from address 0x601038
which is
synt{0p5r7996pnq3qn36377036onor7342s41pq30r3n3q0p46n283862718o7n6s78n}
But I don't see it where it actually gets used in the code.
From the check function it seems to does a bunch of operations (or, add, ...) to your arg. I thought it would do a compare to see determine if it "fails" or "success" at 0x00000000004005b0
but that is not right, strangely.
Any insights on what to do?