============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined emile_cipher_init() CMP byte ptr [.bss:_emile_cipher_inited],0x0 ;=?? MOV EAX,0x1 JZ LAB_00103710 RET ?? 90h LAB_00103710: SUB RSP,0x8 CALL _emile_cipher_init ;undefined _emile_cipher_init() TEST AL,AL JZ LAB_00103729 MOV byte ptr [.bss:_emile_cipher_inited],0x1 ;=?? MOV EAX,0x1 LAB_00103729: ADD RSP,0x8 RET ?? 66h f Actual src: Eina_Bool emile_cipher_init(void) { if (_emile_cipher_inited) return EINA_TRUE; if (!_emile_cipher_init()) return EINA_FALSE; _emile_cipher_inited = EINA_TRUE; return EINA_TRUE; } Predicted src: int _cffi_d_init(void) { if (_d_init_init) _d_init(); return 1; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined go_conf_set_bool() PUSH R12 MOV R12D,EDX PUSH RBP SUB RSP,0x8 CALL .plt:go_conf_get_node ;undefined go_conf_get_node() TEST RAX,RAX JZ LAB_00164620 MOV RDI,qword ptr [RAX + 0x18] MOV RSI,qword ptr [RAX + 0x10] MOV EDX,R12D MOV RBP,RAX CALL .plt:::g_settings_set_boolean ;undefined g_settings_set_boolean() ADD RSP,0x8 MOV RDI,RBP POP RBP POP R12 JMP .plt.got:go_conf_free_node ;undefined go_conf_free_node() ?? 66h f ?? 2Eh . ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00164620: ADD RSP,0x8 POP RBP POP R12 RET ?? 0Fh Actual src: void go_conf_set_bool (GOConfNode *node, gchar const *key, gboolean val) { GOConfNode *real_node = go_conf_get_node (node, key); if (!real_node) { d (g_warning ("Unable to set key '%s'", key)); return; } g_settings_set_boolean (real_node->settings, real_node->key, val); go_conf_free_node (real_node); } Predicted src: static void set_node_set_node (GObject *object, const gchar *value) { if (g_strcmp0 (value, "node")) g_free (value); else g_free (value); } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined view_finalize() PUSH RBP MOV RBP,RDI CALL .plt:gal_view_get_type ;undefined gal_view_get_type() MOV RDI,RBP MOV RSI,RAX CALL .plt:::g_type_instance_get_private ;undefined g_type_instance_get_private() MOV RDI,qword ptr [RAX] CALL .plt.got:::g_free ;undefined g_free() MOV RDI,qword ptr [.bss:gal_view_parent_class] ;=?? MOV ESI,0x50 CALL .plt:::g_type_check_class_cast ;undefined g_type_check_class_cast() MOV RDI,RBP POP RBP MOV RAX,qword ptr [RAX + 0x30] JMP RAX ?? 66h f Actual src: static void view_finalize (GObject *object) { GalViewPrivate *priv; priv = GAL_VIEW_GET_PRIVATE (object); g_free (priv->title); /* Chain up to parent's finalize() method. */ G_OBJECT_CLASS (gal_view_parent_class)->finalize (object); } Predicted src: static void view_view_finalize (GObject *object) { GObject *object; g_return_if_fail (IS_VIEW (object)); object = E_VIEW (object); G_OBJECT_CLASS (view_view_parent_class)->finalize (object); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined sqlite3_stmt_readonly() MOV EAX,0x1 TEST RDI,RDI JZ LAB_0083be17 MOVZX EAX,byte ptr [RDI + 0xc6] SHR AL,0x7 MOVZX EAX,AL LAB_0083be17: RET ?? 0Fh ;? -> 00841f0f Actual src: int sqlite3_stmt_readonly(sqlite3_stmt *pStmt){ return pStmt? ((Vdbe*)pStmt)->readOnly : 1; } Predicted src: int sqlite3_ sqlite3_ sqlite3( sqlite3_ sqlite3 * sqlite3){ assert( sqlite3_ sqlite3_ sqlite3( sqlite3_ sqlite3_ sqlite3( sqlite3_ sqlite3_ sqlite3( sqlite3_ sqlite3_ sqlite3)); return sqlite3_ sqlite3_ sqlite3( sqlite3_ sqlite3_ sqlite3( sqlite3_ sqlite3_ sqlite3( sqlite3_ sqlite3_ sqlite3( sqlite3_ sqlite3_ sqlite3( sqlite3_ sqlite3_ sqlite3)); } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined rd_kafka_message_get_from_rkm() ;local_10 undefined8 -10 CMP dword ptr [RDI + 0x10],0x4 MOV RAX,RSI JZ LAB_001438d0 MOV RDX,qword ptr [RDI + 0x38] TEST RDX,RDX JZ LAB_00143900 CMP qword ptr [RSI + 0x8],0x0 MOV RCX,qword ptr [RDX + 0x60] MOV qword ptr [RSI + 0x40],RDI JZ LAB_00143947 LAB_001438b5: MOV EDX,dword ptr [RDX + 0x68] MOV dword ptr [RAX + 0x10],EDX LAB_001438bb: MOV EDX,dword ptr [RAX] TEST EDX,EDX JNZ LAB_001438cc MOV EDX,dword ptr [RDI + 0x20] CMP dword ptr [RDI + 0x10],0x1 MOV dword ptr [RAX],EDX JZ LAB_00143910 LAB_001438cc: RET ?? 0Fh ?? 1Fh ?? 00h LAB_001438d0: MOV RDX,qword ptr [RSI + 0x8] MOV RCX,qword ptr [RDI + 0x70] TEST RDX,RDX JNZ LAB_001438bb TEST RCX,RCX JZ LAB_001438bb LAB_001438e2: CMP dword ptr [RCX],0x544b524c JNZ LAB_00143940 LOCK ADD dword ptr [RCX + 0x10],0x1 LAB_001438ef: MOV qword ptr [RAX + 0x8],RCX TEST RDX,RDX JNZ LAB_001438b5 JMP LAB_001438bb ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00143900: MOV qword ptr [RSI + 0x40],RDI XOR ECX,ECX JMP LAB_001438bb ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00143910: TEST RCX,RCX JZ LAB_001438cc TEST EDX,EDX JNZ LAB_001438cc SUB RSP,0x18 MOV RDI,qword ptr [RCX + 0xf0] MOV RSI,RAX MOV qword ptr [RSP + local_10+0x18],RAX CALL rd_kafka_interceptors_on_consume ;undefined rd_kafka_interceptors_on_c... MOV RAX,qword ptr [RSP + local_10+0x18] ADD RSP,0x18 RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00143940: LOCK ADD dword ptr [RCX + 0x18],0x1 JMP LAB_001438ef LAB_00143947: TEST RCX,RCX JZ LAB_001438b5 JMP LAB_001438e2 ?? 66h f Actual src: rd_kafka_message_t *rd_kafka_message_get_from_rkm (rd_kafka_op_t *rko, rd_kafka_msg_t *rkm) { return rd_kafka_message_setup(rko, &rkm->rkm_rkmessage); } Predicted src: static void add_message_message_message_message_from_message_message_message(struct rte_msg *msg, const struct rte_msg *msg) { struct rte_msg *msg; struct rte_msg *msg; struct rte_msg *msg; msg = msg->msg; msg = msg->msg; msg->msg = msg; msg->msg = msg; msg->msg = msg; msg->msg = msg; msg->msg = msg; msg->msg = msg; msg->msg = msg; msg->msg = msg; msg->msg = msg; msg->msg = msg; msg->msg = msg; msg->msg = msg; msg->msg = msg; }