Instructions are decoded differently whether the processor is in 64-bit or 32-bit mode. When I decoded that in 64-bit mode, I got:
POP Rdi POP Rsi POP Rbx MOV Esp, Ebp POP Rbp RETNAlthough they are valid instructions, notice the MOV instruction is missing a REX prefix necessary to encode Rsp, Rbp, indicating that your program is in fact 32-bit.
I wrote my disassembler from the "opcode map" section of the Intel Processor manuals. It's extremely difficult to understand since the manual is intended for people writing assemblers, not disassemblers. Critical information is scattered throughout hundreds of pages in hard-to-spot places.