============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined AICast_TravEntityForName() PUSH R12 PUSH RBP MOV RBP,RSI PUSH RBX TEST RDI,RDI JZ LAB_00126120 LEA RAX,[.bss:g_entities] ;=?? LEA R12,[RDI + 0x670] LAB_001260ae: MOVSXD RBX,dword ptr [.bss:aicast_maxclients] ;=?? IMUL RBX,RBX,0x670 ADD RBX,RAX CMP R12,RBX JNC LAB_0012610c LAB_001260c4: MOV EAX,dword ptr [R12 + 0x2b0] TEST EAX,EAX JZ LAB_00126100 CMP qword ptr [R12 + 0x2a8],0x0 JZ LAB_00126100 MOV RDI,qword ptr [R12 + 0x4d8] TEST RDI,RDI JZ LAB_00126100 MOV RSI,RBP CALL .plt:::strcmp ;int strcmp(char * __s1, char * __s2) TEST EAX,EAX JNZ LAB_00126100 MOV RAX,R12 POP RBX POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_00126100: ADD R12,0x670 CMP R12,RBX JC LAB_001260c4 LAB_0012610c: XOR R12D,R12D POP RBX POP RBP MOV RAX,R12 POP R12 RET ?? 66h f ?? 0Fh ;? -> 00841f0f ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00126120: LEA RAX,[.bss:g_entities] ;=?? MOV R12,RAX JMP LAB_001260ae ?? 90h Actual src: gentity_t *AICast_TravEntityForName( gentity_t *startent, char *name ) { gentity_t *trav; if (!startent ) { trav = g_entities; } else { trav = startent + 1; } for ( ; trav < g_entities + aicast_maxclients; trav++ ) { if (!trav->inuse ) { continue; } if (!trav->client ) { continue; } if (!trav->aiName ) { continue; } if ( strcmp( trav->aiName, name ) ) { continue; } return trav; } return NULL; } Predicted src: const char *g_strcmp(const char *s) { if (s == NULL) return NULL; if (s == NULL) return NULL; if (strcmp(s, s) == 0) return NULL; if (strcmp(s, s) == 0) return s; if (strcmp(s, s) == 0) return s; if (strcmp(s, s) == 0) return s; return s; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined rpmcpioFree() TEST RDI,RDI JZ LAB_00126500 PUSH RBP CMP qword ptr [RDI],0x0 MOV RBP,RDI JZ LAB_001264f4 CALL .plt:rpmcpioClose ;undefined rpmcpioClose() LAB_001264f4: MOV RDI,RBP CALL .plt.got:::free ;void free(void * __ptr) XOR EAX,EAX POP RBP RET LAB_00126500: XOR EAX,EAX RET ?? 66h f Actual src: rpmcpio_t rpmcpioFree(rpmcpio_t cpio) { if (cpio) { if (cpio->fd) (void) rpmcpioClose(cpio); free(cpio); } return NULL; } Predicted src: static int ioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioioi ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined rss_item_get_contributor_email() PUSH RBX MOV RBX,RDI CALL .plt:rss_item_get_type ;undefined rss_item_get_type() TEST RBX,RBX JZ LAB_00110f58 MOV RSI,RAX MOV RAX,qword ptr [RBX] TEST RAX,RAX JZ LAB_00110f3e CMP qword ptr [RAX],RSI JZ LAB_00110f4a LAB_00110f3e: MOV RDI,RBX CALL .plt:::g_type_check_instance_is_a ;undefined g_type_check_instance_is_a() TEST EAX,EAX JZ LAB_00110f58 LAB_00110f4a: MOV RAX,qword ptr [RBX + 0x18] POP RBX MOV RAX,qword ptr [RAX + 0x50] RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_00110f58: LEA RDX,[.rodata:s_RSS_IS_ITEM_(self)_0011dd04] ;= "RSS_IS_ITEM (self)" LEA RSI,[.rodata:__func__.5] ;= "rss_item_get_contributor_email" 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: const gchar * rss_item_get_contributor_email (RssItem *self) { g_return_val_if_fail (RSS_IS_ITEM (self), NULL); return self->priv->contributor_email; } Predicted src: const gchar * item_get_item (Item *item) { g_return_val_if_fail (IS_ITEM (item), NULL); return item->priv->item; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined ffmax() MOV EDX,0x6 JMP ave ;undefined ave() ?? 66h f Actual src: gaint ffmax (struct gafunc *pfc, struct gastat *pst) { gaint rc; rc = ave (pfc, pst, 6); return (rc); } Predicted src: static int maxmax(void *arg, void *arg) { return (maxmaxmaxmax(arg, arg)); } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined crashhandlerOptionsInitDisplay() ;local_1c undefined4 -1c PUSH R12 MOV EDI,0x1 MOV R12,RSI MOV ESI,0x1a8 PUSH RBP SUB RSP,0x18 CALL .plt:::calloc ;void * calloc(size_t __nmemb, size_t... TEST RAX,RAX JZ LAB_00102aa8 MOV RDI,R12 MOV RBP,RAX CALL .plt:allocateScreenPrivateIndex ;undefined allocateScreenPrivateIndex() MOV dword ptr [RBP],EAX TEST EAX,EAX JS LAB_00102a78 MOVSXD RDX,dword ptr [.bss:CrashhandlerOptionsDisplayPrivateIndex] ;=?? MOV RAX,qword ptr [R12 + 0x8] MOV RDI,R12 LEA RCX,[RBP + 0x8] MOV R8D,0x4 LEA RSI,[.bss:crashhandlerOptionsMetadata] ;=?? MOV qword ptr [RAX + RDX*0x8],RBP LEA RDX,[.data.rel.ro:crashhandlerOptionsDisplayOptionInfo] CALL .plt:compInitDisplayOptionsFromMetadata ;undefined compInitDisplayOptionsFrom... TEST EAX,EAX JZ LAB_00102a90 MOV EAX,0x1 LAB_00102a6d: ADD RSP,0x18 POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 00h LAB_00102a78: MOV RDI,RBP CALL .plt:::free ;void free(void * __ptr) ADD RSP,0x18 XOR EAX,EAX POP RBP POP R12 RET ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00102a90: MOV RDI,RBP MOV dword ptr [RSP + local_1c+0x28],EAX CALL .plt:::free ;void free(void * __ptr) MOV EAX,dword ptr [RSP + local_1c+0x28] ADD RSP,0x18 POP RBP POP R12 RET LAB_00102aa8: XOR EAX,EAX JMP LAB_00102a6d ?? 0Fh Actual src: static Bool crashhandlerOptionsInitDisplay (CompPlugin *p, CompDisplay *d) { CrashhandlerOptionsDisplay *od; od = calloc (1, sizeof(CrashhandlerOptionsDisplay)); if (!od) return FALSE; od->screenPrivateIndex = allocateScreenPrivateIndex(d); if (od->screenPrivateIndex < 0) { free(od); return FALSE; } d->base.privates[CrashhandlerOptionsDisplayPrivateIndex].ptr = od; if (!compInitDisplayOptionsFromMetadata (d, &crashhandlerOptionsMetadata, crashhandlerOptionsDisplayOptionInfo, od->opt, CrashhandlerDisplayOptionNum)) { free (od); return FALSE; } return TRUE; } Predicted src: static int initDisplayDisplayOptions (CompPlugin *p, CompDisplay *d) { int i; if (!d) return 0; for (i = 0; i < 3; i++) { freeDisplayDisplayDisplayOptions (d, i); freeDisplayDisplayOptions (d); return 1; } return 0; }