joyce8/EMBER2024-capa huggingface dataset:
Function at 0x404070
Capabilities:
Get file version info

Disassembly:
push ebp
lea ebp, [esp - 0x1f94]
mov eax, 0x2014
call fcn.00476b30
mov eax, dword [0x4f3bd0]
xor eax, ebp
mov dword [ebp + 0x1f90], eax
mov eax, dword [ebp + 0x1f9c]
push esi
mov esi, 0x1fff
push esi
mov dword [ebp - 0x74], eax
lea eax, [ebp - 0x6f]
push 0
push eax
mov byte [ebp - 0x70], 0
call fcn.00475410
add esp, 0xc
lea eax, [ebp - 0x7c]
push eax
push edi
call sub.VERSION.dll_GetFileVersionInfoSizeW
test eax, eax
je 0x4040ff
cmp eax, esi
ja 0x4040ff
lea ecx, [ebp - 0x70]
push ecx
push eax
push 0
push edi
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
je 0x4040ff
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x78]
push eax
push 0x4d2f50
lea eax, [ebp - 0x70]
push eax
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x4040ff
mov eax, dword [ebp - 0x78]
movzx eax, word [eax + 0xa]
mov ecx, dword [ebp - 0x74]
mov dword [ecx], eax
xor eax, eax
inc eax
jmp 0x404101
xor eax, eax
mov ecx, dword [ebp + 0x1f90]
xor ecx, ebp
pop esi
call fcn.0047548a
add ebp, 0x1f94
leave
ret 4

Function at 0x404896
Capabilities:
Move file

Disassembly:
push ebp
sub esp, 0x800
lea ebp, [esp - 4]
mov eax, dword [0x4f3bd0]
xor eax, ebp
mov dword [ebp + 0x800], eax
push 0x10
mov eax, 0x4b5efb
call fcn.004764b0
mov esi, dword [ebp + 0x80c]
mov eax, dword [ebp + 0x810]
mov ecx, dword [ebp + 0x814]
mov edx, dword [ebp + 0x818]
mov edi, dword [ebp + 0x81c]
xor ebx, ebx
mov dword [ebp - 0x1c], vtable.CResourceUnpack.0
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], ebx
push edx
push ecx
push eax
lea ecx, [ebp - 0x1c]
mov dword [ebp - 4], ebx
call fcn.00404dce
test eax, eax
jne 0x404920
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x800]
xor ecx, ebp
call fcn.0047548a
add ebp, 0x804
leave
ret 0x14
push edi
lea ecx, [ebp - 0x10]
call fcn.0040260e
push 1
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 1
call fcn.0040515f
test eax, eax
jne 0x40494c
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.00402963
jmp 0x4048f9
push 0x800
lea eax, [ebp]
push ebx
push eax
call fcn.00475410
add esp, 0xc
push 0x4d3234
push dword [ebp - 0x10]
lea eax, [ebp]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea eax, [ebp]
push ebx
push eax
call fcn.0040239b
pop ecx
pop ecx
test eax, eax
je 0x40493f
lea eax, [ebp]
lea edi, [esi + 8]
push eax
mov ecx, edi
call fcn.00402894
push dword [edi]
call fcn.0040228d
mov dword [esi + 0x10], eax
cmp eax, ebx
je 0x40493f
push str.GetMiniUI4
mov dword [0x4fb8a0], eax
push dword [esi + 0x10]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebx
jne 0x4049c5
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.00402963
mov eax, ebx
jmp 0x4048fb
call eax
push 4
push ebx
push dword [edi]
mov dword [esi + 0x14], eax
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
xor ebx, ebx
inc ebx
jmp 0x4049b3
Function at 0x4049da
Capabilities:
Check if file exists
Delete file
Move file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x210
mov eax, dword [0x4f3bd0]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 0x210], esi
test esi, esi
je 0x404abf
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x404abf
push 0
push esi
call fcn.0040239b
pop ecx
pop ecx
test eax, eax
je 0x404abf
push dword [ebp - 0x210]
lea esi, [edi + 8]
mov ecx, esi
call fcn.00402894
push dword [esi]
call fcn.0040228d
mov dword [edi + 0x10], eax
test eax, eax
je 0x404abf
push str.GetMiniUI4
mov dword [0x4fb8a0], eax
push dword [edi + 0x10]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x404abf
call eax
push 4
push 0
push dword [esi]
mov dword [edi + 0x14], eax
mov edi, dword [sym.imp.KERNEL32.dll_MoveFileExW]
call edi
push 0x208
lea eax, [ebp - 0x20c]
push 0
push eax
call fcn.00475410
mov eax, dword [esi]
add esp, 0xc
push dword [eax - 0xc]
mov ecx, esi
call fcn.004027b2
push eax
push 0x104
lea eax, [ebp - 0x20c]
push eax
call fcn.004023d4
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
push 4
push 0
lea eax, [ebp - 0x20c]
push eax
call edi
xor eax, eax
inc eax
jmp 0x404ac1
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.0047548a
leave
ret 8

Function at 0x404c45
Capabilities:
Check if file exists
Get common file path

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1104
call fcn.00476b30
mov eax, dword [0x4f3bd0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov esi, 0x800
push esi
xor edi, edi
lea eax, [ebp - 0x1104]
push edi
push eax
call fcn.00475410
push esi
lea eax, [ebp - 0x904]
push edi
push eax
call fcn.00475410
add esp, 0x18
push edi
push 0x1a
lea eax, [ebp - 0x1104]
push eax
push edi
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x404d0a
push 0x100
lea eax, [ebp - 0x104]
push edi
push eax
call fcn.00475410
add esp, 0xc
lea eax, [ebp - 0x104]
push 0x80
push eax
call fcn.00401000
pop ecx
pop ecx
lea eax, [ebp - 0x104]
push eax
lea eax, [ebp - 0x1104]
push eax
lea eax, [ebp - 0x904]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea eax, [ebp - 0x904]
push str..tmp
push eax
call fcn.00477a07
pop ecx
pop ecx
lea eax, [ebp - 0x904]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x404d1b
inc edi
cmp edi, 0xa
jl 0x404cb2
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0047548a
leave
ret
lea eax, [ebp - 0x904]
push eax
mov ecx, ebx
call fcn.00402894
xor eax, eax
inc eax
jmp 0x404d0c
Function at 0x404e09
Capabilities:
Delete file

Disassembly:
push ebp
mov ebp, esp
push edi
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push 0
push 0x80
push 1
push 0
push 1
push 0xc0000000
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
cmp edi, 0xffffffff
jne 0x404e3c
xor eax, eax
jmp 0x404e5b
push dword [esi + 8]
mov ecx, dword [esi + 4]
and dword [ebp + 8], 0
push edi
lea edx, [ebp + 8]
call fcn.00404e60
pop ecx
pop ecx
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
inc eax
pop edi
pop ebp
ret 4

Function at 0x404e60
Capabilities:
Write file on windows

Disassembly:
push ebp
lea ebp, [esp - 0xf98]
mov eax, 0x1018
call fcn.00476b30
mov eax, dword [0x4f3bd0]
xor eax, ebp
mov dword [ebp + 0xf94], eax
mov eax, dword [ebp + 0xfa0]
push ebx
push esi
push edi
mov edi, dword [ebp + 0xfa4]
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], edx
cmp eax, 0xffffffff
je 0x404f5d
test ecx, ecx
je 0x404f5d
test edi, edi
jle 0x404f5d
mov eax, edi
cdq
and edx, 0xfff
add eax, edx
mov esi, eax
sar esi, 0xc
and edi, 0x80000fff
jns 0x404ecd
dec edi
or edi, 0xfffff000
inc edi
and dword [ebp - 0x70], 0
and dword [ebp - 0x78], 0
mov dword [ebp - 0x74], ecx
test esi, esi
jle 0x404f20
mov ebx, 0x1000
push ebx
push dword [ebp - 0x74]
lea eax, [ebp - 0x6c]
push eax
call fcn.00479950
add esp, 0xc
push 0
lea eax, [ebp - 0x70]
push eax
push ebx
lea eax, [ebp - 0x6c]
push eax
push dword [ebp - 0x80]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x404f5d
mov eax, dword [ebp - 0x7c]
test eax, eax
je 0x404f15
mov ecx, dword [ebp - 0x70]
add dword [eax], ecx
add dword [ebp - 0x74], ebx
inc dword [ebp - 0x78]
cmp dword [ebp - 0x78], esi
jl 0x404ee1
test edi, edi
jle 0x404f58
push edi
push dword [ebp - 0x74]
lea eax, [ebp - 0x6c]
push eax
call fcn.00479950
add esp, 0xc
push 0
lea eax, [ebp - 0x70]
push eax
push edi
lea eax, [ebp - 0x6c]
push eax
push dword [ebp - 0x80]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x404f5d
mov eax, dword [ebp - 0x7c]
test eax, eax
je 0x404f58
mov ecx, dword [ebp - 0x70]
add dword [eax], ecx
xor eax, eax
inc eax
jmp 0x404f5f
xor eax, eax
mov ecx, dword [ebp + 0xf94]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0047548a
add ebp, 0xf98
leave
ret
Function at 0x404f77
Capabilities:
Delete file

Disassembly:
push 8
mov eax, 0x4b0048
call fcn.004764b0
mov edi, 0x4f9e00
push edi
lea ecx, [ebp - 0x10]
call fcn.0040293e
and dword [ebp - 4], 0
lea eax, [ebp - 0x10]
push eax
call fcn.00404c45
pop ecx
test eax, eax
jne 0x404fb8
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.00402963
xor eax, eax
call fcn.00476588
ret 0xc
mov ebx, dword [ebp - 0x10]
push ebx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov esi, dword [ebp + 8]
push ebx
call fcn.00404e09
test eax, eax
jne 0x404fd4
lea ecx, [ebx - 0x10]
jmp 0x404fa9
push edi
lea ecx, [ebp - 0x14]
call fcn.0040293e
lea eax, [ebp - 0x14]
push eax
mov byte [ebp - 4], 1
call fcn.00404c45
mov esi, dword [ebp - 0x14]
pop ecx
push esi
xor edi, edi
push edi
call dword [sym.imp.SHELL32.dll_SHCreateDirectory]
cmp dword [ebp + 0x10], edi
je 0x405016
push edi
push esi
push ebx
call fcn.004738da
add esp, 0xc
test eax, eax
jge 0x40503b
lea ecx, [esi - 0x10]
call fcn.00402963
jmp 0x404fcf
mov ecx, dword [ebp + 8]
push esi
push ebx
call fcn.0040535e
test eax, eax
jne 0x40503b
lea ecx, [esi - 0x10]
call fcn.00402963
lea ecx, [ebx - 0x10]
call fcn.00402963
mov eax, edi
jmp 0x404fb0
mov ecx, dword [ebp + 0xc]
lea eax, [ebp - 0x14]
push eax
call fcn.00401df2
push ebx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
xor edi, edi
inc edi
jmp 0x405024

Function at 0x405053
Capabilities:
Check if file exists
Delete file

Disassembly:
push 0xc
mov eax, 0x4b10bc
call fcn.004764b0
mov esi, ecx
mov dword [ebp - 0x18], esi
mov ebx, 0x4f9e00
push ebx
lea ecx, [ebp - 0x10]
call fcn.0040293e
and dword [ebp - 4], 0
lea eax, [ebp - 0x10]
push eax
call fcn.004010d8
pop ecx
test eax, eax
jne 0x4050a4
push 0x4d32b8
call fcn.00404d2e
pop ecx
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.00402963
xor eax, eax
call fcn.00476588
ret 8
mov edi, dword [ebp - 0x10]
push edi
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push edi
call fcn.00404e09
test eax, eax
jne 0x4050c8
push str.UnpackToTempFolder_SaveToFile_Failed__
call fcn.00404d2e
pop ecx
lea ecx, [edi - 0x10]
jmp 0x405095
push ebx
lea ecx, [ebp - 0x14]
call fcn.0040293e
lea eax, [ebp - 0x14]
push eax
mov byte [ebp - 4], 1
call fcn.004010d8
mov esi, dword [ebp - 0x14]
pop ecx
push esi
xor ebx, ebx
push ebx
call dword [sym.imp.SHELL32.dll_SHCreateDirectory]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40510e
push esi
push str.UnpackToTempFolder_Create_Folder_Failed__Folder_:__s
call fcn.00404d2e
pop ecx
pop ecx
lea ecx, [esi - 0x10]
call fcn.00402963
jmp 0x4050c3
cmp dword [ebp + 0xc], ebx
je 0x40513a
push ebx
push esi
push edi
call fcn.004738da
add esp, 0xc
test eax, eax
jl 0x405104
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x14]
push eax
call fcn.00401df2
push edi
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
xor ebx, ebx
inc ebx
jmp 0x405148
mov ecx, dword [ebp - 0x18]
push esi
push edi
call fcn.0040535e
test eax, eax
jne 0x405122
lea ecx, [esi - 0x10]
call fcn.00402963
lea ecx, [edi - 0x10]
call fcn.00402963
mov eax, ebx
jmp 0x40509c
Function at 0x40515f
Capabilities:
Delete file

Disassembly:
push 8
mov eax, 0x4b575e
call fcn.004764b0
mov esi, ecx
mov dword [ebp - 0x14], esi
push 0x4f9e00
lea ecx, [ebp - 0x10]
call fcn.0040293e
and dword [ebp - 4], 0
lea eax, [ebp - 0x10]
push eax
call fcn.004010d8
pop ecx
test eax, eax
jne 0x4051a4
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.00402963
xor eax, eax
call fcn.00476588
ret 8
mov edi, dword [ebp - 0x10]
mov ebx, dword [sym.imp.KERNEL32.dll_DeleteFileW]
push edi
call ebx
push edi
call fcn.00404e09
test eax, eax
jne 0x4051bf
lea ecx, [edi - 0x10]
jmp 0x405195
push dword [ebp + 8]
lea ecx, [ebp + 8]
call fcn.00403c36
mov byte [ebp - 4], 1
mov esi, dword [ebp + 8]
push esi
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectory]
cmp dword [ebp + 0xc], 0
je 0x4051fa
push 0
push esi
push edi
call fcn.004738da
add esp, 0xc
test eax, eax
jge 0x405221
lea ecx, [esi - 0x10]
call fcn.00402963
jmp 0x4051ba
mov ecx, dword [ebp - 0x14]
push esi
push edi
call fcn.0040535e
test eax, eax
jne 0x405221
xor ebx, ebx
lea ecx, [esi - 0x10]
call fcn.00402963
lea ecx, [edi - 0x10]
call fcn.00402963
mov eax, ebx
jmp 0x40519c
push edi
call ebx
xor ebx, ebx
inc ebx
jmp 0x40520a

Function at 0x405229
Capabilities:
Check if file exists
Delete file

Disassembly:
push 4
mov eax, 0x4b51c9
call fcn.004764b0
push dword [esi]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x405249
call fcn.00476588
ret 4
push 0x4f9e00
lea ecx, [ebp - 0x10]
call fcn.0040293e
lea eax, [ebp - 0x10]
xor edi, edi
push eax
mov dword [ebp - 4], edi
call fcn.004010d8
mov ebx, dword [ebp - 0x10]
pop ecx
push ebx
push edi
call dword [sym.imp.SHELL32.dll_SHCreateDirectory]
mov eax, dword [esi]
push edi
push ebx
push eax
call fcn.004738da
add esp, 0xc
test eax, eax
jge 0x40528d
lea ecx, [ebx - 0x10]
call fcn.00402963
mov eax, edi
jmp 0x405241
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x10]
push eax
call fcn.00401df2
push dword [esi]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
xor edi, edi
inc edi
jmp 0x405281

Function at 0x405403
Capabilities:
Enumerate processes

Disassembly:
push ebp
lea ebp, [esp - 0x1b8]
sub esp, 0x238
mov eax, dword [0x4f3bd0]
xor eax, ebp
mov dword [ebp + 0x1b4], eax
mov eax, dword [ebp + 0x1c0]
and dword [ebp - 0x7c], 0
push edi
push 0
push 2
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x78], 0x22c
call sub.KERNEL32.dll_CreateToolhelp32Snapshot
mov edi, eax
cmp edi, 0xffffffff
je 0x405498
lea eax, [ebp - 0x78]
push eax
push edi
call sub.KERNEL32.dll_Process32FirstW
test eax, eax
je 0x405491
push esi
mov esi, dword [sym.imp.SHLWAPI.dll_StrCmpIW]
push ebx
lea eax, [ebp - 0x54]
push eax
call esi
test eax, eax
je 0x405489
cmp dword [ebp + 0x1c4], 0
jne 0x405479
push dword [ebp - 0x80]
lea eax, [ebp - 0x54]
push eax
call esi
test eax, eax
je 0x405489
lea eax, [ebp - 0x78]
push eax
push edi
call sub.KERNEL32.dll_Process32NextW
test eax, eax
jne 0x405458
jmp 0x405490
mov dword [ebp - 0x7c], 1
pop esi
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp + 0x1b4]
mov eax, dword [ebp - 0x7c]
xor ecx, ebp
pop edi
call fcn.0047548a
add ebp, 0x1b8
leave
ret
Function at 0x4054e7
Capabilities:
Check if file exists
Query or enumerate registry value

Disassembly:
push ebp
lea ebp, [esp - 0xa0]
sub esp, 0x120
mov eax, dword [0x4f3bd0]
xor eax, ebp
mov dword [ebp + 0x9c], eax
mov eax, dword [ebp + 0xb0]
push ebx
push esi
mov esi, ecx
mov ecx, dword [ebp + 0xb8]
mov ebx, edx
mov dword [ebp - 0x74], eax
mov eax, dword [ebp + 0xa8]
mov edx, edi
mov dword [ebp - 0x80], esi
mov dword [ebp - 0x7c], ebx
call fcn.004054b1
mov ecx, dword [ebp + 0xb8]
mov eax, dword [ebp + 0xac]
mov edx, ebx
call fcn.004054b1
mov ecx, dword [ebp + 0xb8]
mov eax, dword [ebp + 0xb4]
mov edx, dword [ebp - 0x74]
call fcn.004054b1
lea eax, [ebp - 0x6c]
push eax
push 0x101
xor ebx, ebx
push ebx
push edi
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov dword [ebp - 0x78], 0x104
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x6c], ebx
call esi
test eax, eax
jne 0x4055c6
lea eax, [ebp - 0x78]
push eax
lea eax, [ebp - 0x68]
push eax
push ebx
push ebx
push dword [ebp - 0x7c]
push dword [ebp - 0x6c]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x4055b8
push dword [ebp - 0x74]
lea eax, [ebp - 0x68]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
test eax, eax
je 0x4055b8
lea eax, [ebp - 0x68]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x4055b8
mov dword [ebp - 0x70], 1
push dword [ebp - 0x6c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 0x70], ebx
jne 0x405623
lea eax, [ebp - 0x6c]
push eax
push 0x201
push ebx
push edi
push dword [ebp - 0x80]
call esi
test eax, eax
jne 0x405623
lea eax, [ebp - 0x78]
push eax
lea eax, [ebp - 0x68]
push eax
push ebx
push ebx
push dword [ebp - 0x7c]
push dword [ebp - 0x6c]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x40561a
push dword [ebp - 0x74]
lea eax, [ebp - 0x68]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
test eax, eax
je 0x40561a
lea eax, [ebp - 0x68]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x40561a
mov dword [ebp - 0x70], 1
push dword [ebp - 0x6c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp + 0x9c]
mov eax, dword [ebp - 0x70]
pop esi
xor ecx, ebp
pop ebx
call fcn.0047548a
add ebp, 0xa0
leave
ret
Function at 0x40563d
Capabilities:
Enumerate files on windows

Disassembly:
push 0x1d8
mov eax, 0x4b4b75
call fcn.00476519
mov eax, dword [ebp + 8]
xor ebx, ebx
push eax
mov esi, ecx
mov dword [ebp - 0x1c8], eax
mov dword [ebp - 0x1ac], ebx
call fcn.00476880
pop ecx
lea ecx, [ebp - 0x1c4]
mov dword [ebp - 0x1cc], eax
call fcn.0040a6d2
push esi
lea ecx, [ebp - 0x2c]
mov dword [ebp - 4], ebx
call fcn.0040a68e
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x1c4]
mov byte [ebp - 4], 1
call fcn.0040a711
xor edi, edi
inc edi
jmp 0x405845
cmp dword [ebp - 0x1ac], ebx
jne 0x40586c
lea eax, [ebp - 0x1c4]
push eax
push dword [ebp - 0x1b8]
lea ecx, [ebp - 0x1dc]
call fcn.0040ad18
lea ecx, [ebp - 0x1dc]
call fcn.0040ad4a
push eax
lea ecx, [ebp - 0x2c]
call fcn.0040b77b
lea eax, [ebp - 0x1c4]
push eax
mov byte [ebp - 4], 2
push dword [ebp - 0x1b8]
lea ecx, [ebp - 0x1d4]
call fcn.0040ad18
mov esi, dword [ebp - 0x1d0]
push dword [ebp - 0x1b4]
lea ecx, [esi + 0x1c]
mov eax, esi
call fcn.0040af1c
mov eax, dword [ebp - 0x1b4]
pop ecx
lea edx, [ebp - 0x1bc]
push edx
lea ecx, [eax - 0x1c]
push eax
push ecx
call fcn.0040af5a
sub dword [ebp - 0x1b4], 0x1c
add esp, 0xc
lea eax, [ebp - 0x1c4]
push eax
push esi
lea ecx, [ebp - 0x1e4]
call fcn.0040ad18
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x48]
call fcn.0040b77b
push 0x4d33d4
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 3
call fcn.0040a796
cmp dword [ebp - 0x30], 0x10
mov eax, dword [ebp - 0x44]
jae 0x405766
lea eax, [ebp - 0x44]
lea ecx, [ebp - 0x1a8]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x40583b
test byte [ebp - 0x1a8], 0x10
je 0x4057f5
cmp byte [ebp - 0x17c], 0x2e
jne 0x4057aa
cmp byte [ebp - 0x17b], bl
je 0x405816
cmp byte [ebp - 0x17b], 0x2e
jne 0x4057aa
cmp byte [ebp - 0x17a], bl
je 0x405816
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x64]
call fcn.0040b77b
push 0x4d33dc
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 4
call fcn.0040a796
lea eax, [ebp - 0x17c]
push eax
lea ecx, [ebp - 0x64]
call fcn.0040a796
lea eax, [ebp - 0x64]
push eax
lea ecx, [ebp - 0x1c4]
call fcn.0040a711
push ebx
push edi
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 3
call fcn.0040b7d9
jmp 0x405816
mov eax, dword [ebp - 0x1cc]
dec eax
push eax
push dword [ebp - 0x1c8]
lea eax, [ebp - 0x17c]
push eax
call fcn.00490d95
add esp, 0xc
test eax, eax
je 0x40582e
lea eax, [ebp - 0x1a8]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x40577f
jmp 0x405834
mov dword [ebp - 0x1ac], edi
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
push ebx
push edi
lea ecx, [ebp - 0x48]
call fcn.0040b7d9
push ebx
push edi
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], bl
call fcn.0040b7d9
mov eax, dword [ebp - 0x1b4]
sub eax, dword [ebp - 0x1b8]
push 0x1c
cdq
pop ecx
idiv ecx
test eax, eax
jne 0x40569e
lea ecx, [ebp - 0x1c4]
call fcn.0040a8ab
push dword [ebp - 0x1c4]
call fcn.00472af9
mov eax, dword [ebp - 0x1ac]
pop ecx
call fcn.0047659c
ret
Function at 0x405a2d
Capabilities:
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push 0x238
mov eax, 0x4b4e9b
call fcn.00476519
mov eax, dword [ebp + 8]
mov dword [ebp - 0x224], eax
mov eax, dword [ebp + 0x44]
mov dword [ebp - 0x240], eax
mov eax, dword [ebp + 0x48]
mov dword [ebp - 0x238], eax
xor esi, esi
inc esi
mov dword [ebp - 4], esi
mov eax, dword [ebp + 0x20]
xor ebx, ebx
lea edi, [eax - 1]
mov dword [ebp - 0x230], ebx
mov dword [ebp - 0x228], ebx
cmp eax, edi
ja 0x405a7a
call fcn.00474cfb
cmp dword [ebp + 0x24], 0x10
mov eax, dword [ebp + 0x10]
jae 0x405a86
lea eax, [ebp + 0x10]
cmp byte [eax + edi], 0x5c
je 0x405a9a
push 0x5c
mov ebx, esi
lea edi, [ebp + 0xc]
call fcn.0040a7b3
xor ebx, ebx
cmp dword [ebp + 0x24], 0x10
mov eax, dword [ebp + 0x10]
jae 0x405aa6
lea eax, [ebp + 0x10]
lea ecx, [ebp - 0x228]
push ecx
push 0x20019
push ebx
push eax
push dword [ebp - 0x224]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x405c02
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
lea eax, [ebp - 0x224]
push eax
push ebx
push ebx
push ebx
push dword [ebp - 0x228]
mov dword [ebp - 0x224], ebx
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyA]
test eax, eax
jne 0x405bf6
cmp dword [ebp - 0x224], ebx
je 0x405bf6
mov dword [ebp - 0x244], esi
mov dword [ebp - 0x22c], ebx
jbe 0x405bf6
mov edi, 0x104
cmp dword [ebp - 0x230], ebx
jne 0x405bf6
push 0x103
lea eax, [ebp - 0x117]
push ebx
push eax
mov byte [ebp - 0x118], bl
call fcn.00475410
add esp, 0xc
push ebx
push ebx
push ebx
push ebx
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x118]
push eax
push dword [ebp - 0x22c]
mov dword [ebp - 0x23c], edi
push dword [ebp - 0x228]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
jne 0x405bde
cmp dword [ebp + 0x40], 0x10
mov eax, dword [ebp + 0x2c]
jae 0x405b77
lea eax, [ebp + 0x2c]
push dword [ebp + 0x3c]
push eax
lea eax, [ebp - 0x118]
push eax
call fcn.00490d95
add esp, 0xc
test eax, eax
jne 0x405bde
lea eax, [ebp - 0x234]
push eax
lea eax, [ebp - 0x220]
push eax
lea eax, [ebp - 0x244]
push eax
push dword [ebp - 0x240]
lea eax, [ebp - 0x118]
push eax
push dword [ebp - 0x228]
mov dword [ebp - 0x234], edi
call dword [sym.imp.SHLWAPI.dll_SHGetValueA]
test eax, eax
jne 0x405bde
push dword [ebp - 0x238]
lea ecx, [ebp - 0x220]
call fcn.0040563d
pop ecx
mov dword [ebp - 0x230], eax
inc dword [ebp - 0x22c]
mov eax, dword [ebp - 0x22c]
cmp eax, dword [ebp - 0x224]
jb 0x405b16
push dword [ebp - 0x228]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push ebx
push esi
lea ecx, [ebp + 0xc]
call fcn.0040b7d9
push ebx
push esi
lea ecx, [ebp + 0x28]
call fcn.0040b7d9
mov eax, dword [ebp - 0x230]
call fcn.0047659c
ret
Function at 0x405cfc
Capabilities:
Check if file exists
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push ebp
lea ebp, [esp - 0x3a8]
sub esp, 0x428
mov eax, dword [0x4f3bd0]
xor eax, ebp
mov dword [ebp + 0x3a4], eax
push ebx
push esi
push 4
mov esi, ecx
pop ecx
mov ebx, edx
push 0x23
pop eax
mov edx, esi
mov dword [ebp - 0x74], ebx
call fcn.004054b1
push 4
pop ecx
push 0xb
pop eax
mov edx, ebx
call fcn.004054b1
push 4
pop ecx
push 8
pop eax
mov edx, edi
call fcn.004054b1
lea eax, [ebp - 0x68]
push eax
push 0x20019
xor ebx, ebx
push ebx
push esi
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x68], ebx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x405e43
push ebx
push ebx
push ebx
push ebx
lea eax, [ebp - 0x64]
push eax
push ebx
push ebx
lea eax, [ebp - 0x7c]
push eax
push ebx
push ebx
push ebx
push dword [ebp - 0x68]
mov dword [ebp - 0x7c], ebx
mov dword [ebp - 0x64], ebx
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyA]
test eax, eax
jne 0x405e43
mov dword [ebp - 0x60], ebx
cmp dword [ebp - 0x64], ebx
jbe 0x405e43
mov esi, 0x200
cmp dword [ebp - 0x6c], ebx
jne 0x405e43
push 0x1ff
lea eax, [ebp + 0x1a5]
push ebx
push eax
mov byte [ebp + 0x1a4], bl
call fcn.00475410
add esp, 0xc
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp - 0x5c]
push eax
lea eax, [ebp - 0x80]
push eax
push ebx
lea eax, [ebp - 0x78]
push eax
lea eax, [ebp + 0x1a4]
push eax
push dword [ebp - 0x60]
mov dword [ebp - 0x78], esi
push dword [ebp - 0x68]
mov dword [ebp - 0x70], esi
call dword [sym.imp.ADVAPI32.dll_RegEnumValueA]
test eax, eax
jne 0x405e34
push 0xa
push dword [ebp - 0x74]
lea eax, [ebp + 0x1a4]
push eax
call fcn.00490d95
add esp, 0xc
test eax, eax
jne 0x405e34
push edi
lea eax, [ebp - 0x5c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
test eax, eax
je 0x405e34
lea eax, [ebp - 0x5c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x405e34
mov dword [ebp - 0x6c], 1
inc dword [ebp - 0x60]
mov eax, dword [ebp - 0x60]
cmp eax, dword [ebp - 0x64]
jb 0x405da6
mov ecx, dword [ebp + 0x3a4]
mov eax, dword [ebp - 0x6c]
pop esi
xor ecx, ebp
pop ebx
call fcn.0047548a
add ebp, 0x3a8
leave
ret