joyce8/EMBER2024-capa huggingface dataset:
Function at 0x44a445
Capabilities:
Capture webcam image

Disassembly:
sub esp, 0x44
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov eax, dword [esi + 0x3c]
test eax, eax
je 0x44a55d
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x44a55d
mov eax, dword [esi + 0x3c]
push eax
call fcn.0045edea
mov esi, eax
test esi, esi
je 0x44a55d
mov ebx, dword [esp + 0x58]
mov ecx, dword [esi + 0x1c]
mov ebp, dword [sym.imp.USER32.dll_SendMessageA]
push 0
push ebx
push 0x419
push ecx
call ebp
mov edi, eax
test edi, edi
jl 0x44a55d
mov ecx, esi
call fcn.0044a3b0
cmp edi, eax
jge 0x44a55d
mov eax, dword [esi + 0xc4]
mov edx, dword [esi + 0xc0]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x5c]
xor ecx, ecx
mov dword [esp + 0x28], edx
cmp eax, ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x38], edi
jne 0x44a4e3
mov dword [esp + 0x34], 1
jmp 0x44a53e
mov edx, dword [esi + 0x1c]
lea ecx, [esp + 0x18]
push ecx
push ebx
push 0x433
push edx
call ebp
test eax, eax
je 0x44a55d
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x10], ecx
mov dword [eax], 0
mov ecx, dword [esi + 0x1c]
lea eax, [esp + 0x10]
add edx, 2
push eax
push ecx
mov dword [esp + 0x1c], edx
call dword [sym.imp.USER32.dll_ClientToScreen]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x34], 3
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], eax
xor ecx, ecx
push ecx
lea ecx, [esp + 0x2c]
push ecx
push 0x7d8
call fcn.004499b0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x44
ret 0xc
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x44
ret 0xc

Function at 0x45f78d
Capabilities:
Get graphical window text

Disassembly:
push esi
mov esi, ecx
mov ecx, dword [esi + 0x38]
test ecx, ecx
jne 0x45f7c5
push dword [esi + 0x1c]
call dword [sym.imp.USER32.dll_GetWindowTextLengthA]
lea ecx, [eax + 1]
push ecx
mov ecx, dword [esp + 0xc]
push eax
call fcn.0045d844
push eax
push dword [esi + 0x1c]
call dword [sym.imp.USER32.dll_GetWindowTextA]
mov ecx, dword [esp + 8]
push 0xffffffffffffffff
call fcn.0045d81c
jmp 0x45f7d1
mov eax, dword [ecx]
push dword [esp + 8]
call dword [eax + 0x88]
pop esi
ret 4

Function at 0x460e82
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebx
push esi
push edi
xor edi, edi
cmp dword [esp + 0x10], edi
mov ebx, ecx
je 0x460ec4
call fcn.0046697a
mov esi, dword [eax + 0xc]
push 0xf0
push dword [esp + 0x14]
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceA]
cmp eax, edi
je 0x460ec4
push eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
cmp eax, edi
jne 0x460ebb
xor eax, eax
jmp 0x460ecc
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov edi, eax
push edi
mov ecx, ebx
call fcn.00460ed2
pop edi
pop esi
pop ebx
ret 4
Function at 0x466eaa
Capabilities:
Get thread local storage value

Disassembly:
push ebx
push esi
mov esi, ecx
lea ebx, [esi + 0x1c]
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esp + 0x10], 0
jne 0x466ed8
push dword [esi]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x466ef6
push dword [esp + 0xc]
mov ecx, esi
push eax
call fcn.00466e10
jmp 0x466ef6
mov eax, dword [esi + 0x14]
test eax, eax
je 0x466ef6
push edi
push dword [esp + 0x10]
mov edi, dword [eax + 4]
mov ecx, esi
push eax
call fcn.00466e10
test edi, edi
mov eax, edi
jne 0x466ee0
pop edi
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop esi
pop ebx
ret 8
Function at 0x4011a2
Capabilities:
Link many functions at runtime

Disassembly:
mov eax, 0x416d37
call fcn.00414c40
sub esp, 0x40
mov eax, dword [0x4233f0]
push ebx
push esi
mov esi, ecx
push edi
xor edi, edi
xor eax, ebp
lea ecx, [esi + 0x14]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x30], esi
mov dword [esi], edi
mov dword [esi + 4], edi
mov dword [esi + 8], edi
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], edi
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_void_]
mov dword [ebp - 4], edi
lea ecx, [esi + 0x30]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_void_]
mov byte [ebp - 4], 1
lea ecx, [esi + 0x4c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_void_]
mov byte [ebp - 4], 2
lea ecx, [esi + 0x68]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_void_]
mov byte [ebp - 4], 3
lea ecx, [esi + 0x84]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_void_]
mov byte [ebp - 4], 4
lea eax, [ebp - 0x4c]
push eax
call fcn.00409e73
mov byte [ebp - 4], 5
mov dword [esp], str.XLBugHandler.dll
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.00401149
add esp, 0xc
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP71.dll_public:_wchar_t_const____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::c_str_void_const]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov ebx, eax
cmp ebx, edi
je 0x401294
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str._XL_SetBugReportRootDir_4
push ebx
call edi
push str._XL_InitBugHandler_20
push ebx
mov dword [esi], eax
call edi
push str._XL_SetPeerID_4
push ebx
mov dword [esi + 4], eax
call edi
push str._XL_SetReportShowMode_4
push ebx
mov dword [esi + 8], eax
call edi
push str._XL_SetAlwaysSendReport_4
push ebx
mov dword [esi + 0xc], eax
call edi
mov dword [esi + 0x10], eax
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x10]
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.00414cf1
leave
ret
Function at 0x407db8
Capabilities:
Check mutex on windows

Disassembly:
mov eax, 0x417a0c
call fcn.00414c40
sub esp, 0x3c
mov eax, dword [0x4233f0]
push ebx
xor eax, ebp
push esi
mov dword [ebp - 0x10], eax
push edi
lea eax, [ebp - 0x2c]
push eax
mov edi, ecx
call fcn.00409e18
xor ebx, ebx
mov dword [ebp - 4], ebx
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x48]
push eax
call fcn.0040d1f0
add esp, 0xc
mov byte [ebp - 4], 1
mov ecx, eax
call dword [sym.imp.MSVCP71.dll_public:_wchar_t_const____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::c_str_void_const]
push eax
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
mov byte [ebp - 4], bl
lea ecx, [ebp - 0x48]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
cmp esi, ebx
je 0x407e3f
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
je 0x407e38
mov ecx, edi
call fcn.00407d3e
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov bl, 1
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x10]
pop esi
mov al, bl
xor ecx, ebp
pop ebx
call fcn.00414cf1
leave
ret
Function at 0x409abc
Capabilities:
Link many functions at runtime

Disassembly:
mov eax, 0x417c1d
call fcn.00414c40
sub esp, 0x3c
mov eax, dword [0x4233f0]
push ebx
xor eax, ebp
push esi
mov esi, ecx
mov dword [ebp - 0x10], eax
push edi
xor edi, edi
lea eax, [ebp - 0x48]
push eax
mov dword [esi], edi
mov dword [esi + 4], edi
mov dword [esi + 8], edi
mov dword [esi + 0xc], edi
call fcn.00409e73
mov dword [ebp - 4], edi
mov dword [esp], str.dl_uac_tool.dll
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.00401149
add esp, 0xc
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x48]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP71.dll_public:_wchar_t_const____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::c_str_void_const]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov ebx, eax
cmp ebx, edi
je 0x409b6f
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.SetSingleProcessUseDir
push ebx
call edi
push str.GetProfileDir
push ebx
mov dword [esi], eax
call edi
push str.GetComponentsDir
push ebx
mov dword [esi + 4], eax
call edi
push str.GetSingleProcessUseDir
push ebx
mov dword [esi + 8], eax
call edi
push str.SetMultiProcessUseDir
push ebx
mov dword [esi + 0xc], eax
call edi
push str.GetMultiProcessUseDir
push ebx
mov dword [esi + 0x10], eax
call edi
mov dword [esi + 0x14], eax
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x10]
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.00414cf1
leave
ret
Function at 0x409faa
Capabilities:
Check if file exists
Create directory
Get common file path
Get file attributes

Disassembly:
push ebp
lea ebp, [esp - 0x190]
sub esp, 0x210
mov eax, dword [0x4233f0]
and word [ebp - 0x7c], 0
and dword [ebp - 0x80], 0
xor eax, ebp
push ebx
mov ebx, dword [ebp + 0x198]
push edi
mov dword [ebp + 0x18c], eax
xor eax, eax
mov ecx, 0x81
lea edi, [ebp - 0x7a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea eax, [ebp - 0x7c]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
jne 0x40a006
push 0x41a4d8
mov ecx, ebx
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
jmp 0x40a04b
push esi
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatW]
push 0x41b078
lea eax, [ebp - 0x7c]
push eax
call esi
lea eax, [ebp - 0x7c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x40a033
push 0
lea eax, [ebp - 0x7c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push 0x41a960
lea eax, [ebp - 0x7c]
push eax
call esi
lea eax, [ebp - 0x7c]
push eax
mov ecx, ebx
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
pop esi
mov ecx, dword [ebp + 0x18c]
pop edi
mov eax, ebx
xor ecx, ebp
pop ebx
call fcn.00414cf1
add ebp, 0x190
leave
ret

Function at 0x40a0e6
Capabilities:
Create thread
Resume thread

Disassembly:
push ebx
push esi
mov esi, ecx
xor ebx, ebx
cmp dword [esi + 8], ebx
jne 0x40a12a
push ebx
push ebx
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateEventW]
push eax
mov dword [esi + 0xc], eax
call dword [sym.imp.KERNEL32.dll_ResetEvent]
lea eax, [esi + 4]
push eax
push 4
push esi
push 0x40a0bd
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateThread]
cmp byte [esp + 0xc], bl
mov dword [esi + 8], eax
jne 0x40a12a
push eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
pop esi
pop ebx
ret 4
Function at 0x40c478
Capabilities:
Check if file exists
Get file attributes

Disassembly:
mov eax, dword [esp + 4]
test eax, eax
je 0x40c49d
cmp word [eax], 0
je 0x40c49d
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40c49a
test al, 0x10
je 0x40c49a
xor eax, eax
inc eax
ret
xor eax, eax
ret
push 0x132b3a1
call fcn.0040cad2
pop ecx
xor al, al
ret

Function at 0x40c4ab
Capabilities:
Enumerate files on windows

Disassembly:
mov eax, 0x417e98
call fcn.00414c40
sub esp, 0x270
mov eax, dword [0x4233f0]
push ebx
push esi
mov esi, dword [ebp + 8]
xor eax, ebp
xor ebx, ebx
cmp esi, ebx
mov dword [ebp - 0x10], eax
je 0x40c589
cmp word [esi], bx
je 0x40c589
push esi
call fcn.0040c478
test al, al
pop ecx
je 0x40c589
push esi
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
cmp dword [ebp - 0x14], 8
mov eax, dword [ebp - 0x28]
mov dword [ebp - 4], ebx
jae 0x40c505
lea eax, [ebp - 0x28]
mov ecx, dword [ebp - 0x18]
mov ax, word [eax + ecx*2 - 2]
cmp ax, 0x5c
je 0x40c524
cmp ax, 0x2f
je 0x40c524
push 0x5c
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t______thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::operator_wchar_t_]
push 0x41b0f8
lea ecx, [ebp - 0x2c]
call dword [0x41a180]
cmp dword [ebp - 0x14], 8
mov eax, dword [ebp - 0x28]
jae 0x40c53e
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0x27c]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov esi, eax
cmp esi, 0xffffffff
je 0x40c578
cmp word [ebp - 0x250], 0x2e
jne 0x40c571
lea eax, [ebp - 0x27c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x40c553
mov bl, 1
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov al, bl
jmp 0x40c58b
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x10]
pop esi
xor ecx, ebp
pop ebx
call fcn.00414cf1
leave
ret
Function at 0x40c96f
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
mov esi, dword [ebp + 8]
xor ebx, ebx
cmp esi, ebx
je 0x40ca11
cmp word [esi], bx
je 0x40ca11
push ebx
push esi
call sub.VERSION.dll_GetFileVersionInfoSizeW
cmp eax, ebx
mov dword [ebp + 8], eax
je 0x40ca0d
inc eax
push edi
push eax
call fcn.00414c27
mov edi, eax
cmp edi, ebx
pop ecx
je 0x40ca0c
push edi
push dword [ebp + 8]
push ebx
push esi
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
je 0x40ca05
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 4]
push eax
push 0x41a960
push edi
mov dword [ebp - 4], ebx
mov dword [ebp + 8], 0x34
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40ca05
mov eax, dword [ebp - 4]
mov cx, word [eax + 0xa]
mov edx, dword [ebp + 0xc]
mov word [edx], cx
mov cx, word [eax + 8]
mov edx, dword [ebp + 0x10]
mov word [edx], cx
mov cx, word [eax + 0xe]
mov edx, dword [ebp + 0x14]
mov word [edx], cx
mov ax, word [eax + 0xc]
mov ecx, dword [ebp + 0x18]
mov word [ecx], ax
mov bl, 1
push edi
call sub.MSVCR71.dll_void___cdecl_operator_delete___void__
pop ecx
pop edi
mov al, bl
jmp 0x40ca1e
push 0x132b3a1
call fcn.0040cad2
pop ecx
xor al, al
pop esi
pop ebx
leave
ret

Function at 0x40ce30
Capabilities:
Create process on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x110
push ebx
push esi
push edi
lea edi, [ebp - 0x110]
mov ecx, 0x44
mov eax, 0xcccccccc
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 8]
push eax
call fcn.0040c964
add esp, 4
movzx ecx, al
test ecx, ecx
jne 0x40ce6b
mov eax, 0x80004005
jmp 0x40cf3b
mov dword [ebp - 0x40], 0
mov ecx, 0xe
xor eax, eax
lea edi, [ebp - 0x3c]
rep stosd dword es:[edi], eax
mov dword [ebp - 0x40], 0x3c
mov dword [ebp - 0x3c], 0x540
mov dword [ebp - 0x38], 0
call fcn.0040cdd0
movzx eax, al
test eax, eax
je 0x40cea8
mov dword [ebp - 0x34], 0
jmp 0x40ceaf
mov dword [ebp - 0x34], str.runas
mov eax, dword [ebp + 8]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0
mov esi, esp
lea eax, [ebp - 0x40]
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
cmp esi, esp
call fcn.0041512c
test eax, eax
jne 0x40ceee
mov eax, 0x80004005
jmp 0x40cf3b
movzx eax, byte [ebp + 0x10]
test eax, eax
jne 0x40cefa
xor eax, eax
jmp 0x40cf3b
mov esi, esp
push 0xffffffffffffffff
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp esi, esp
call fcn.0041512c
mov dword [ebp - 0x4c], 0x80004005
mov esi, esp
lea eax, [ebp - 0x4c]
push eax
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
cmp esi, esp
call fcn.0041512c
test eax, eax
jne 0x40cf38
mov eax, 0x80004005
jmp 0x40cf3b
mov eax, dword [ebp - 0x4c]
push edx
mov ecx, ebp
push eax
lea edx, [0x40cf60]
call fcn.0041514f
pop eax
pop edx
pop edi
pop esi
pop ebx
add esp, 0x110
cmp ebp, esp
call fcn.0041512c
mov esp, ebp
pop ebp
ret
Function at 0x40edf0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x418285
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x32c
push ebx
push esi
push edi
lea edi, [ebp - 0x338]
mov ecx, 0xcb
mov eax, 0xcccccccc
rep stosd dword es:[edi], eax
mov word [ebp - 0x218], 0
mov ecx, 0x81
xor eax, eax
lea edi, [ebp - 0x216]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov esi, esp
push str.shell32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
cmp esi, esp
call fcn.0041512c
mov dword [ebp - 0x224], eax
cmp dword [ebp - 0x224], 0
jne 0x40ee67
xor al, al
jmp 0x40efd3
mov esi, esp
push str.SHGetKnownFolderPath
mov eax, dword [ebp - 0x224]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.0041512c
mov dword [ebp - 0x230], eax
cmp dword [ebp - 0x230], 0
je 0x40ef49
mov dword [ebp - 0x23c], 0
mov esi, esp
lea eax, [ebp - 0x23c]
push eax
push 0
push 0
push 0x41b488
call dword [ebp - 0x230]
cmp esi, esp
call fcn.0041512c
mov dword [ebp - 0x248], eax
cmp dword [ebp - 0x23c], 0
jne 0x40eed4
xor al, al
jmp 0x40efd3
mov esi, esp
mov eax, dword [ebp - 0x23c]
push eax
call dword [sym.imp.MSVCR71.dll_wcslen]
add esp, 4
cmp esi, esp
call fcn.0041512c
cmp eax, 0x104
jbe 0x40ef11
mov esi, esp
mov eax, dword [ebp - 0x23c]
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
cmp esi, esp
call fcn.0041512c
xor al, al
jmp 0x40efd3
mov esi, esp
mov eax, dword [ebp - 0x23c]
push eax
lea ecx, [ebp - 0x218]
push ecx
call dword [sym.imp.MSVCR71.dll_wcscpy]
add esp, 8
cmp esi, esp
call fcn.0041512c
mov esi, esp
mov eax, dword [ebp - 0x23c]
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
cmp esi, esp
call fcn.0041512c
jmp 0x40ef67
mov esi, esp
lea eax, [ebp - 0x218]
push eax
push 0
push 0
push 0x25
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
cmp esi, esp
call fcn.0041512c
mov esi, esp
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x32c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
cmp esi, esp
call fcn.0041512c
mov dword [ebp - 0x334], eax
mov ecx, dword [ebp - 0x334]
mov dword [ebp - 0x338], ecx
mov dword [ebp - 4], 0
mov esi, esp
mov edx, dword [ebp - 0x338]
push edx
mov ecx, dword [ebp + 8]
call dword [0x41a190]
cmp esi, esp
call fcn.0041512c
mov dword [ebp - 4], 0xffffffff
mov esi, esp
lea ecx, [ebp - 0x32c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
cmp esi, esp
call fcn.0041512c
mov al, 1
push edx
mov ecx, ebp
push eax
lea edx, [0x40f004]
call fcn.0041514f
pop eax
pop edx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
add esp, 0x338
cmp ebp, esp
call fcn.0041512c
mov esp, ebp
pop ebp
ret
Function at 0x40f320
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x418285
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x32c
push ebx
push esi
push edi
lea edi, [ebp - 0x338]
mov ecx, 0xcb
mov eax, 0xcccccccc
rep stosd dword es:[edi], eax
mov word [ebp - 0x218], 0
mov ecx, 0x81
xor eax, eax
lea edi, [ebp - 0x216]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov esi, esp
push str.shell32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
cmp esi, esp
call fcn.0041512c
mov dword [ebp - 0x224], eax
cmp dword [ebp - 0x224], 0
jne 0x40f397
xor al, al
jmp 0x40f503
mov esi, esp
push str.SHGetKnownFolderPath
mov eax, dword [ebp - 0x224]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.0041512c
mov dword [ebp - 0x230], eax
cmp dword [ebp - 0x230], 0
je 0x40f479
mov dword [ebp - 0x23c], 0
mov esi, esp
lea eax, [ebp - 0x23c]
push eax
push 0
push 0
push 0x41b478
call dword [ebp - 0x230]
cmp esi, esp
call fcn.0041512c
mov dword [ebp - 0x248], eax
cmp dword [ebp - 0x23c], 0
jne 0x40f404
xor al, al
jmp 0x40f503
mov esi, esp
mov eax, dword [ebp - 0x23c]
push eax
call dword [sym.imp.MSVCR71.dll_wcslen]
add esp, 4
cmp esi, esp
call fcn.0041512c
cmp eax, 0x104
jbe 0x40f441
mov esi, esp
mov eax, dword [ebp - 0x23c]
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
cmp esi, esp
call fcn.0041512c
xor al, al
jmp 0x40f503
mov esi, esp
mov eax, dword [ebp - 0x23c]
push eax
lea ecx, [ebp - 0x218]
push ecx
call dword [sym.imp.MSVCR71.dll_wcscpy]
add esp, 8
cmp esi, esp
call fcn.0041512c
mov esi, esp
mov eax, dword [ebp - 0x23c]
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
cmp esi, esp
call fcn.0041512c
jmp 0x40f497
mov esi, esp
lea eax, [ebp - 0x218]
push eax
push 0
push 0
push 0x23
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
cmp esi, esp
call fcn.0041512c
mov esi, esp
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x32c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
cmp esi, esp
call fcn.0041512c
mov dword [ebp - 0x334], eax
mov ecx, dword [ebp - 0x334]
mov dword [ebp - 0x338], ecx
mov dword [ebp - 4], 0
mov esi, esp
mov edx, dword [ebp - 0x338]
push edx
mov ecx, dword [ebp + 8]
call dword [0x41a190]
cmp esi, esp
call fcn.0041512c
mov dword [ebp - 4], 0xffffffff
mov esi, esp
lea ecx, [ebp - 0x32c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
cmp esi, esp
call fcn.0041512c
mov al, 1
push edx
mov ecx, ebp
push eax
lea edx, [0x40f534]
call fcn.0041514f
pop eax
pop edx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
add esp, 0x338
cmp ebp, esp
call fcn.0041512c
mov esp, ebp
pop ebp
ret