============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined libxmp_get_sample() MOV EAX,dword ptr [RDI + 0x6d0] CMP EAX,ESI JLE LAB_00118910 MOVSXD RSI,ESI MOV RDX,qword ptr [RDI + 0x700] LEA RAX,[RSI*0x8] SUB RAX,RSI LEA R8,[RDX + RAX*0x8] LAB_00118903: MOV RAX,R8 RET ?? 66h f ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00118910: MOV EDX,dword ptr [RDI + 0x2430] XOR R8D,R8D ADD EDX,EAX CMP EDX,ESI JLE LAB_00118903 SUB ESI,EAX MOV RDX,qword ptr [RDI + 0x2440] MOVSXD RSI,ESI LEA RAX,[RSI*0x8] SUB RAX,RSI LEA R8,[RDX + RAX*0x8] MOV RAX,R8 RET ?? 66h f Actual src: struct xmp_sample *libxmp_get_sample(struct context_data *ctx, int smp) { struct smix_data *smix = &ctx->smix; struct module_data *m = &ctx->m; struct xmp_module *mod = &m->mod; struct xmp_sample *xxs; if (smp < mod->smp) { xxs = &mod->xxs[smp]; } else if (smp < mod->smp + smix->smp) { xxs = &smix->xxs[smp - mod->smp]; } else { xxs = NULL; } return xxs; } Predicted src: static int sample_sample_get_sample(sample_sample_t *sample, int index) { if (index < 0 || index >=sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample->sample- ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined Java_edu_umn_gis_mapscript_mapscriptJNI_webObj_1empty_1get() MOV RSI,qword ptr [RDX + 0x40] JMP .plt:JNU_NewStringNative ;undefined JNU_NewStringNative() ?? 0Fh Actual src: SWIGEXPORT jstring JNICALL Java_edu_umn_gis_mapscript_mapscriptJNI_webObj_1empty_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { jstring jresult = 0 ; webObj *arg1 = (webObj *) 0 ; char *result = 0 ; (void)jenv; (void)jcls; (void)jarg1_; arg1 = *(webObj **)&jarg1; result = (char *) ((arg1)->empty); { jresult = JNU_NewStringNative(jenv, result); } return jresult; } Predicted src: SWIGEXPORT jint JNICALL Java_edu_umn_gis_mapscript_mapscript_mapscriptJNI_mapscript_mapscriptJNI_1Obj_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { jint jresult = 0 ; struct layerObj *arg1 = (struct layerObj *) 0 ; int result; (void)jenv; (void)jcls; (void)jarg1_; arg1 = *(struct layerObj **)&jarg1; result = (int) ((arg1)->get(arg1); jresult = (jint)result; return jresult; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;void clipboard_destroy(object * obj) ;obj object * RDI PUSH R13 MOV R13,obj PUSH R12 LEA R12,[R13 + 0x70] PUSH RBP PUSH RBX SUB RSP,0x8 MOV obj,qword ptr [obj->refcount + 0x90] CALL .plt:::free ;void free(void * __ptr) MOV RBP,qword ptr [R13 + 0x70] MOV RBX,qword ptr [RBP] CMP RBP,R12 JZ LAB_0011736b NOP word ptr [RAX + RAX*0x1] LAB_00117340: MOV RAX,qword ptr [RBP + 0x8] MOV qword ptr [RBX + 0x8],RAX MOV RDX,qword ptr [RBP] MOV qword ptr [RAX],RDX MOV obj,qword ptr [RBP + 0x20] CALL .plt:::free ;void free(void * __ptr) MOV obj,RBP MOV RBP,RBX CALL .plt:::free ;void free(void * __ptr) MOV RBX,qword ptr [RBX] CMP RBP,R12 JNZ LAB_00117340 LAB_0011736b: MOV qword ptr [R13 + 0x80],0x0 ADD RSP,0x8 POP RBX POP RBP POP R12 POP R13 RET ?? 66h f Actual src: static void clipboard_destroy( struct object *obj ) { struct clipboard *clipboard = (struct clipboard *)obj; free( clipboard->listeners ); free_clipboard_formats( clipboard ); } Predicted src: static void object_destroy(struct object *obj) { struct object *obj; struct object *obj; obj = obj->obj; while (obj) { obj = obj->next; obj = obj->next; obj = obj->next; free(obj); obj = obj->next; } free(obj); } ============================== Sample 4 ============================== 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: static void state_set_state_state(void *data) { struct state *state = data; struct state *state = state_get_state_state(state); if (!state->state) return; if (state->state!= state->state) { state->state = state->state; } else { state->state = state->state; } } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined as_utils_find_icon_filename() MOV RCX,RDX XOR EDX,EDX JMP .plt:LAB_00119260 ?? 66h f Actual src: gchar * as_utils_find_icon_filename (const gchar *destdir, const gchar *search, GError **error) { return as_utils_find_icon_filename_full (destdir, search, AS_UTILS_FIND_ICON_NONE, error); } Predicted src: static gboolean find_icon_icon_find_icon (gpointer user_data, const gchar *icon_name, const gchar *icon_name, GError **error) { return gtk_icon_find_icon_filename (icon_data, icon_name, error); }