============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined eog_metadata_sidebar_init() PUSH R12 MOV R12,RDI PUSH RBX SUB RSP,0x8 MOVSXD RBX,dword ptr [.bss:EogMetadataSidebar_private_offset] ;=?? ADD RBX,RDI MOV qword ptr [RDI + 0x38],RBX CALL .plt:::gtk_widget_get_type ;undefined gtk_widget_get_type() MOV RDI,R12 MOV RSI,RAX CALL .plt:::g_type_check_instance_cast ;undefined g_type_check_instance_cast() MOV RDI,RAX CALL .plt:::gtk_widget_init_template ;undefined gtk_widget_init_template() MOV RDI,qword ptr [RBX + 0x38] ADD RSP,0x8 MOV RCX,R12 POP RBX XOR R9D,R9D XOR R8D,R8D POP R12 LEA RDX,[_folder_label_clicked_cb] LEA RSI,[.rodata:s_activate-link_0015f079] ;= "activate-link" JMP .plt:::g_signal_connect_data ;undefined g_signal_connect_data() ?? 66h f Actual src: static void eog_metadata_sidebar_init (EogMetadataSidebar *sidebar) { EogMetadataSidebarPrivate *priv; priv = sidebar->priv = eog_metadata_sidebar_get_instance_private (sidebar); gtk_widget_init_template (GTK_WIDGET (sidebar)); g_signal_connect (priv->folder_label, "activate-link", G_CALLBACK (_folder_label_clicked_cb), sidebar); #ifndef HAVE_EXIF { /* Remove the lower 8 lines as they are empty without libexif*/ guint i; for (i = 11; i > 3; i--) { gtk_grid_remove_row (GTK_GRID (priv->metadata_grid), i); } } #endif /*!HAVE_EXIF */ } Predicted src: static void gth_plugin_init (GthPlugin *self) { self->priv = gtk_widget_get_instance_private (self); g_signal_connect_object (self, "activate", G_CALLBACK (gth_plugin_cb), self); } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined ensure_postgres_service_is_running_as_subprocess() PUSH RBP LEA RSI,[RDI + 0x478] MOV RBP,RSP PUSH R12 MOV R12,RDI ADD RDI,0x878 PUSH RBX CALL pg_is_running ;undefined pg_is_running() LEA RSI,[R12 + 0xa808] LEA RDI,[R12 + 0xac08] MOV EBX,EAX CALL keeper_set_postgres_state_running_as_subprocess ;undefined keeper_set_postgres_state_... TEST AL,AL JZ LAB_00163780 TEST BL,BL JNZ LAB_00163760 POP RBX MOV RDI,R12 POP R12 POP RBP JMP local_postgres_wait_until_ready ;undefined local_postgres_wait_until_... ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00163760: MOV EDI,0x1 CALL .plt:::sleep ;uint sleep(uint __seconds) POP RBX MOV RDI,R12 POP R12 POP RBP JMP local_postgres_wait_until_ready ;undefined local_postgres_wait_until_... ?? 66h f ?? 2Eh . ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00163780: POP RBX XOR EAX,EAX POP R12 POP RBP RET ?? 66h f Actual src: bool ensure_postgres_service_is_running_as_subprocess(LocalPostgresServer *postgres) { PostgresSetup *pgSetup = &(postgres->postgresSetup); LocalExpectedPostgresStatus *pgStatus = &(postgres->expectedPgStatus); bool pgIsRunning = pg_is_running(pgSetup->pg_ctl, pgSetup->pgdata); /* update our data structure in-memory, then on-disk */ if (!keeper_set_postgres_state_running_as_subprocess(&(pgStatus->state), pgStatus->pgStatusPath)) { /* errors have already been logged */ return false; } /* * If Postgres was already running before we wrote a new expected status * file, then the Postgres controller might be up to stop and then restart * Postgres. This happens when the already running Postgres is not a * subprocess of this pg_autoctl process, and only the controller has the * right information to check that (child process pid for "postgres"). * * Because we are lacking information, we just wait for some time before * checking if Postgres is running (again) */ if (pgIsRunning) { sleep(PG_AUTOCTL_KEEPER_SLEEP_TIME); } return local_postgres_wait_until_ready(postgres); } Predicted src: void state_set_wait_state(struct state *state) { if (!state) return; if (state->wait_state!= state->wait_state) state_set_wait_state(state->wait_state, state->wait_state); else state_set_wait_state(state->wait_state, state->wait_state); } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined lw_srvchan_close() PUSH RBP MOV RBP,RDI CALL lw_sock_close ;undefined lw_sock_close() MOV RDI,qword ptr [RBP + 0x30] TEST RDI,RDI JZ LAB_00107c0f CALL .plt:::free ;void free(void * __ptr) MOV qword ptr [RBP + 0x30],0x0 LAB_00107c0f: MOV RDI,RBP POP RBP JMP reset ;undefined reset() ?? 0Fh Actual src: void lw_srvchan_close (LW_SRVCHAN * chan) { lw_sock_close (&(chan->sock)); if (chan->map!= NULL) { free (chan->map); chan->map = NULL; } reset (chan); } Predicted src: static void close_sock(void *arg) { struct sock_sock *sock = arg; sock_close(sock->sock); sock_close(sock); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined measure_select_all() PUSH R12 MOV R12,qword ptr [.bss:sysenv[616]] PUSH RBP PUSH RBX TEST R12,R12 JZ LAB_001513b8 MOV RBX,qword ptr [R12 + 0x168] TEST RBX,RBX JNZ LAB_00151361 JMP LAB_001513a4 ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00151338: TEST EAX,EAX JLE LAB_00151358 MOV RDI,qword ptr [RBP + 0x10] MOV RDX,R12 XOR ESI,ESI CALL select_core ;undefined select_core() MOV RDI,qword ptr [RBP + 0x18] MOV RDX,R12 XOR ESI,ESI CALL select_core ;undefined select_core() LAB_00151358: MOV RBX,qword ptr [RBX + 0x8] TEST RBX,RBX JZ LAB_001513a4 LAB_00151361: MOV RBP,qword ptr [RBX] MOV EAX,dword ptr [RBP] CMP EAX,0x3 JLE LAB_00151338 CMP EAX,0x4 JNZ LAB_00151358 MOV RDI,qword ptr [RBP + 0x10] MOV RDX,R12 XOR ESI,ESI CALL select_core ;undefined select_core() MOV RDI,qword ptr [RBP + 0x18] MOV RDX,R12 XOR ESI,ESI CALL select_core ;undefined select_core() MOV RDI,qword ptr [RBP + 0x20] MOV RDX,R12 XOR ESI,ESI CALL select_core ;undefined select_core() MOV RBX,qword ptr [RBX + 0x8] TEST RBX,RBX JNZ LAB_00151361 LAB_001513a4: POP RBX MOV EDI,0x1 POP RBP POP R12 JMP redraw_canvas ;undefined redraw_canvas() ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001513b8: POP RBX POP RBP POP R12 RET ?? 0Fh Actual src: void measure_select_all(void) { GSList *list; struct model_pak *model; struct measure_pak *m; model = sysenv.active_model; if (!model) return; for (list=model->measure_list ; list ; list=g_slist_next(list)) { m = list->data; switch (m->type) { case MEASURE_INTER: case MEASURE_INTRA: case MEASURE_DISTANCE: select_core(m->core[0], FALSE, model); select_core(m->core[1], FALSE, model); break; case MEASURE_ANGLE: select_core(m->core[0], FALSE, model); select_core(m->core[1], FALSE, model); select_core(m->core[2], FALSE, model); break; } } redraw_canvas(SINGLE); } Predicted src: static void select_all_all (void) { int i; for (i = 0; i < MAX_SESSION; i++) { if (core_core_select (core_core_core_get (core_core_get (core_core_get (core_core_get (core_get (core_get (core_get (core_core_get (core_get))); else core_core_select (core_get (core_get (core_get))); } } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined myYield() LEA RSI,[.rodata:s_myYield_executed_00102000] ;= "myYield executed\n" MOV EDI,0x1 XOR EAX,EAX JMP .plt:LAB_00101030 ?? 66h f Actual src: static void myYield(JNIEnv* env, jclass cls) { printf("myYield executed\n"); } Predicted src: void my_mymymymy_mymymymy(void) { printf("mymymymymy\n"); }