============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined polypolygon_print() AND EDI,0xffff JZ LAB_001444e4 PUSH R15 LEA R15,[.rodata:s__Polygon[%d]:_0016b860] ;= " Polygon[%d]: " PUSH R14 MOV R14D,EDI PUSH R13 XOR R13D,R13D PUSH R12 MOV R12,RSI PUSH RBP MOV RBP,RDX PUSH RBX SUB RSP,0x8 NOP dword ptr [RAX] LAB_00144490: XOR EAX,EAX MOV EDX,R13D MOV RSI=>.rodata:s__Polygon[%d]:_0016b860,R15 ;= " Polygon[%d]: " MOV EDI,0x1 CALL .plt:::__printf_chk ;undefined __printf_chk() CMP word ptr [R12],0x0 JZ LAB_001444c8 XOR EBX,EBX NOP dword ptr [RAX] LAB_001444b0: MOV EDI,dword ptr [RBP] ADD EBX,0x1 ADD RBP,0x4 CALL .plt:point16_print ;undefined point16_print() MOVZX EAX,word ptr [R12] CMP EAX,EBX JG LAB_001444b0 LAB_001444c8: ADD R13D,0x1 ADD R12,0x2 CMP R13D,R14D JNZ LAB_00144490 ADD RSP,0x8 POP RBX POP RBP POP R12 POP R13 POP R14 POP R15 RET LAB_001444e4: RET ?? 66h f Actual src: void polypolygon_print( uint16_t nPolys, const uint16_t *aPolyCounts, const char *Points ){ int i,j; U_POINT16 pt; for(i=0; i::g_type_check_instance_is_a ;undefined g_type_check_instance_is_a() TEST EAX,EAX JZ LAB_00125b28 LAB_00125b1a: MOV RAX,qword ptr [RBX + 0x28] POP RBX MOV EAX,dword ptr [RAX + 0x50] RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00125b28: LEA RDX,[.rodata:s_DEE_IS_SHARED_MODEL_(self)_0013035c] ;= "DEE_IS_SHARED_MODEL (self)" LEA RSI,[.rodata:__func__.2] ;= "dee_shared_model_is_synchronized" LEA RDI,[.rodata:DAT_0012b024] ;= 64h d CALL .plt:::g_return_if_fail_warning ;undefined g_return_if_fail_warning() XOR EAX,EAX POP RBX RET ?? 66h f Actual src: gboolean dee_shared_model_is_synchronized (DeeSharedModel *self) { DeeSharedModelPrivate *priv; g_return_val_if_fail (DEE_IS_SHARED_MODEL (self), FALSE); priv = self->priv; return priv->synchronized; } Predicted src: gboolean gdata_model_get_model (GDataModel *self) { g_return_val_if_fail (GDATA_IS_MODEL (self), FALSE); return self->priv->model; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined xxmc_unlock_surfaces() PUSH RBP LEA RBP,[RDI + 0x1470] PUSH RBX MOV RBX,RDI MOV RDI,RBP SUB RSP,0x8 CALL .plt:::pthread_mutex_lock ;int pthread_mutex_lock(pthread_mutex... MOV EAX,dword ptr [RBX + 0x14c8] TEST EAX,EAX JLE LAB_0010628d SUB EAX,0x1 MOV dword ptr [RBX + 0x14c8],EAX JZ LAB_001062a0 LAB_0010628d: ADD RSP,0x8 MOV RDI,RBP POP RBX POP RBP JMP .plt:::pthread_mutex_unlock ;int pthread_mutex_unlock(pthread_mut... ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001062a0: LEA RDI,[RBX + 0x1498] CALL .plt:::pthread_cond_broadcast ;int pthread_cond_broadcast(pthread_c... ADD RSP,0x8 MOV RDI,RBP POP RBX POP RBP JMP .plt:::pthread_mutex_unlock ;int pthread_mutex_unlock(pthread_mut... ?? 66h f Actual src: static void xxmc_unlock_surfaces(vo_driver_t *this_gen) { xxmc_driver_t *driver = (xxmc_driver_t *) this_gen; xvmc_context_reader_unlock( &driver->xvmc_lock ); } Predicted src: void pthread_cond_broadcast(pthread_cond_t *cond) { pthread_cond_broadcast(&cond->cond); pthread_cond_broadcast(&cond->cond); } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined norm0() MOVSD XMM0,qword ptr [.rodata:DAT_00102008] DIVSD XMM0,qword ptr [RDI] MOVSD qword ptr [RSI],XMM0 TEST EDX,EDX JLE LAB_001013a6 MOVSXD RDX,EDX JMP LAB_00101394 ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00101390: MOVSD XMM0,qword ptr [RSI] LAB_00101394: MULSD XMM0,qword ptr [RDI + RDX*0x8] MOVSD qword ptr [RSI + RDX*0x8],XMM0 SUB RDX,0x1 TEST EDX,EDX JG LAB_00101390 LAB_001013a6: RET ?? 66h f Actual src: void norm0(double *x, double *y, int m) { y[0] = 1 / x[0]; for (; m >= 1; m--) y[m] = x[m] * y[0]; return; } Predicted src: void f(double *x, double *y, int n) { int i; for (i = 0; i < n; i++) x[i] = x[i]; }