============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined COM_InitArgv() PUSH R15 PUSH R14 PUSH R13 MOV R13,RSI PUSH R12 MOV R12D,EDI PUSH RBP PUSH RBX SUB RSP,0x8 CMP EDI,0x32 JG LAB_00160ca8 MOV dword ptr [.bss:com_argc],EDI TEST EDI,EDI JLE LAB_00160c95 LAB_00160c43: XOR EBP,EBP LEA R14,[.bss:com_argv] LEA R15,[.rodata:DAT_00286e0d] JMP LAB_00160c77 ?? 0Fh ?? 1Fh ?? 00h LAB_00160c58: MOV RDI,RBX CALL .plt:::strlen ;size_t strlen(char * __s) CMP RAX,0x3ff CMOVA RBX,R15 MOV qword ptr [R14 + RBP*0x8]=>.bss:com_argv,RBX ADD RBP,0x1 CMP R12D,EBP JLE LAB_00160c95 LAB_00160c77: MOV RBX,qword ptr [R13 + RBP*0x8] TEST RBX,RBX JNZ LAB_00160c58 LEA RBX,[.rodata:DAT_00286e0d] MOV qword ptr [R14 + RBP*0x8]=>.bss:com_argv,RBX=>.rodata:DAT_00286e0d ADD RBP,0x1 CMP R12D,EBP JG LAB_00160c77 LAB_00160c95: ADD RSP,0x8 POP RBX POP RBP POP R12 POP R13 POP R14 POP R15 RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_00160ca8: LEA RSI,[.rodata:s_argc_>_MAX_NUM_ARGVS_0028ed0d] ;= "argc > MAX_NUM_ARGVS" XOR EDI,EDI XOR EAX,EAX CALL Com_Error ;undefined Com_Error(undefined param_... MOV dword ptr [.bss:com_argc],R12D JMP LAB_00160c43 ?? 66h f Actual src: void COM_InitArgv (int argc, char **argv) { int i; if (argc > MAX_NUM_ARGVS) Com_Error (ERR_FATAL, "argc > MAX_NUM_ARGVS"); com_argc = argc; for (i=0 ; i= MAX_TOKEN_CHARS ) com_argv[i] = ""; else com_argv[i] = argv[i]; } } Predicted src: void Init_Init(int argc, char **argv[]) { int i; for (i = 0; i < argc; i++) { if (argv[i] == argv[i]) { if (argv[i] == argv[i]) { argv[i] = argv[i]; } } } for (i = 0; i < argc; i++) { argv[i] = argv[i]; } if (argv[i] == argv[i]) { argv[i] = argv[i]; } else { argv[i] = argv[i]; } } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined g_flags_class_init() PUSH RBP PUSH RBX SUB RSP,0x8 TEST RDI,RDI JZ LAB_00115a25 CMP qword ptr [RDI],0x34 MOV RBP,RDI MOV RBX,RSI JZ LAB_00115a48 MOV ESI,0x34 CALL g_type_check_class_is_a ;undefined g_type_check_class_is_a() TEST EAX,EAX JNZ LAB_00115a48 LAB_00115a25: ADD RSP,0x8 LEA RDX,[.rodata:s_G_IS_FLAGS_CLASS_(class)_00140d3b] ;= "G_IS_FLAGS_CLASS (class)" LEA RSI,[.rodata:__func__.15] ;= "g_flags_class_init" POP RBX LEA RDI,[.rodata:s_GLib-GObject_0013f3e8] ;= "GLib-GObject" POP RBP JMP .plt:::g_return_if_fail_warning ;undefined g_return_if_fail_warning() ?? 0Fh ?? 1Fh ?? 00h LAB_00115a48: MOV qword ptr [RBP + 0x8],0x0 MOV qword ptr [RBP + 0x10],RBX TEST RBX,RBX JZ LAB_00115a86 XOR EAX,EAX CMP qword ptr [RBX + 0x8],0x0 MOV EDX,0x1 JZ LAB_00115a86 NOP word ptr [RAX + RAX*0x1] LAB_00115a70: OR EAX,dword ptr [RBX] ADD RBX,0x18 MOV dword ptr [RBP + 0xc],EDX ADD EDX,0x1 MOV dword ptr [RBP + 0x8],EAX CMP qword ptr [RBX + 0x8],0x0 JNZ LAB_00115a70 LAB_00115a86: ADD RSP,0x8 POP RBX POP RBP RET ?? 0Fh Actual src: static void g_flags_class_init (GFlagsClass *class, gpointer class_data) { g_return_if_fail (G_IS_FLAGS_CLASS (class)); class->mask = 0; class->n_values = 0; class->values = class_data; if (class->values) { GFlagsValue *values; for (values = class->values; values->value_name; values++) { class->mask |= values->value; class->n_values++; } } } Predicted src: void g_g_class_init (G_OBJECT_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT, G_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT) { g_return_if_fail (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_CLASS (G_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT_OBJECT)); } <| ============================== Sample 3 ============================== 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: static void set_string(const char *name) { fprintf(stderr, "Usage: %s\n", name); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined vncRandRGetOutputName() PUSH R12 MOVSXD RDI,EDI PUSH RBP SUB RSP,0x8 MOV RSI,qword ptr [.bss:randrGlueContext[8]] MOV RAX,qword ptr [RSI + 0x28] MOV RDX,qword ptr [RAX + RDI*0x8] MOV RDI,qword ptr [.bss:randrGlueContext] CALL .plt:::XRRGetOutputInfo ;undefined XRRGetOutputInfo() TEST RAX,RAX JZ LAB_00139f60 MOV RDI,qword ptr [RAX + 0x10] MOV RBP,RAX CALL .plt:::strdup ;char * strdup(char * __s) MOV RDI,RBP MOV R12,RAX CALL .plt:::XRRFreeOutputInfo ;undefined XRRFreeOutputInfo() ADD RSP,0x8 MOV RAX,R12 POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_00139f60: ADD RSP,0x8 LEA RDI,[.rodata:s__00173901+14] ;= "" POP RBP POP R12 JMP .plt:::strdup ;char * strdup(char * __s) ?? 66h f Actual src: char *vncRandRGetOutputName(int outputIdx) { vncGlueContext *ctx = &randrGlueContext; XRROutputInfo *output = XRRGetOutputInfo(ctx->dpy, ctx->res, ctx->res->outputs[outputIdx]); if (!output) { return strdup(""); } char *ret = strdup(output->name); XRRFreeOutputInfo(output); return ret; } Predicted src: static char * GetObject(const char *name) { char *name; char *name; name = strlen(name); if (!name) return NULL; name = strlen(name); if (!name) return NULL; name = name->name; name = name->name; name = name->name; return name; } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined glfwSetWindowAspectRatio() SUB RSP,0x8 TEST RDI,RDI JZ LAB_0010ffe2 TEST ESI,ESI JZ LAB_0010ffc3 TEST EDX,EDX JZ LAB_00110001 LEA RAX,[.bss:_glfw] ;=?? MOV ECX,dword ptr [RAX]=>.bss:_glfw ;=?? TEST ECX,ECX JZ LAB_0010ff90 CMP ESI,-0x1 JZ LAB_0010ff6c CMP EDX,-0x1 JZ LAB_0010ff6c TEST ESI,ESI JLE LAB_0010ffa8 TEST EDX,EDX JLE LAB_0010ffa8 LAB_0010ff6c: CMP qword ptr [RDI + 0x48],0x0 MOV dword ptr [RDI + 0x68],ESI MOV dword ptr [RDI + 0x6c],EDX JZ LAB_0010ff80 LAB_0010ff79: ADD RSP,0x8 RET ?? 66h f ?? 90h LAB_0010ff80: MOV EAX,dword ptr [RDI + 0x8] TEST EAX,EAX JZ LAB_0010ff79 ADD RSP,0x8 JMP _glfwPlatformSetWindowAspectRatio ;undefined _glfwPlatformSetWindowAspe... LAB_0010ff90: XOR ESI,ESI MOV EDI,0x10001 XOR EAX,EAX ADD RSP,0x8 JMP _glfwInputError ;undefined _glfwInputError(undefined... ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_0010ffa8: MOV ECX,EDX MOV EDI,0x10004 MOV EDX,ESI XOR EAX,EAX LEA RSI,[.rodata:s_Invalid_window_aspect_ratio_%i:%_001368d0] ;= "Invalid window aspect ratio %i:%i" ADD RSP,0x8 JMP _glfwInputError ;undefined _glfwInputError(undefined... LAB_0010ffc3: LEA RCX,[.rodata:__PRETTY_FUNCTION__.28] ;= "glfwSetWindowAspectRatio" MOV EDX,0x26d LEA RSI,[.rodata:s_./src/window.c_0013613d] ;= "./src/window.c" LEA RDI,[.rodata:s_numer_!=_0_001361c1] ;= "numer!= 0" CALL .plt:::__assert_fail ;void __assert_fail(char * __assertio... LAB_0010ffe2: LEA RCX,[.rodata:__PRETTY_FUNCTION__.28] ;= "glfwSetWindowAspectRatio" MOV EDX,0x26c LEA RSI,[.rodata:s_./src/window.c_0013613d] ;= "./src/window.c" LEA RDI,[.rodata:s_window_!=_NULL_0011a4a4] ;= "window!= NULL" CALL .plt:::__assert_fail ;void __assert_fail(char * __assertio... LAB_00110001: LEA RCX,[.rodata:__PRETTY_FUNCTION__.28] ;= "glfwSetWindowAspectRatio" MOV EDX,0x26e LEA RSI,[.rodata:s_./src/window.c_0013613d] ;= "./src/window.c" LEA RDI,[.rodata:s_denom_!=_0_001361cc] ;= "denom!= 0" CALL .plt:::__assert_fail ;void __assert_fail(char * __assertio... ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined glfwGetFramebufferSize() TEST RDI,RDI Actual src: GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* handle, int numer, int denom) { _GLFWwindow* window = (_GLFWwindow*) handle; assert(window!= NULL); assert(numer!= 0); assert(denom!= 0); _GLFW_REQUIRE_INIT(); if (numer!= GLFW_DONT_CARE && denom!= GLFW_DONT_CARE) { if (numer <= 0 || denom <= 0) { _glfwInputError(GLFW_INVALID_VALUE, "Invalid window aspect ratio %i:%i", numer, denom); return; } } window->numer = numer; window->denom = denom; if (window->monitor ||!window->resizable) return; _glfwPlatformSetWindowAspectRatio(window, numer, denom); } Predicted src: void _window_set_window(window_t *window, int x, int y, int x, int y) { if (window->window!= x) { if (window->window!= x) { if (window->window->window!= x) { if (window->window->window->window->window!= x) { window->window->window->window->window->window = x; window->window->window->window->window = x; window->window->window->window = x; window->window->window->window = x; window->window->window = x; } } } }