joyce8/EMBER2024-capa huggingface dataset:
Function at 0x10069a28
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x310
mov eax, dword [0x100b1980]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 0x14]
push esi
mov esi, dword [ebp + 8]
xor eax, eax
push edi
mov edi, dword [ebp + 0xc]
cmp byte [0x1016c088], al
je 0x10069a5f
push ebx
push dword [ebp + 0x10]
push edi
push esi
call dword [sym.imp.kernel32.dll_GetTempFileNameW]
jmp 0x10069ac3
push 0x103
push eax
mov byte [ebp - 0x108], al
lea eax, [ebp - 0x107]
push eax
call sub.MSVCR100.dll_memset
add esp, 0xc
lea eax, [ebp - 0x310]
push eax
push esi
call sym.drvDX9.x3d_public:_void___stdcall_MATRIX3D::SetRotate_struct__point3d_const___double_
lea eax, [ebp - 0x20c]
push eax
push edi
call sym.drvDX9.x3d_public:_void___stdcall_MATRIX3D::SetRotate_struct__point3d_const___double_
lea eax, [ebp - 0x108]
push eax
push dword [ebp + 0x10]
lea eax, [ebp - 0x20c]
push eax
lea eax, [ebp - 0x310]
push eax
call dword [sym.imp.kernel32.dll_GetTempFileNameA]
mov esi, eax
push ebx
lea eax, [ebp - 0x108]
push eax
call sym.drvDX9.x3d_public:_void___stdcall_MATRIX3D::SetRotate_struct__point3d_const___double_
mov eax, esi
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1006e864
leave
ret 0x10

Function at 0x10069ad4
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x108
mov eax, dword [0x100b1980]
xor eax, ebp
mov dword [ebp - 4], eax
cmp byte [0x1016c088], 0
push esi
mov esi, dword [ebp + 0xc]
je 0x10069b00
push esi
push dword [ebp + 8]
call dword [sym.imp.kernel32.dll_GetTempPathW]
jmp 0x10069b31
lea eax, [ebp - 0x108]
push eax
push 0x104
call dword [sym.imp.kernel32.dll_GetTempPathA]
test eax, eax
je 0x10069b2f
push dword [ebp + 8]
lea eax, [ebp - 0x108]
push esi
push eax
call sym.drvDX9.x3d_public:_void___stdcall_MATRIX3D::SetRotate_struct__point3d_const___double_
push esi
call dword [sym.imp.kernel32.dll_lstrlenW]
jmp 0x10069b31
xor eax, eax
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop esi
call fcn.1006e864
leave
ret 8

Function at 0x10069bcc
Capabilities:
Delete file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x108
mov eax, dword [0x100b1980]
xor eax, ebp
mov dword [ebp - 4], eax
cmp byte [0x1016c088], 0
mov eax, dword [ebp + 8]
je 0x10069bf4
push eax
call dword [sym.imp.kernel32.dll_DeleteFileW]
jmp 0x10069c0e
lea ecx, [ebp - 0x108]
push ecx
push eax
call sym.drvDX9.x3d_public:_void___stdcall_MATRIX3D::SetRotate_struct__point3d_const___double_
lea eax, [ebp - 0x108]
push eax
call dword [sym.imp.kernel32.dll_DeleteFileA]
mov ecx, dword [ebp - 4]
test eax, eax
setne al
xor ecx, ebp
call fcn.1006e864
leave
ret 4

Function at 0x1006e864
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [0x100b1980]
jne 0x1006e86e
repz ret
jmp fcn.1006ef63
Function at 0x401b30
Capabilities:
Inspect load icon resource

Disassembly:
push esi
mov esi, ecx
call sub.MFC42.DLL_AfxGetModuleState
push 0x81
push 0xe
push 0x81
call sub.MFC42.DLL_AfxFindResourceHandle
push eax
call dword [sym.imp.USER32.dll_LoadIconA]
push 0
mov ecx, esi
mov dword [esi + 0x4c], eax
mov dword [esi + 0x40], 0
call fcn.00401a20
mov eax, dword [esp + 8]
test eax, eax
jne 0x401b6f
pop esi
ret 4
mov ecx, dword [esi + 0x28]
push 0
push eax
mov eax, dword [esi + 0x20]
or ecx, 0x10
push 0x2275
push eax
mov dword [esi + 0x28], ecx
call dword [sym.imp.USER32.dll_SetTimer]
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x78]
test eax, eax
je 0x401b9e
push 0
mov ecx, esi
call sub.MFC42.DLL_CWnd::RunModalLoop
mov eax, dword [esi + 0x40]
pop esi
ret 4

Function at 0x403b20
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebx
push ebp
push esi
push edi
mov ebx, ecx
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLangID]
push eax
call fcn.004046a0
add esp, 4
mov ebp, eax
call sub.MFC42.DLL_AfxGetModuleState
mov esi, dword [esp + 0x14]
mov edi, dword [eax + 8]
and esi, 0xffff
push ebp
push esi
push 4
push edi
call dword [sym.imp.KERNEL32.dll_FindResourceExA]
test eax, eax
je 0x403b7a
push eax
push edi
call dword [sym.imp.KERNEL32.dll_LoadResource]
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
push eax
call dword [sym.imp.USER32.dll_LoadMenuIndirectA]
push eax
mov ecx, ebx
call sub.MFC42.DLL_CMenu::Attach
test eax, eax
jne 0x403b92
push esi
push 4
push esi
call sub.MFC42.DLL_AfxFindResourceHandle
push eax
call dword [sym.imp.USER32.dll_LoadMenuA]
push eax
mov ecx, ebx
call sub.MFC42.DLL_CMenu::Attach
pop edi
pop esi
pop ebp
pop ebx
ret 4
Function at 0x403cd0
Capabilities:
Check os version

Disassembly:
push ecx
push ebx
push ebp
push esi
mov esi, ecx
push edi
xor edi, edi
lea ebp, [esi + 0xa8]
push str.Unknown
mov ecx, ebp
mov dword [esi + 8], edi
call fcn.0041beb2
lea ebx, [esi + 0xc]
mov dword [esi + 4], edi
mov ecx, 0x27
xor eax, eax
mov edi, ebx
push ebx
rep stosd dword es:[edi], eax
mov edi, dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov dword [ebx], 0x9c
call edi
test eax, eax
mov dword [esp + 0x10], eax
jne 0x403d1f
push ebx
mov dword [ebx], 0x94
call edi
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x1c]
and eax, 0xffff
sub ecx, 0
mov dword [esi + 4], eax
je 0x403eae
dec ecx
je 0x403e2d
dec ecx
je 0x403d51
push str.Undetermined
mov ecx, ebp
call fcn.0041beb2
jmp 0x403ec1
mov eax, dword [esi + 0x10]
add eax, 0xfffffffd
cmp eax, 3
ja case.default.0x403d60
jmp dword [eax*4 + 0x403ee8]
push str.WinNT_3.51
mov ecx, ebp
call fcn.0041beb2
mov dword [esi + 8], 1
jmp 0x403ec1
push str.WinNT4
mov ecx, ebp
call fcn.0041beb2
mov dword [esi + 8], 2
jmp 0x403ec1
mov eax, dword [esi + 0x14]
sub eax, 0
je 0x403dfd
dec eax
je 0x403db3
push str.Undetermined
mov ecx, ebp
call fcn.0041beb2
jmp 0x403ec1
push str.WinXP
mov ecx, ebp
call fcn.0041beb2
mov eax, dword [esp + 0x10]
mov dword [esi + 8], 4
test eax, eax
je 0x403ec1
test byte [esi + 0xa5], 2
je 0x403dec
push str._Home_Edition
mov ecx, ebp
call sub.MFC42.DLL_CString::operator
jmp 0x403ec1
push str._Professional
mov ecx, ebp
call sub.MFC42.DLL_CString::operator
jmp 0x403ec1
push str.Win2000
mov ecx, ebp
call fcn.0041beb2
mov dword [esi + 8], 3
jmp 0x403ec1
push str.Windows__Vista
mov ecx, ebp
call fcn.0041beb2
mov dword [esi + 8], 0xa
jmp 0x403ec1
mov ecx, dword [esi + 0x14]
test ecx, ecx
je 0x403e99
cmp ecx, 0xa
je 0x403e61
cmp ecx, 0x5a
je 0x403e4c
push str.Undetermined
mov ecx, ebp
call fcn.0041beb2
jmp 0x403ec1
push str.WinME
mov ecx, ebp
call fcn.0041beb2
mov dword [esi + 8], 8
jmp 0x403ec1
cmp eax, 0x7ce
jne 0x403e7d
push str.Win98
mov ecx, ebp
call fcn.0041beb2
mov dword [esi + 8], 6
jmp 0x403ec1
cmp eax, 0x8ae
jb 0x403ec1
push str.Win98SE
mov ecx, ebp
call fcn.0041beb2
mov dword [esi + 8], 7
jmp 0x403ec1
push str.Win95
mov ecx, ebp
call fcn.0041beb2
mov dword [esi + 8], 5
jmp 0x403ec1
push str.Win31
mov ecx, ebp
call fcn.0041beb2
mov dword [esi + 8], 9
mov al, byte [esi + 0x20]
add esi, 0x20
test al, al
je 0x403edf
push 0x426118
mov ecx, ebp
call sub.MFC42.DLL_CString::operator
push esi
mov ecx, ebp
call sub.MFC42.DLL_CString::operator
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret
Function at 0x404330
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x41cbd8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 8
push esi
push edi
mov esi, ecx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x41fc44
mov dword [esp + 0x18], 0
call fcn.00404480
mov eax, dword [esi + 0x38]
mov ecx, dword [esi + 0x34]
mov edx, dword [esi + 0x30]
mov edi, dword [esi + 0x2c]
push eax
push ecx
push edx
push edi
call dword [sym.imp.GDI32.dll_CreateRectRgn]
push eax
lea ecx, [esp + 0xc]
call sub.MFC42.DLL_CGdiObject::Attach
test eax, eax
jne 0x4043b9
mov dword [esp + 8], 0x41fa14
lea ecx, [esp + 8]
mov dword [esp + 0x18], 1
call sub.MFC42.DLL_CGdiObject::DeleteObject
pop edi
xor eax, eax
pop esi
mov ecx, dword [esp + 8]
mov dword fs:[0], ecx
add esp, 0x14
ret
mov ecx, dword [esi + 0x40]
mov eax, dword [esi + 0x3c]
push ecx
push eax
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.GDI32.dll_OffsetRgn]
test eax, eax
jne 0x4043fc
mov dword [esp + 8], 0x41fa14
lea ecx, [esp + 8]
mov dword [esp + 0x18], 2
call sub.MFC42.DLL_CGdiObject::DeleteObject
pop edi
xor eax, eax
pop esi
mov ecx, dword [esp + 8]
mov dword fs:[0], ecx
add esp, 0x14
ret
mov edx, dword [esp + 0xc]
lea eax, [esp + 8]
neg eax
sbb eax, eax
and eax, edx
test esi, esi
jne 0x404412
xor ecx, ecx
jmp 0x404415
mov ecx, dword [esi + 4]
push 3
push eax
push ecx
mov ecx, dword [esi + 4]
push ecx
call dword [sym.imp.GDI32.dll_CombineRgn]
test eax, eax
mov dword [esp + 8], 0x41fa14
jne 0x404453
lea ecx, [esp + 8]
mov dword [esp + 0x18], 3
call sub.MFC42.DLL_CGdiObject::DeleteObject
pop edi
xor eax, eax
pop esi
mov ecx, dword [esp + 8]
mov dword fs:[0], ecx
add esp, 0x14
ret
lea ecx, [esp + 8]
mov dword [esp + 0x18], 4
call sub.MFC42.DLL_CGdiObject::DeleteObject
mov ecx, dword [esp + 0x10]
pop edi
mov eax, 1
pop esi
mov dword fs:[0], ecx
add esp, 0x14
ret

Function at 0x4044c0
Capabilities:
Encode data using xor

Disassembly:
mov edx, dword [ecx + 0x14]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x10]
push edi
cmp esi, edx
jne 0x4044d8
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret 0xc
mov eax, dword [ecx + 0x10]
mov edi, eax
imul eax, edx
imul edi, esi
mov esi, dword [esp + 0x18]
lea ebx, [edi + esi]
cmp ebx, eax
jl 0x4044f7
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret 0xc
mov eax, dword [ecx + 0x24]
mov edx, esi
lea edi, [eax + ebx*4]
mov eax, dword [esp + 0x1c]
cmp esi, eax
jge 0x404537
mov ebp, dword [ecx + 0x28]
cmp ebp, dword [edi]
jne 0x4044ee
inc edx
add edi, 4
cmp edx, eax
jl 0x40450a
cmp esi, eax
jge 0x404537
sub eax, esi
lea edx, [ebx*4]
mov esi, eax
mov eax, dword [ecx + 0x24]
add eax, edx
add edx, 4
mov ebx, dword [eax]
xor ebx, 1
dec esi
mov dword [eax], ebx
jne 0x404525
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret 0xc
Function at 0x404c00
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x41cc30
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
call sub.MFC42.DLL_AfxGetModuleState
mov edi, dword [eax + 8]
call sub.MFC42.DLL_AfxGetModuleState
mov esi, dword [eax + 0xc]
test edi, edi
je 0x404d08
mov ecx, dword [ebp + 0xc]
mov eax, ecx
and ecx, 0xf
shr eax, 4
inc eax
mov edi, ecx
mov ecx, dword [ebp + 8]
and eax, 0xffff
push ecx
push eax
push 6
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceExA]
test eax, eax
je 0x404d08
push eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x404d08
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
test esi, esi
je 0x404d08
test edi, edi
jle 0x404c91
xor edx, edx
dec edi
mov dx, word [esi]
lea esi, [esi + edx*2 + 2]
jne 0x404c85
xor edi, edi
mov di, word [esi]
add esi, 2
test edi, edi
jle 0x404d08
lea eax, [edi + edi + 2]
mov dword [ebp - 4], 0
push eax
call sub.MFC42.DLL_operatornew
add esp, 4
mov ebx, eax
mov dword [ebp - 4], 0xffffffff
push edi
push esi
push ebx
call dword [sym.imp.MSVCRT.dll_wcsncpy]
mov ecx, dword [ebp + 0x10]
add esp, 0xc
mov word [ebx + edi*2], 0
push ebx
call sub.MFC42.DLL_CString::operator_2
test ebx, ebx
je 0x404ce2
push ebx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
xor eax, eax
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 0xc
Function at 0x404dd0
Capabilities:
Access peb ldr_data
Get ntdll base address

Disassembly:
push 0xffffffffffffffff
push 0x41ccda
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push esi
mov esi, ecx
push edi
xor edi, edi
lea ecx, [esi + 0x20]
mov dword [esp + 8], esi
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], edi
mov dword [esi + 0x18], edi
call sub.MFC42.DLL_CString::CString
lea ecx, [esi + 0x24]
mov dword [esp + 0x14], edi
call sub.MFC42.DLL_CString::CString
lea ecx, [esi + 0x28]
mov byte [esp + 0x14], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esi + 0x2c]
mov byte [esp + 0x14], 2
call sub.MFC42.DLL_CString::CString
lea ecx, [esi + 0x30]
mov byte [esp + 0x14], 3
call sub.MFC42.DLL_CString::CString
lea ecx, [esi + 0x34]
mov byte [esp + 0x14], 4
call sub.MFC42.DLL_CString::CString
lea ecx, [esi + 0x38]
mov byte [esp + 0x14], 5
call sub.MFC42.DLL_CString::CString
lea ecx, [esi + 0x3c]
mov byte [esp + 0x14], 6
call sub.MFC42.DLL_CString::CString
lea ecx, [esi + 0x40]
mov byte [esp + 0x14], 7
call sub.MFC42.DLL_CString::CString
lea ecx, [esi + 0x44]
mov byte [esp + 0x14], 8
call sub.MFC42.DLL_CString::CString
lea ecx, [esi + 0x48]
mov byte [esp + 0x14], 9
call sub.MFC42.DLL_CString::CString
lea ecx, [esi + 0x4c]
mov byte [esp + 0x14], 0xa
call sub.MFC42.DLL_CString::CString
lea ecx, [esi + 0x50]
mov byte [esp + 0x14], 0xb
call sub.MFC42.DLL_CString::CString
lea ecx, [esi + 0x54]
mov byte [esp + 0x14], 0xc
call sub.MFC42.DLL_CString::CString
mov ecx, esi
mov byte [esp + 0x14], 0xd
mov dword [esi], 0x41fc58
call fcn.00405010
mov ecx, dword [esp + 0xc]
mov eax, esi
pop edi
pop esi
mov dword fs:[0], ecx
add esp, 0x10
ret
Function at 0x407ab0
Capabilities:
Query or enumerate registry value

Disassembly:
sub esp, 0x20
lea eax, [esp]
push esi
push eax
push str.SoftwareAnalog_DevicesSMax4PNPSettings
push 0x80000001
xor esi, esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
jne 0x407b23
mov ecx, dword [esp + 0x28]
lea edx, [esp + 0x10]
push ecx
push str.Jack_d
push edx
mov dword [esp + 0x14], 4
call dword [sym.imp.MSVCRT.dll_sprintf]
mov ecx, dword [esp + 0x38]
add esp, 0xc
lea eax, [esp + 8]
lea edx, [esp + 0xc]
push eax
push ecx
mov ecx, dword [esp + 0xc]
push edx
lea eax, [esp + 0x1c]
push esi
push eax
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x407b18
mov esi, 1
mov edx, dword [esp + 4]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, esi
pop esi
add esp, 0x20
ret 8

Function at 0x408800
Capabilities:
Set registry value

Disassembly:
sub esp, 0x18
lea eax, [esp]
push eax
push str.SoftwareAnalog_DevicesSMax4PNPSettings
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
jne 0x40885a
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 4]
push ecx
push str.Jack_d
push edx
call dword [sym.imp.MSVCRT.dll_sprintf]
mov edx, dword [esp + 0xc]
add esp, 0xc
lea eax, [esp + 0x20]
lea ecx, [esp + 4]
push 4
push eax
push 4
push 0
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov eax, dword [esp]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
add esp, 0x18
ret 8

Function at 0x408860
Capabilities:
Check os version
Create process on windows

Disassembly:
push 0xffffffffffffffff
push 0x41d09b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xec
lea ecx, [esp]
call fcn.004045c0
push str.control_mmsys.cpl
lea ecx, [esp + 4]
mov dword [esp + 0xf8], 0
call fcn.0041beb2
lea eax, [esp + 0x58]
mov dword [esp + 0x58], 0x94
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov eax, dword [esp + 0x5c]
cmp eax, 4
jne 0x4088c7
cmp dword [esp + 0x60], 0x5a
jne 0x4088eb
push 0x4274d0
jmp 0x4088e2
jbe 0x4088eb
cmp eax, 5
jne 0x4088dd
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x4088dd
push 0x4274d0
jmp 0x4088e2
push 0x4274cc
lea ecx, [esp + 4]
call sub.MFC42.DLL_CString::operator
push edi
mov ecx, 0x11
xor eax, eax
lea edi, [esp + 0x18]
rep stosd dword es:[edi], eax
lea ecx, [esp + 8]
lea edx, [esp + 0x18]
push ecx
push edx
push eax
push eax
push 8
push eax
push eax
push eax
push eax
lea ecx, [esp + 0x28]
mov dword [esp + 0x3c], 0x44
mov word [esp + 0x6c], 5
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
lea ecx, [esp + 4]
mov dword [esp + 0xf8], 0xffffffff
call fcn.0041bec4
mov ecx, dword [esp + 0xf0]
pop edi
mov dword fs:[0], ecx
add esp, 0xf8
ret
Function at 0x408960
Capabilities:
Query or enumerate registry value

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x41d0bb
push eax
mov dword fs:[0], esp
sub esp, 0x180
mov ecx, 0x41
xor eax, eax
push ebx
push esi
mov esi, dword [esp + 0x198]
push edi
lea edi, [esp + 0x88]
mov ebx, 1
test esi, esi
rep stosd dword es:[edi], eax
je 0x4089e8
lea eax, [esp + 0x1c]
lea ecx, [esp + 0x10]
push eax
push ecx
push 0x2015
push 0xffffffffffffffff
call dword [sym.imp.WINMM.dll_waveInMessage]
test eax, eax
jne 0x408a2f
mov eax, dword [esp + 0x10]
cmp eax, 0xffffffff
je 0x408a2f
lea edx, [esp + 0x24]
push 0x30
push edx
push eax
call dword [sym.imp.WINMM.dll_waveInGetDevCapsA]
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x88]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
jmp 0x408a89
lea edx, [esp + 0x1c]
lea eax, [esp + 0x10]
push edx
push eax
push 0x2015
push 0xffffffffffffffff
call dword [sym.imp.WINMM.dll_waveOutMessage]
test eax, eax
jne 0x408a2f
mov eax, dword [esp + 0x10]
cmp eax, 0xffffffff
je 0x408a2f
lea ecx, [esp + 0x54]
push 0x34
push ecx
push eax
call dword [sym.imp.WINMM.dll_waveOutGetDevCapsA]
lea edx, [esp + 0x5c]
lea eax, [esp + 0x88]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
jmp 0x408a89
lea ecx, [esp + 0x14]
push ecx
push str.SoftwareMicrosoftMultimediaSound_Mapper
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
jne 0x408a89
test esi, esi
mov dword [esp + 0x18], 0x104
mov eax, str.Record
jne 0x408a5e
mov eax, str.Playback
lea edx, [esp + 0x18]
lea ecx, [esp + 0x88]
push edx
lea edx, [esp + 0x24]
push ecx
push edx
push 0
push eax
mov eax, dword [esp + 0x28]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea edx, [esp + 0x88]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
jle 0x408afc
lea eax, [esp + 0x88]
lea ecx, [esp + 0xc]
push eax
call sub.MFC42.DLL_CString::CString_2
push str.Digital_Audio_MB
lea ecx, [esp + 0x10]
mov dword [esp + 0x198], 0
call sub.MFC42.DLL_CString::Find
test eax, eax
jge 0x408adf
push 0x4274e8
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::Find
test eax, eax
jge 0x408adf
xor esi, esi
jmp 0x408ae4
mov esi, 1
lea ecx, [esp + 0xc]
mov dword [esp + 0x194], 0xffffffff
call fcn.0041bec4
mov eax, esi
jmp 0x408afe
mov eax, ebx
mov ecx, dword [esp + 0x18c]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x18c
ret 4
Function at 0x408b20
Capabilities:
Get common file path

Disassembly:
push 0xffffffffffffffff
push 0x41d0db
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x124
push esi
push edi
mov edi, ecx
push str.IsWow64Process
push str.kernel32
mov dword [esp + 0x10], 0
mov dword [edi + 0x10c], 1
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
test esi, esi
je 0x408bf2
lea eax, [esp + 8]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call esi
mov eax, dword [esp + 8]
test eax, eax
je 0x408bf2
lea ecx, [esp + 0xc]
call sub.MFC42.DLL_CFileFind::CFileFind
lea ecx, [esp + 0x28]
push 0x104
push ecx
mov dword [esp + 0x13c], 0
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push 0x104
lea edx, [esp + 0x2c]
push str.SysWOW64mmdriver.inf
push edx
call dword [sym.imp.MSVCRT.dll_strncat]
add esp, 0xc
lea eax, [esp + 0x28]
lea ecx, [esp + 0xc]
push 0
push eax
call sub.MFC42.DLL_CFileFind::FindFile
test eax, eax
jne 0x408bde
mov dword [edi + 0x10c], eax
lea ecx, [esp + 0xc]
mov dword [esp + 0x134], 0xffffffff
call fcn.0041c110
mov ecx, dword [esp + 0x12c]
pop edi
pop esi
mov dword fs:[0], ecx
add esp, 0x130
ret
Function at 0x40e2b0
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x41d89a
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 8
mov eax, dword [esp + 0x18]
push ebx
push ebp
mov ebx, ecx
push esi
push edi
mov ecx, dword [ebx + 0x398]
xor ebp, ebp
push eax
mov dword [esp + 0x18], ebp
mov dword [esp + 0x14], ebp
call fcn.0040f960
push 0x104
mov esi, eax
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esp + 0x28], eax
cmp eax, ebp
mov dword [esp + 0x20], ebp
je 0x40e30e
mov ecx, eax
call fcn.00402b50
mov edi, eax
jmp 0x40e310
xor edi, edi
mov eax, dword [esp + 0x30]
mov dword [esp + 0x20], 0xffffffff
cmp eax, ebp
je 0x40e32d
mov ebp, dword [ebx + 0x2bc]
mov eax, dword [esi + 4]
sub ebp, eax
jmp 0x40e330
mov ebp, dword [esi + 4]
mov ecx, dword [esi + 8]
lea edx, [esp + 0x10]
lea eax, [esp + 0x14]
mov dword [esp + 0x28], ecx
mov ecx, dword [ebx + 0x398]
push edx
push eax
call fcn.0041b280
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
mov dword [edi + 0xe8], eax
mov eax, dword [esp + 0x28]
push 0x10000000
push edx
push eax
mov dword [edi + 0xe4], ecx
push ebp
push ebx
mov ecx, edi
call fcn.00402c90
mov ecx, dword [esi + 0x1c]
mov edx, dword [esi + 0x18]
mov eax, dword [esi + 0x14]
push ecx
mov ecx, dword [esi + 0x10]
push edx
mov edx, dword [esi + 0xc]
push eax
push ecx
push edx
mov ecx, edi
call fcn.00402d00
mov eax, dword [esi + 0x30]
mov ecx, dword [esi + 0x2c]
mov edx, dword [esi + 0x28]
push 0
push 0
push 0
push eax
push ecx
push edx
mov ecx, edi
call fcn.00403510
mov ecx, dword [esp + 0x18]
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x14
ret 0xc

Function at 0x40fc40
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x41da30
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x20
xor eax, eax
push esi
push edi
mov esi, ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x41fa28
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x38]
push eax
call fcn.0040f930
mov ecx, esi
mov edi, eax
call fcn.0041adf0
mov eax, dword [edi]
and eax, 0xffff
push eax
push 2
push eax
call sub.MFC42.DLL_AfxFindResourceHandle
push eax
call dword [sym.imp.USER32.dll_LoadBitmapA]
push eax
lea ecx, [esp + 0xc]
call sub.MFC42.DLL_CGdiObject::Attach
mov esi, dword [esi + 0x30]
call sub.MFC42.DLL_AfxGetModuleState
lea ecx, [esp + 0x10]
mov dword [eax + 0xc], esi
mov edx, dword [esp + 0xc]
push ecx
push 0x18
push edx
call dword [sym.imp.GDI32.dll_GetObjectA]
mov esi, dword [esp + 0x14]
mov dword [esp + 8], 0x41fa14
lea ecx, [esp + 8]
mov dword [esp + 0x30], 1
call sub.MFC42.DLL_CGdiObject::DeleteObject
mov ecx, dword [esp + 0x28]
mov eax, esi
pop edi
pop esi
mov dword fs:[0], ecx
add esp, 0x2c
ret 4
Function at 0x40fd00
Capabilities:
Access peb ldr_data
Get ntdll base address

Disassembly:
push 0xffffffffffffffff
push 0x41da50
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x20
xor eax, eax
push esi
push edi
mov esi, ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x41fa28
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x38]
push eax
call fcn.0040f930
mov ecx, esi
mov edi, eax
call fcn.0041adf0
mov eax, dword [edi]
and eax, 0xffff
push eax
push 2
push eax
call sub.MFC42.DLL_AfxFindResourceHandle
push eax
call dword [sym.imp.USER32.dll_LoadBitmapA]
push eax
lea ecx, [esp + 0xc]
call sub.MFC42.DLL_CGdiObject::Attach
mov esi, dword [esi + 0x30]
call sub.MFC42.DLL_AfxGetModuleState
lea ecx, [esp + 0x10]
mov dword [eax + 0xc], esi
mov edx, dword [esp + 0xc]
push ecx
push 0x18
push edx
call dword [sym.imp.GDI32.dll_GetObjectA]
mov esi, dword [esp + 0x18]
mov dword [esp + 8], 0x41fa14
lea ecx, [esp + 8]
mov dword [esp + 0x30], 1
call sub.MFC42.DLL_CGdiObject::DeleteObject
mov ecx, dword [esp + 0x28]
mov eax, esi
pop edi
pop esi
mov dword fs:[0], ecx
add esp, 0x2c
ret 4

Function at 0x410360
Capabilities:
Inspect load icon resource

Disassembly:
push 0xffffffffffffffff
push 0x41db0b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push esi
push edi
push 0x81
push 0xe
mov esi, ecx
push 0x81
call sub.MFC42.DLL_AfxFindResourceHandle
push eax
call dword [sym.imp.USER32.dll_LoadIconA]
mov ecx, dword [esi + 0xbc]
mov dword [esi + 0xb8], eax
test ecx, ecx
je 0x4103b2
mov eax, dword [ecx]
push 1
call dword [eax]
mov dword [esi + 0xbc], 0
mov edi, dword [0x429374]
test edi, edi
je 0x4103f0
push 0x30
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esp + 8], eax
test eax, eax
mov dword [esp + 0x14], 0
je 0x4103e0
push edi
mov ecx, eax
call fcn.00414050
jmp 0x4103e2
xor eax, eax
mov dword [esp + 0x14], 0xffffffff
mov dword [esi + 0xbc], eax
push 0
push 0
mov ecx, esi
mov dword [esi + 0xe0], 0xffffffff
call fcn.00412a50
mov ecx, dword [esp + 0xc]
pop edi
mov eax, 1
pop esi
mov dword fs:[0], ecx
add esp, 0x10
ret