joyce8/EMBER2024-capa huggingface dataset:
Function at 0x44ee59
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ch, ah
push esi
mov esi, dword [ebp + 8]
cmp dword [esi], 0
jge 0x44897e
xor eax, eax
jmp 0x448ab0
call 0x54edcf
mov eax, dword [esi]
cmp eax, 0x3f480
jle 0x4489e4
cmp eax, 0x7ffc0b7f
jge 0x4489e4
cmp eax, dword [0x461be0]
mov dword [ebp + 8], eax
lea eax, [ebp + 8]
push eax
jmp 0x44ee59
push esi
call 0x44ee59
cmp dword [0x461be4], 0
pop ecx
mov esi, eax
je 0x448a1e
push esi
in al, dx
pop ds
add byte fs:[eax], al
test eax, eax
pop ecx
je 0x448a1e
mov eax, dword [esi]
sub eax, dword [0x461be8]
sub edx, dword [0x461be0]
mov dword [ebp + 8], eax
mov dword [esi + 0x20], 1
mov eax, dword [ecx + 8]
jmp 0x448a29
mov eax, dword [esi]
sub eax, dword [0x461be0]
mov dword [ebp + 8], eax
inc ebx
push 0x3c
pop ecx
cdq
retf
pop esi
pop ebp
ret
mov eax, dword [esp + 0x44]
push ebx
push esi
mov esi, dword [eax]
push edi
xor ebx, dword [ebx - 0x42cb18]
inc dword [ebp + 0x7df88bf6]
pop es
xor eax, eax
jmp fcn.0044ef6c

Function at 0x44ef60
Capabilities:
Write file on windows

Disassembly:
push ebp
lea ebp, [esp - 0x90]
sub esp, 0x110
add byte [eax], al

Function at 0x44f443
Capabilities:
Query environment variable

Disassembly:
les esi, [edi - 1]
dec dword [ebx + 0x1cc483f8]
test edi, edi
jne 0x44f419
or eax, 0xffffffff
jmp 0x44f43e
lea eax, [ebp - 4]
push eax
lea ecx, [esi + edi]
push edi
lea esi, [ebp - 8]
mov eax, ebx
call fcn.0044f235
mov eax, dword [ebp - 4]
dec eax
pop ecx
mov dword [0x463500], eax
pop eax
mov dword [0x10463504], edi
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret
push ecx
push ecx
mov eax, dword [0x4638b0]
push ebx
push ebp
push esi
push edi
mov edi, dword [0x45e30c]
xor ebx, ebx
xor esi, esi
cmp eax, ebx
push 2
pop ebp
jne 0x44f48c
call edi
mov esi, eax
sbb edx, ebx
je 0x44f473
mov dword [0x44618b0], 1
jmp 0x44f491
call dword [0x47614c]
cmp eax, 0x78
jne 0x44f407
mov eax, ebp
mov dword [0x4638b0], eax
jmp 0x44f48c
cmp eax, 1
jne 0x44f50e
cmp esi, dword [ebx - 0x2800f78b]
mov esi, eax
cmp dh, bl
je 0x44f516
cmp bx, word [esi]
mov eax, esi
je 0x44f4b2
add eax, ebp
cmp word [eax], bx
jne 0x44f4a4
add eax, ebp
sub bx, word [eax]
jne 0x44f4a4
mov edi, dword [0x65617c]
push ebx
push ebx
push edx
sub eax, esi
push ebx
sar ecx, 1
inc eax
push eax
salc
pop ebx
push ebx
mov dword [esp], eax
xor al, 0xff
xlatb
mov ebp, eax
cmp ebp, dword [ebx + 0x74]
xor dl, byte [ebp - 0x18]
clc
jbe 0x44f4d5
invalid
invalid
cmp eax, ebp
je 0x44f51a
cmp eax, ebx
je 0x44f51a
mov bl, 0xc2
jmp 0x44f55e
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentStrings]
mov esi, eax
cmp esi, ebx
je 0x44f516
cmp byte [esi], bl
je 0x44f534
inc eax
cmp byte [eax], bl
jne 0x44f52a
inc eax
cmp byte [eax], bl
jne 0x44f52a
sub eax, esi
inc eax
mov ebp, eax
push ebp
call fcn.00446bcf
mov bl, al
cmp edi, ebx
pop ecx
jne 0x44f54a
xor edi, edi
jmp 0x44f555
push ebp
push esi
push edi
call fcn.00447390
add esp, 0xc
push esi
call dword [sym.imp.KERNEL32.DLL_FreeEnvironmentStringsA]
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
pop ecx
pop ecx
ret
Function at 0x44f736
Capabilities:
Parse pe header
Write file on windows

Disassembly:
lea ebx, [eax + 0x53000000]
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push esi
mov esi, dword [ebp + 8]
mov ebx, dword [esi + 8]
test bl, 3
jne 0x44f764
mov ax, word [0x18]
mov dword [ebp + 8], eax
mov eax, dword [ebp + 8]
mov ebp, dword [eax + 8]
cmp ebx, ecx
add dword [ebp - 4], 0x583b4c72
add al, 0x73
pop es
xor eax, dword [eax + 0x1f0e9]
add byte [edi - 0x75], dl
jg 0x44f77b
cmp edi, 0xffffffff
jne 0x44f77c
xor eax, eax
inc eax
jmp 0x44f95a
add byte [ebx], dh
ror byte [ecx - 0x3c74f7ab], cl
xor edx, edx
mov dword [ebp + 8], edx
mov eax, ebx
mov ecx, dword [eax]
cmp ecx, 0xffffffff
je 0x44f7d2
cmp ecx, edx
jae 0x44f8d7
cmp dword [eax + 4], 0
je 0x44f79b
inc dword [ebp + 8]
inc edx
add eax, 0xc
cmp edx, edi
je 0x44f783
cmp byte [ebp + 8], 0
je 0x44f7bd
mov eax, dword [esi - 8]
cmp eax, dword [ebp - 4]
jb 0x4508d7
cmp eax, esi
lsl ebx, word [edx]
add dword [eax], eax
add byte [ecx + 0x4638b8], ah
mov eax, dword [0x4638b8]
mov edi, ebx
and edi, 0xfffff008
xor esi, esi
test eax, eax
jle 0x44f7e2
cmp dword [esi*4 + 0x4638c0], esi
mov ch, 0xc0
cmp byte [esi], al
je 0x44f8db
inc esi
cmp esi, eax
jl 0x44f7d0
push 0x1c
lea eax, [ebp - 0x20]
push eax
push ebx
call dword [sym.imp.KERNEL32.DLL_VirtualQuery]
test eax, eax
je 0x44f957
cmp dword [ebp - 8], 0x1000000
setno byte [ebx + 1]
add byte [eax], al
test byte [ebp - 0xc], 0xcc
je 0x44f860
mov ecx, dword [ebp - 0x1c]
cmp word [ecx], 0x5a4d
jne 0x44f947
mov eax, dword [ecx + 0x3c]
add eax, ecx
cmp dword [eax], 0x4550
jge 0x44f957
cmp word [eax + 0x18], 0x10b
jne 0x44f957
sub ebx, ecx
cmp word [eax + 6], 0
movzx ecx, word [eax + 0x14]
lea ecx, [ecx + eax + 0x18]
jbe 0x44f957
mov eax, dword [ecx + 0xc]
cmp ebx, eax
jb 0x44f860
mov edx, dword [ecx + 8]
add edx, eax
cmp ebx, edx
jae 0x44f860
test dword [ecx + 0x27], 0x6a777480
add dword [eax], edi
push 1
js 0x44f864
cmp dword [esi], eax
add bh, bh
adc eax, sym.imp.KERNEL32.DLL_InterlockedExchange
test eax, eax
jne 0x7044f774
retf
xor eax, ecx
jmp 0x44f95a
movsd dword es:[edi], dword [esi]
test byte [edi], 0x8e
xchg ecx, eax
invalid
lea eax, [ecx*4 + 0x4638c0]
mov edx, dword [eax]
inc ecx
cmp ecx, esi
mov dword [eax], edi
mov edi, edx
jle 0x44f937
push 0
push 0x463900
call ebx
jmp 0x44ef74
add ecx, eax
call [edi + 0x5e]
pop edi
pop esi
pop ebx
leave
ret
invalid
Function at 0x4505ed
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x84
mov eax, dword [0x461a50]
xor eax, ebp
mov dword [esp + ebp + 0x80], eax
stosd dword es:[edi], eax
inc ebp
adc byte [edi], cl
mov bh, 8
push ebx
push esi
mov esi, dword [ecx + 0xc]
mov eax, dword [esi]
dec eax
push edi
mov dword [esp + 0xc], ecx
je 0x450687
dec eax
je 0x450643
dec ecx
je 0x45063f
push 0x74481674
pop ds
dec eax
dec eax
je 0x450633
dec eax
jne 0x4506a3
push 0x30
jmp 0x450645
mov dword [esi], 1
jmp 0x4506a3
push 0x11
jmp 0x450649
push 4
ljmp 0x8d51:0x5b086a02
pop ebx
push ecx
lea edi, [esi + 0x18]
push edi
push ebx
call 0xc52459
add esp, 0xc
test eax, eax
jne 0x4506a3
mov eax, dword [ebp + 8]
cmp eax, 0x10
je 0x450675
cmp eax, 0x16
je 0x450675
cmp dword [eax + 0x1d], 0x74
pop es
and dword [esp + 0x50], 0xfffffffe
jmp 0x45068a
mov ecx, dword [esp + 0x50]
fld qword [esi + 0x10]
and ecx, 0xffffffe3
fstp qword [esp + 0x40]
or ecx, 0x23
mov dword [esp + 0x50], ecx
dec esp
and al, 0x50
push edi
lea ecx, [esi + 8]
push ecx
push eax
push ebx
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x24]
push eax
call fcn.004521b4
add esp, 0x18
push 0xffff
push dword [esp + 0x14]
jmp 0x45273c
mov eax, dword [0x461a50]
xor eax, ebp
push 6
mov dword [ebp - 4], eax
lea eax, [ebp - 0xc]
push eax
push 0x1004
push dword [ebp + 8]
mov byte [ebp - 6], 0
call dword [sym.imp.KERNEL32.DLL_GetLocaleInfoA]
test eax, eax
jne 0x452767
or eax, 0xffffffff
jmp 0x452771
lea eax, [ebp - 0xc]
push eax
call fcn.00446d05
pop ecx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0044c784
leave
ret
Function at 0x4506e9
Capabilities:
Query environment variable

Disassembly:
push 0x1c
push 0x4588b8
call fcn.0044972c
xor esi, esi
cmp dword [0x463924], esi
jne 0x450734
lea eax, [ebp - 0x1c]
push eax
xor edi, ebx
inc edi
push edi
push 0x4588b0
push edi
call dword [sym.imp.KERNEL32.DLL_GetStringTypeW]
add eax, 0x890874c0
cmp eax, 0x463904
jmp 0x450734
mov eax, dword [0x463904]
cmp eax, 2
je 0x45082c
cmp eax, esi
je 0x45082c
cmp eax, 0x11
jne 0x450852
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x20], esi
cmp dword [ebp + 0x18], esi
jne 0x450766
mov eax, dword [0x20463950]
mov dword [ebp + 0x18], eax
push esi
push esi
push dword [0xc75ff10]
xor eax, eax
cmp dword [ebp + 0x20], esi
setne al
lea eax, [eax*8 + 0x800001]
push eax
push dword [ebp + 0x18]
call dword [sym.imp.KERNEL32.DLL_MultiByteToWideChar]
mov edi, eax
mov dword [ebp - 0x28], edi
invalid
mov ebx, dword [ebp + 0x1c]
cmp ebx, esi
jne 0x450839
mov ebx, dword [0x463940]
mov edi, dword [ebp + 0x18]
add eax, 0x8b0675ff
cmp eax, 0x463950
push ebx
call 0x10452736
pop ecx
cmp eax, 0xffffffff
jne 0x450856
xor eax, eax
jmp 0x45089a
cmp eax, edi
je 0x450878
push 0
push 0
mov word [ebp + 0x10], cs
push ecx
push dword [ebp + 0xc]
push eax
push edi
call fcn.0045277d
add esp, 0x18
mov esi, eax
test esi, esi
xor al, 0xdc
mov dword [ebp + 0xc], esi
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0x2c]
push dword [ebp + 8]
push ebx
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentStrings]
mov edi, eax
test esi, esi
je 0x450898
push esi
call fcn.00446be1
pop ecx
mov eax, edi
lea esp, [ebp - 0x38]
call fcn.00449767
ret

Function at 0x451730
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
xor ebx, ebx
cmp dword [0x463988], ebx
push esi
push edi
jne 0x4517b0
push str.user32.dll
call dword [sym.imp.KERNEL32.DLL_LoadLibraryA]
mov edi, eax
cmp edi, ebx
je 0x4517eb
mov esi, dword [sym.imp.KERNEL32.DLL_GetProcAddress]
push 0x459144
push edi
call esi
test eax, eax
mov dword [0x463988], eax
je 0x4517eb
push 0x459134
push edi
call esi
push str.GetLastActivePopup
push edi
mov dword [0x46398c], eax
call esi
cmp dword [0x4634ec], 2
mov dword [0x463990], eax
jne 0x4517b0
push str.GetUserObjectInformationA
push edi
call esi
test eax, eax
mov dword [0x463998], eax
je 0x4517b0
push str.GetProcessWindowStation
push edi
call esi
mov dword [0x463994], eax
mov eax, dword [0x463994]
test eax, eax
je 0x4517f5
call eax
test eax, eax
je 0x4517dc
lea ecx, [ebp - 4]
push ecx
push 0xc
lea ecx, [ebp - 0x10]
push ecx
push 1
push eax
call dword [0x463998]
test eax, eax
je 0x4517dc
test byte [ebp - 8], 1
jne 0x4517f5
cmp dword [0x4634f8], 4
jb 0x4517ef
or byte [ebp + 0x12], 0x20
jmp 0x451814
xor eax, eax
jmp 0x451824
or byte [ebp + 0x12], 4
jmp 0x451814
mov eax, dword [0x46398c]
test eax, eax
je 0x451814
call eax
mov ebx, eax
test ebx, ebx
je 0x451814
mov eax, dword [0x463990]
test eax, eax
je 0x451814
push ebx
call eax
mov ebx, eax
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
push ebx
call dword [0x463988]
pop edi
pop esi
pop ebx
leave
ret
Function at 0x4013e5
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x610
push ebx
push esi
mov esi, dword [ebp + 8]
xor ebx, ebx
cmp word [esi], bx
je 0x40151e
push esi
push str.GetDriverInfoReg__s_...
push 3
call fcn.0044fe2e
push esi
lea eax, [ebp - 0x610]
push str.SYSTEMCurrentControlSetControlClass_s
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x18
test byte [0x4a8680], 1
mov dword [ebp + 8], ebx
jne 0x40144a
or dword [0x4a8680], 1
mov eax, dword [0x50e06c]
neg eax
sbb eax, eax
and eax, 0x100
inc eax
mov dword [0x4a867c], eax
jmp 0x40144f
mov eax, dword [0x4a867c]
lea ecx, [ebp + 8]
push ecx
push eax
push ebx
lea eax, [ebp - 0x610]
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x401509
cmp dword [ebp + 8], ebx
je 0x401509
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x210]
push eax
lea eax, [ebp - 8]
push eax
push ebx
push str.InfPath
push dword [ebp + 8]
mov dword [ebp - 8], ebx
mov dword [ebp - 4], 0x104
call esi
test eax, eax
jne 0x4014e1
push 0x5c
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.SHLWAPI.dll_StrChrW]
test eax, eax
lea eax, [ebp - 0x210]
push eax
je 0x4014cb
push dword [ebp + 0xc]
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
jmp 0x4014e1
push 0x50e170
push str._sinf_s
push dword [ebp + 0xc]
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
lea eax, [ebp - 4]
push eax
push dword [ebp + 0x10]
lea eax, [ebp - 8]
push eax
push ebx
push str.DriverDate
push dword [ebp + 8]
mov dword [ebp - 4], 0x104
call esi
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x40151e
call fcn.0044cf74
push eax
push str._err_S
push 2
call fcn.0044fe2e
add esp, 0xc
pop esi
pop ebx
leave
ret 0xc
Function at 0x402225
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x70
push ebx
push esi
push edi
mov edi, ecx
xor ebx, ebx
cmp edi, ebx
je 0x402362
cmp dword [edi + 8], ebx
je 0x402362
cmp dword [0x50efd4], ebx
jne 0x402362
mov si, word [ebp + 8]
push 0x3a
pop eax
push 0x5c
mov word [ebp - 6], ax
pop eax
mov word [ebp - 4], ax
xor eax, eax
push 0x66
mov word [ebp - 2], ax
mov word [ebp - 0x70], ax
lea eax, [ebp - 0x6e]
push ebx
push eax
mov word [ebp - 8], si
call fcn.00449c78
add esp, 0xc
push 0x34
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp - 8]
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeNameForVolumeMountPointW]
test eax, eax
jne 0x4022b4
call fcn.0044cf52
push eax
lea eax, [ebp - 8]
push eax
movzx eax, si
push eax
push str.CheckNewDriveLetter__c___GetVolumeNameForVolumeMountPoint__s___err_s
push 4
call fcn.0044fe2e
add esp, 0x14
jmp 0x402362
mov eax, dword [edi + 8]
push dword [eax + 0x18]
lea eax, [ebp - 0x70]
push eax
movzx eax, si
push eax
push str.CheckNewDriveLetter__c_...____vn_s__c_i
push 4
call fcn.0044fe2e
mov eax, dword [edi + 8]
add esp, 0x14
cmp dword [eax + 0x18], ebx
jle 0x402354
mov dword [ebp + 8], 0x1c
mov ecx, dword [ebp + 8]
mov esi, dword [ecx + eax]
test esi, esi
je 0x402347
cmp dword [0x51adac], 4
jl 0x40231d
lea eax, [esi + 0x930]
push eax
lea eax, [esi + 0x848]
push eax
push dword [esi + 0x840]
push dword [esi + 0xc]
push dword [esi + 8]
push ebx
push str._Volumes__2i__used_i_present_i_devnum__2i_vn_s_mp_s
push 4
call fcn.0044fe2e
add esp, 0x20
cmp dword [esi + 8], 0
je 0x402347
cmp dword [esi + 0xc], 0
je 0x402347
cmp dword [esi + 0x840], 0xffffffff
jle 0x402347
lea eax, [ebp - 0x70]
push eax
lea eax, [esi + 0x848]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
je 0x40236b
mov eax, dword [edi + 8]
add dword [ebp + 8], 4
inc ebx
cmp ebx, dword [eax + 0x18]
jl 0x4022e0
push str._not_found_in_list
push 4
call fcn.0044fe2e
pop ecx
pop ecx
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret 4
mov ecx, esi
call fcn.0040678e
mov ecx, dword [0x510c40]
xor ebx, ebx
push ebx
push 1
push dword [esi + 0x14]
call fcn.0040821e
mov edi, eax
cmp edi, ebx
je 0x4023a8
push 1
mov ecx, edi
call fcn.0040b963
push edi
call fcn.00434f0d
test eax, eax
jne 0x4023a8
push str.cndl
call fcn.0043dec2
cmp dword [0x4a5b38], ebx
je 0x4023cd
mov ecx, dword [0x510c40]
push ebx
push ebx
push dword [esi + 0x10]
call fcn.0040821e
cmp eax, ebx
je 0x4023cd
push 1
mov ecx, eax
call fcn.0040b963
lea eax, [esi + 0x18]
jmp 0x402364
Function at 0x402aed
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x208
push esi
push dword [ebp + 8]
call fcn.00401e76
mov esi, eax
xor eax, eax
cmp esi, eax
je 0x402bde
push ebx
push edi
lea edi, [esi + 0x10a8]
mov dword [ebp + 8], eax
cmp word [edi], ax
jne 0x402b8b
cmp word [esi + 0xc30], ax
je 0x402b8b
mov ebx, dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
push 0x104
push edi
lea eax, [esi + 0xc38]
push eax
call ebx
test eax, eax
jne 0x402b8b
push 0x455404
lea eax, [esi + 0xc30]
push eax
call fcn.0042963e
test eax, eax
je 0x402b8b
lea eax, [esi + 0xc30]
push eax
lea eax, [ebp - 0x208]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push 0x4551b0
push 0x455404
lea eax, [ebp - 0x208]
push eax
call fcn.0042a35d
push 0x104
push edi
lea eax, [ebp - 0x200]
push eax
call ebx
cmp word [edi], 0
mov ebx, dword [ebp + 0xc]
je 0x402ba3
push edi
call fcn.0042bff0
mov dword [ebx], eax
mov dword [ebp + 8], 1
lea eax, [esi + 0x13b0]
cmp word [eax], 0
je 0x402bbe
push eax
call fcn.0042bff0
mov ecx, dword [ebp + 8]
inc dword [ebp + 8]
mov dword [ebx + ecx*4], eax
add esi, 0x1330
cmp word [esi], 0
je 0x402bd9
push esi
call fcn.0042bff0
mov ecx, dword [ebp + 8]
inc dword [ebp + 8]
mov dword [ebx + ecx*4], eax
mov eax, dword [ebp + 8]
pop edi
pop ebx
pop esi
leave
ret 0xc
Function at 0x402fcf
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa1c
push ebx
push esi
mov esi, dword [ebp + 8]
cmp dword [esi + 8], 0
push edi
je 0x40318f
cmp dword [0x51adac], 4
jl 0x40300e
lea eax, [esi + 0xc30]
push eax
lea eax, [esi + 0xfc8]
push eax
push str.CDevList::CheckForChangedComPort_ddn_s_devpath_s
push 4
call fcn.0044fe2e
add esp, 0x10
push 0x455614
lea ebx, [esi + 0xfc8]
push ebx
call fcn.0042958c
test eax, eax
je 0x40318f
lea edi, [esi + 0x13b0]
cmp word [edi], 0
je 0x40318f
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x20c], ax
lea eax, [ebp - 0x20a]
push eax
call fcn.00449c78
add esp, 0xc
push 0x104
lea eax, [ebp - 0x20c]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
push edi
lea eax, [ebp - 0x20c]
push eax
push str.newkn_s_oldkn_s
push 4
call fcn.0044fe2e
add esp, 0x10
push edi
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
je 0x40318f
lea eax, [ebp - 0x20c]
push eax
push edi
push ebx
push dword [esi + 4]
push str.Devs__i__DosDeviceName_s_ComKernelName_s__now_ComKernelName_s_____re_check
push 3
call fcn.0044fe2e
push str.Device_Parameters
lea eax, [esi + 0xe38]
push eax
push str.SystemCurrentControlSetEnum
lea eax, [ebp - 0x60c]
push 0x455538
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x2c
push 0x40
push ebx
push str.PortName
lea eax, [ebp - 0x60c]
push eax
push 0x80000002
call fcn.00428e72
test eax, eax
je 0x40318f
push ebx
push str.new_res_PortName_s
push 4
call fcn.0044fe2e
add esp, 0xc
push 0x208
lea eax, [ebp - 0xa1c]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
test eax, eax
je 0x40318f
lea eax, [ebp - 0xa1c]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push edi
push ebx
push dword [esi + 4]
push str.Devs__i__new_DosDeviceName_s_ComKernelName_s
push 3
call fcn.0044fe2e
add esp, 0x14
xor ebx, ebx
push ebx
lea eax, [ebp + 8]
push eax
lea edi, [esi + 0x1738]
push edi
lea eax, [ebp - 4]
push eax
push 0xd
push dword [esi + 0x10]
mov dword [ebp + 8], 0x100
call dword [sym.imp.CFGMGR32.dll_CM_Get_DevNode_Registry_PropertyW]
push 0x4554d8
push edi
call dword [sym.imp.SHLWAPI.dll_StrTrimW]
mov ecx, dword [0x510c40]
push ebx
push ebx
push dword [esi + 0x10]
call fcn.0040821e
cmp eax, ebx
je 0x40318a
push 1
mov ecx, eax
call fcn.0040b963
xor eax, eax
inc eax
jmp 0x403191
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret 4
Function at 0x4051c7
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x464
and dword [ebp - 0x18], 0
push ebx
push esi
push edi
push 0x1c
pop esi
mov dword [ebp - 0x14], ecx
push 6
pop ebx
xor eax, eax
mov ecx, ebx
lea edi, [ebp - 0x60]
mov dword [ebp - 0x64], esi
rep stosd dword es:[edi], eax
mov ecx, ebx
mov edx, 0x47df88
mov dword [ebp - 0x464], ebx
lea edi, [ebp - 0x44]
xor ebx, ebx
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x24], 0x4549ec
mov dword [ebp - 0x20], 0x47df98
mov dword [ebp - 0x1c], 0x47dfe8
rep stosd dword es:[edi], eax
mov dword [ebp - 4], ebx
mov dword [ebp - 8], edx
push 0x12
push ebx
push ebx
push dword [ebp - 8]
mov dword [ebp - 0x10], ebx
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsW]
mov dword [ebp - 0xc], eax
cmp eax, 0xffffffff
je 0x405397
lea eax, [ebp - 0x48]
push eax
push ebx
jmp 0x405379
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x2c]
push eax
push 0x400
lea eax, [ebp - 0x464]
push eax
lea eax, [ebp - 0x48]
push eax
push dword [ebp - 0xc]
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailW]
test eax, eax
je 0x40536f
push dword [ebp - 0x50]
mov ecx, dword [ebp - 0x14]
call fcn.00401c56
mov esi, eax
cmp esi, ebx
je 0x40536f
lea eax, [ebp - 0x460]
push eax
lea edi, [esi + 0xc30]
push edi
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
cmp eax, 4
jbe 0x4052bb
push 0x40
lea eax, [esi + 0x12b0]
push eax
lea eax, [esi + 0xc38]
push eax
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
mov edi, dword [ebp - 4]
cmp edi, 3
jg 0x405317
lea eax, [ebp - 0x460]
push eax
call fcn.0042f5de
cmp edi, ebx
mov dword [esi + 0x3ab0], eax
jl 0x4052f4
xor ecx, ecx
inc ecx
cmp edi, ecx
jle 0x4052ee
push 2
pop ecx
cmp edi, ecx
je 0x4052ee
push 3
pop ecx
cmp edi, ecx
jne 0x4052f4
mov dword [esi + 0x3ab4], ecx
push eax
mov eax, dword [esi + 0x3ab4]
push dword [eax*4 + 0x4a5018]
lea eax, [esi + 0x1088]
push str._S_i
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
cmp edi, ebx
jl 0x40534d
cmp edi, 1
jle 0x405332
cmp edi, 2
jne 0x40534d
push dword [esi + 0x3ab0]
push str..CdRom_i
jmp 0x40533d
push dword [esi + 0x3ab0]
push str..PhysicalDrive_i
lea eax, [esi + 0x1048]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [esi + 0x1048]
cmp word [eax], bx
je 0x405368
push 0x40
add esi, 0x1330
push esi
push eax
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
push ebx
call dword [sym.imp.KERNEL32.dll_Sleep]
inc dword [ebp - 0x10]
lea eax, [ebp - 0x48]
push eax
push dword [ebp - 0x10]
push dword [ebp - 8]
push ebx
push dword [ebp - 0xc]
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInterfaces]
test eax, eax
jne 0x405247
push dword [ebp - 0xc]
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
inc dword [ebp - 4]
mov eax, dword [ebp - 4]
mov eax, dword [ebp + eax*4 - 0x28]
mov dword [ebp - 8], eax
cmp eax, ebx
jne 0x405221
pop edi
pop esi
pop ebx
leave
ret
Function at 0x405514
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1a4
push ebx
push edi
push dword [ebp + 8]
mov edi, ecx
push str.FindNewChildDevices__i_...
xor ebx, ebx
push 4
mov dword [ebp - 8], edi
mov dword [ebp - 0x10], ebx
call fcn.0044fe2e
add esp, 0xc
cmp dword [edi + 0x400c], ebx
mov dword [ebp - 0x14], ebx
jle 0x4056b3
lea eax, [edi + 0xc]
mov dword [ebp - 0xc], eax
push esi
mov eax, dword [ebp - 0xc]
mov esi, dword [eax]
cmp esi, ebx
je 0x40569c
cmp dword [esi], ebx
je 0x40569c
cmp dword [esi + 8], ebx
je 0x40569c
cmp dword [0x510c90], ebx
jne 0x405583
cmp dword [esi + 0x3ab8], ebx
jne 0x40569c
lea edi, [esi + 0xe38]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [esi + 0x24]
push eax
push edi
push dword [esi + 0x10]
push str._thinking_of__u___s____u
push 4
call fcn.0044fe2e
add esp, 0x14
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [esi + 0x24]
cmp eax, 0x2710
jae 0x405699
push edi
push dword [esi + 0x10]
push 0x456744
push 4
call fcn.0044fe2e
add esp, 0x10
push ebx
push dword [esi + 0x10]
lea eax, [ebp - 4]
push eax
mov dword [ebp - 4], ebx
call dword [sym.imp.CFGMGR32.dll_CM_Get_Child]
test eax, eax
jne 0x405699
push ebx
push 0xc8
lea eax, [ebp - 0x1a4]
push eax
push dword [ebp - 4]
call dword [sym.imp.CFGMGR32.dll_CM_Get_Device_IDW]
test eax, eax
jne 0x405686
push dword [ebp - 4]
lea eax, [ebp - 0x1a4]
push eax
call fcn.00401354
test eax, eax
jne 0x405686
push dword [ebp - 4]
mov ecx, dword [ebp - 8]
call fcn.00401c56
mov esi, eax
cmp esi, ebx
je 0x40563b
cmp dword [esi + 8], ebx
je 0x405634
mov eax, 0x456740
jmp 0x405640
mov eax, 0x45673c
jmp 0x405640
mov eax, 0x456738
push eax
push esi
push dword [ebp - 4]
push str._DevInstChild_u_pDevChild0x_08Ix_pDevChild__IsPresent_S
push 4
call fcn.0044fe2e
add esp, 0x14
cmp esi, ebx
je 0x40565d
cmp dword [esi + 8], ebx
jne 0x405686
cmp dword [ebp + 8], ebx
je 0x405673
push ebx
push ebx
push dword [ebp - 4]
push 0x4551b0
call fcn.004404f6
jmp 0x405686
push dword [ebp - 4]
mov ecx, dword [ebp - 8]
push ebx
call fcn.004046f4
test eax, eax
je 0x405686
inc dword [ebp - 0x10]
push ebx
push dword [ebp - 4]
lea eax, [ebp - 4]
push eax
call dword [sym.imp.CFGMGR32.dll_CM_Get_Sibling]
jmp 0x4055de
mov edi, dword [ebp - 8]
inc dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
add dword [ebp - 0xc], 4
cmp eax, dword [edi + 0x400c]
jl 0x405551
pop esi
mov eax, dword [ebp - 0x10]
pop edi
pop ebx
leave
ret 4