Fcd confuses short functions with tail calls to stubs with stubs
Functions with a single basic block that end in a tail call to a linker stub are confused with linker stubs. This causes a cascade of problems that culminates in that function being replaced with, for instance, a strcmp.47 that has no body and accepts an x86_regs* as a parameter, while the original function could have had a completely different name and could have done much more than just tail-calling strcmp.
This is a product of fcd doing a single pass over executables to identify both blocks and functions and produce LLVM IR, and stub identification logic being shoddy.
The solution is probably to replace the stub detection logic with proper tail call handling, and then in an AST pass or something, replace functions that literally just call another function with the exact same parameters with the function that it's calling.