============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* ncbi::objects::CLatLonCountryMap::AdjustAndRoundDistance(double) * ;************************************************************************************************************************************************************ ;undefined AdjustAndRoundDistance(CLatLonCountryMap * this, double param_1) ;this CLatLonCoun... RDI ;param_1 double XMM0_Qa MOVSD XMM1,qword ptr [this + 0x30] JMP .plt:LAB_00364040 ?? 66h f Actual src: int CLatLonCountryMap::AdjustAndRoundDistance (double distance) { return AdjustAndRoundDistance (distance, m_Scale); } Predicted src: double IconMap::at(double x) { return this->dataPtr->at(x); } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* ATC::GhostManager::construct_transfers() * ;************************************************************************************************************************************************************ ;undefined construct_transfers(GhostManager * this) ;this GhostManager * RDI MOV this,qword ptr [this + 0x8] MOV RAX,qword ptr [this] JMP qword ptr [RAX + 0x10] ?? 66h f Actual src: void GhostManager::construct_transfers() { ghostModifier_->construct_transfers(); } Predicted src: void Manager::host_host() { m_host->host_host(); } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined proto_register_irc() SUB RSP,0x8 LEA RDX,[.rodata:s_irc_03795c22+16] ;= "irc" LEA RSI,[.rodata:DAT_034f9416] ;= 49h I LEA RDI,[.rodata:s_Internet_Relay_Chat_038c6d1f] ;= "Internet Relay Chat" CALL .plt:proto_register_protocol ;undefined proto_register_protocol() MOV EDX,0xc LEA RSI,[.data:hf.2] MOV EDI,EAX MOV dword ptr [.data:proto_irc],EAX ;= FFFFFFFFh CALL .plt:proto_register_field_array ;undefined proto_register_field_array() MOV ESI,0x5 LEA RDI,[.data:ett.1] CALL .plt:proto_register_subtree_array ;undefined proto_register_subtree_arr... MOV EDI,dword ptr [.data:proto_irc] ;= FFFFFFFFh CALL .plt:expert_register_protocol ;undefined expert_register_protocol() LEA RSI,[.data:ei.0] MOV EDX,0x6 MOV RDI,RAX CALL .plt:expert_register_field_array ;undefined expert_register_field_array() LEA RSI,[.rodata:TAG_DELIMITER] ;= 0001h LEA RDI,[.bss:pbrk_tag_delimiter] ;=?? ADD RSP,0x8 JMP .plt:::ws_mempbrk_compile ;undefined ws_mempbrk_compile() ?? 66h f Actual src: void proto_register_irc(void) { static hf_register_info hf[] = { { &hf_irc_response, { "Response", "irc.response", FT_STRING, STR_ASCII, NULL, 0x0, "Line of response message", HFILL }}, { &hf_irc_request, { "Request", "irc.request", FT_STRING, STR_ASCII, NULL, 0x0, "Line of request message", HFILL }}, { &hf_irc_request_prefix, { "Prefix", "irc.request.prefix", FT_STRING, STR_ASCII, NULL, 0x0, "Request prefix", HFILL }}, { &hf_irc_request_command, { "Command", "irc.request.command", FT_STRING, STR_ASCII, NULL, 0x0, "Request command", HFILL }}, { &hf_irc_request_command_param, { "Parameter", "irc.request.command_parameter", FT_STRING, STR_ASCII, NULL, 0x0, "Request command parameter", HFILL }}, { &hf_irc_request_trailer, { "Trailer", "irc.request.trailer", FT_STRING, STR_ASCII, NULL, 0x0, "Request trailer", HFILL }}, { &hf_irc_response_prefix, { "Prefix", "irc.response.prefix", FT_STRING, STR_ASCII, NULL, 0x0, "Response prefix", HFILL }}, { &hf_irc_response_command, { "Command", "irc.response.command", FT_STRING, STR_ASCII, NULL, 0x0, "Response command", HFILL }}, { &hf_irc_response_num_command, { "Command", "irc.response.num_command", FT_UINT16, BASE_DEC, NULL, 0x0, "Response (numeric) command", HFILL }}, { &hf_irc_response_command_param, { "Parameter", "irc.response.command_parameter", FT_STRING, STR_ASCII, NULL, 0x0, "Response command parameter", HFILL }}, { &hf_irc_response_trailer, { "Trailer", "irc.response.trailer", FT_STRING, STR_ASCII, NULL, 0x0, "Response trailer", HFILL }}, { &hf_irc_ctcp, { "CTCP Data", "irc.ctcp", FT_STRING, STR_ASCII, NULL, 0x0, "Placeholder to dissect CTCP data", HFILL }} }; static gint *ett[] = { &ett_irc, &ett_irc_request, &ett_irc_request_command, &ett_irc_response, &ett_irc_response_command }; static ei_register_info ei[] = { { &ei_irc_missing_end_delimiter, { "irc.missing_end_delimiter", PI_MALFORMED, PI_ERROR, "Missing ending tag delimiter (0x01)", EXPFILL }}, { &ei_irc_tag_data_invalid, { "irc.tag_data_invalid", PI_PROTOCOL, PI_WARN, "Tag data outside of NOTICE or PRIVMSG command", EXPFILL }}, { &ei_irc_prefix_missing_ending_space, { "irc.prefix_missing_ending_space", PI_MALFORMED, PI_ERROR, "Prefix missing ending ", EXPFILL }}, { &ei_irc_request_command, { "irc.request.command.missing", PI_MALFORMED, PI_ERROR, "Request has no command", EXPFILL }}, { &ei_irc_numeric_request_command, { "irc.request.command.numeric", PI_PROTOCOL, PI_WARN, "Numeric command not allowed in request", EXPFILL }}, { &ei_irc_response_command, { "irc.response.command.missing", PI_MALFORMED, PI_ERROR, "Response has no command", EXPFILL }}, }; expert_module_t* expert_irc; proto_irc = proto_register_protocol("Internet Relay Chat", "IRC", "irc"); proto_register_field_array(proto_irc, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); expert_irc = expert_register_protocol(proto_irc); expert_register_field_array(expert_irc, ei, array_length(ei)); /* compile patterns */ ws_mempbrk_compile(&pbrk_tag_delimiter, TAG_DELIMITER); } Predicted src: void proto_register_protocol(void) { static hf_register_info hf[] = { { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { &hf_protocol, { { &hf_protocol, ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined allocate_row() PUSH RBX MOV RAX,qword ptr [RDI] MOV RBX,RDI LEA RDI,[RAX + 0x10] CALL .plt:shash_count ;undefined shash_count() MOV R8,RAX MOV RAX,qword ptr [RBX] LEA RDX,[R8 + R8*0x2] MOV RAX,qword ptr [RAX + 0x38] SHL RAX,0x4 LEA RDI,[RAX + RDX*0x8 + 0x48] CALL .plt:xmalloc ;undefined xmalloc() LEA RDX,[RAX + 0x20] MOV qword ptr [RAX + 0x10],RBX MOV qword ptr [RAX + 0x20],RDX MOV qword ptr [RAX + 0x28],RDX LEA RDX,[RAX + 0x30] MOV qword ptr [RAX + 0x18],0x0 MOV qword ptr [RAX + 0x30],RDX MOV qword ptr [RAX + 0x38],RDX MOV qword ptr [RAX + 0x40],0x0 POP RBX RET ?? 66h f Actual src: static struct ovsdb_row * allocate_row(const struct ovsdb_table *table) { size_t n_fields = shash_count(&table->schema->columns); size_t n_indexes = table->schema->n_indexes; size_t row_size = (offsetof(struct ovsdb_row, fields) + sizeof(struct ovsdb_datum) * n_fields + sizeof(struct hmap_node) * n_indexes); struct ovsdb_row *row = xmalloc(row_size); row->table = CONST_CAST(struct ovsdb_table *, table); row->txn_row = NULL; ovs_list_init(&row->src_refs); ovs_list_init(&row->dst_refs); row->n_refs = 0; return row; } Predicted src: static void row_count(struct row *row) { struct row *row = xmalloc(sizeof *row); row->count = row->count; row->count = row->count; row->count = row->count; row->count = row->count; row->count = row->count; row->count = row->count; } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined erts_get_schedulers_binds() PUSH R13 MOV ESI,0x7 PUSH R12 MOV R12,RDI LEA RDI,[.rodata:s_unbound_0043355b] ;= "unbound" PUSH RBP PUSH RBX SUB RSP,0x8 CALL am_atom_put ;undefined am_atom_put() CMP qword ptr [R12 + 0x78],0x0 MOV RBP,RAX MOV RAX,qword ptr [ERTS_LOW_WRITE:erts_no_schedulers] LEA RSI,[RAX + 0x1] JZ LAB_003025d4 MOV RAX,qword ptr [R12 + 0x58] MOV RBX,qword ptr [R12 + 0x50] MOV RDX,qword ptr [ERTS_LOW_WRITE:erts_no_schedulers] SUB RAX,0x18 CMP RBX,RAX LEA RSI,[RDX + 0x1] CMOVNC RAX,RBX SUB RAX,RBX SAR RAX,0x3 CMP RAX,RSI JNC LAB_00302660 LAB_003025d4: XOR EDX,EDX MOV RDI,R12 CALL erts_heap_alloc ;undefined erts_heap_alloc() MOV RDX,qword ptr [ERTS_LOW_WRITE:erts_no_schedulers] MOV RBX,RAX LAB_003025e8: SHL RDX,0x6 LEA R13,[.bss:cpuinfo_rwmtx] LEA R12,[RBX + 0x2] MOV qword ptr [RBX],RDX MOV RDI=>.bss:cpuinfo_rwmtx,R13 CALL ethr_rwmutex_rlock ;undefined ethr_rwmutex_rlock() CMP qword ptr [ERTS_LOW_WRITE:erts_no_schedulers],0x0 MOV EAX,0x1 MOV RSI,qword ptr [.bss:scheduler2cpu_map] JZ LAB_00302645 NOP dword ptr [RAX + RAX*0x1] LAB_00302620: MOVSXD RDX,dword ptr [RSI + RAX*0x8 + 0x4] MOV RCX,RBP TEST EDX,EDX JS LAB_00302634 SHL RDX,0x4 LEA RCX,[RDX + 0xf] LAB_00302634: MOV qword ptr [RBX + RAX*0x8],RCX ADD RAX,0x1 CMP qword ptr [ERTS_LOW_WRITE:erts_no_schedulers],RAX JNC LAB_00302620 LAB_00302645: MOV RDI=>.bss:cpuinfo_rwmtx,R13 CALL ethr_rwmutex_runlock ;undefined ethr_rwmutex_runlock() ADD RSP,0x8 MOV RAX,R12 POP RBX POP RBP POP R12 POP R13 RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00302660: LEA RAX,[RBX + RSI*0x8] MOV qword ptr [R12 + 0x50],RAX JMP LAB_003025e8 ?? 66h f Actual src: Eterm erts_get_schedulers_binds(Process *c_p) { int ix; ERTS_DECL_AM(unbound); Eterm *hp = HAlloc(c_p, erts_no_schedulers+1); Eterm res = make_tuple(hp); *(hp++) = make_arityval(erts_no_schedulers); erts_rwmtx_rlock(&cpuinfo_rwmtx); for (ix = 1; ix <= erts_no_schedulers; ix++) *(hp++) = (scheduler2cpu_map[ix].bound_id >= 0 ? make_small(scheduler2cpu_map[ix].bound_id) : AM_unbound); erts_rwmtx_runlock(&cpuinfo_rwmtx); return res; } Predicted src: static void * heap_get_heap(void *arg) { struct heap_heap *heap = arg; struct heap_heap *heap = heap_heap_heap_heap; struct heap_heap *heap = heap_heap_heap; struct heap_heap *heap = heap_heap_heap; heap->heap = heap_heap; heap->heap = heap_heap; heap->heap = heap_heap; heap->heap = heap_heap; heap->heap = heap_heap; heap->heap = heap_heap; heap->heap = heap_heap; heap->heap = heap_heap; heap->heap = heap_heap; heap->heap = heap_heap; heap->heap = heap_heap; heap->heap = heap_heap; heap->heap = heap_heap; heap->heap = heap_heap; heap_heap_heap_heap = heap_heap_heap; heap->heap = heap_heap; heap_heap_heap_heap = heap_heap_heap; heap_heap_heap_heap_heap = heap_heap_heap; heap_heap_heap_heap_heap = heap_heap; heap_heap_heap_heap_heap = heap_heap; heap_heap_heap_heap_heap = heap_heap; heap_heap_heap_heap = heap_heap; heap_heap_heap_heap_heap = heap_heap; heap_heap_heap_heap_heap_heap = heap_heap; return(heap); }