============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined sigar_nfs_client_v3_get() LEA RDI,[.rodata:s_/proc/net/rpc/nfs_001293f2] ;= "/proc/net/rpc/nfs" JMP sigar_nfs_v3_get ;undefined sigar_nfs_v3_get() ?? 0Fh Actual src: int sigar_nfs_client_v3_get(sigar_t *sigar, sigar_nfs_client_v3_t *nfs) { return sigar_nfs_v3_get(PROC_FS_ROOT "net/rpc/nfs", (sigar_nfs_v3_t *)nfs); } Predicted src: static void v1_get_v1(void) { v1_get_v1(v1); } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* decI_rRegNode::emit(CodeBuffer&, PhaseRegAlloc*) const * ;************************************************************************************************************************************************************ ;undefined emit(decI_rRegNode * this, CodeBuffer * param_1, PhaseRegAlloc * param_2) ;this decI_rRegNo... RDI ;param_1 CodeBuffer * RSI ;param_2 PhaseRegAll... RDX PUSH RBP MOV RBP,RSP PUSH R13 MOV R13,param_2 PUSH R12 MOV R12,this PUSH RBX MOV RBX,param_1 SUB RSP,0x8 MOV RAX,qword ptr [param_1 + 0x68] MOV qword ptr [param_1 + 0x60],RAX MOV this,qword ptr [this + 0x48] MOV RAX,qword ptr [this] CALL qword ptr [RAX + 0x8] MOV this,qword ptr [R12 + 0x48] MOV ECX,0x1 MOV param_2,R12 MOV param_1,R13 MOV RAX,qword ptr [this] CALL qword ptr [RAX + 0x28] CMP EAX,0x7 MOV RAX,qword ptr [RBX + 0x68] JLE LAB_0031bd46 MOV byte ptr [RAX],0x41 MOV RAX,qword ptr [RBX + 0x68] ADD RAX,0x1 MOV qword ptr [RBX + 0x68],RAX LAB_0031bd46: MOV byte ptr [RAX],0xff MOV param_2,R12 MOV param_1,R13 MOV ECX,0x1 ADD qword ptr [RBX + 0x68],0x1 MOV this,qword ptr [R12 + 0x48] MOV RAX,qword ptr [this] CALL qword ptr [RAX + 0x28] MOV param_2,qword ptr [RBX + 0x68] AND EAX,0x7 OR EAX,0xffffffc8 MOV byte ptr [param_2],AL ADD qword ptr [RBX + 0x68],0x1 ADD RSP,0x8 POP RBX POP R12 POP R13 POP RBP RET ;************************************************************************************************************************************************************ ;* decI_memNode::emit(CodeBuffer&, PhaseRegAlloc*) const * ;************************************************************************************************************************************************************ ;undefined emit(decI_memNode * this, CodeBuffer * param_1, PhaseRegAlloc * param_2) ;this decI_memNode * RDI ;param_1 CodeBuffer * RSI ;param_2 PhaseRegAll... RDX ;local_30 undefined1 -30 ;local_3c undefined4 -3c PUSH RBP Actual src: void decI_rRegNode::emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const { cbuf.set_insts_mark(); // Start at oper_input_base() and count operands unsigned idx0 = 1; unsigned idx1 = 1; // dst unsigned idx2 = idx1 + opnd_array(1)->num_edges(); // src { #line 2399 "/fastdata/debian_allsrc/build/openjdk-8-8u312-b07/src/hotspot/src/cpu/x86/vm/x86_64.ad" if (opnd_array(1)->reg(ra_,this,idx1)/* dst */ >= 8) { emit_opcode(cbuf, Assembler::REX_B); } #line 18393 "../generated/adfiles/ad_x86_64.cpp" } { #line 1781 "/fastdata/debian_allsrc/build/openjdk-8-8u312-b07/src/hotspot/src/cpu/x86/vm/x86_64.ad" emit_opcode(cbuf, (0xFF /*primary()*/)); #line 18401 "../generated/adfiles/ad_x86_64.cpp" } { #line 2039 "/fastdata/debian_allsrc/build/openjdk-8-8u312-b07/src/hotspot/src/cpu/x86/vm/x86_64.ad" // INC, DEC, IDIV, IMOD, JMP indirect,... emit_rm(cbuf, 0x3, (0x01 /*secondary()*/), opnd_array(1)->reg(ra_,this,idx1)/* dst */ & 7); #line 18410 "../generated/adfiles/ad_x86_64.cpp" } } Predicted src: void Assembler::emit_array(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const { cbuf.set_insts_mark(); // Start at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at at a ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined fcml_tf_env_memory_alloc_handler_counter() ADD dword ptr [.bss:counter],0x1 JMP qword ptr [.bss:default_alloc] ?? 0Fh Actual src: fcml_ptr fcml_tf_env_memory_alloc_handler_counter( fcml_usize size ) { counter += 1; return default_alloc( size ); } Predicted src: void memory_alloc_handler(void) { memory_alloc_handler(memory_alloc_handler); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined fd_write() PUSH R13 MOV R13,RCX PUSH R12 MOV R12,RDX XOR EDX,EDX PUSH RBP MOV EBP,EDI PUSH RBX MOV RBX,RSI SUB RSP,0x8 CALL .plt:::lseek ;__off_t lseek(int __fd, __off_t __of... CMP RAX,RBX JNZ LAB_00139860 ADD RSP,0x8 MOV RDX,R13 MOV RSI,R12 MOV EDI,EBP POP RBX POP RBP POP R12 POP R13 JMP .plt:::write ;ssize_t write(int __fd, void * __buf... ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00139860: ADD RSP,0x8 MOV RAX,-0x1 POP RBX POP RBP POP R12 POP R13 RET ?? 66h f Actual src: ssize_t fd_write(int fd, off_t offset, const void *src, size_t size) { if (lseek(fd, offset, SEEK_SET)!= offset) return -1; return write(fd, src, size); } Predicted src: static void write(int fd, void *buf, size_t count) { int fd; fd = write(fd, buf, count); if (fd == -1) return; if (errno == EINTR) return; close(fd); } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined net_object_get_panel() PUSH RBX MOV RBX,RDI CALL .plt:net_object_get_type ;undefined net_object_get_type() TEST RBX,RBX JZ LAB_00120798 MOV RSI,RAX MOV RAX,qword ptr [RBX] TEST RAX,RAX JZ LAB_0012077e CMP qword ptr [RAX],RSI JZ LAB_0012078a LAB_0012077e: MOV RDI,RBX CALL .plt:::g_type_check_instance_is_a ;undefined g_type_check_instance_is_a() TEST EAX,EAX JZ LAB_00120798 LAB_0012078a: MOV RAX,qword ptr [RBX + 0x18] POP RBX MOV RAX,qword ptr [RAX + 0x28] RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_00120798: LEA RDX,[.rodata:s_NET_IS_OBJECT_(object)_00142723] ;= "NET_IS_OBJECT (object)" LEA RSI,[.rodata:__func__.0] ;= "net_object_get_panel" XOR EDI,EDI CALL .plt:::g_return_if_fail_warning ;undefined g_return_if_fail_warning() XOR EAX,EAX POP RBX RET ?? 66h f Actual src: CcNetworkPanel * net_object_get_panel (NetObject *object) { g_return_val_if_fail (NET_IS_OBJECT (object), NULL); return object->priv->panel; } Predicted src: const gchar * panel_object_get_object (panelObject *object) { g_return_val_if_fail (panel_IS_OBJECT (object), NULL); return object->priv->object; }