joyce8/EMBER2024-capa huggingface dataset:
Function at 0x413220
Capabilities:
Get file size
Read file via mapping

Disassembly:
sub esp, 0x218
cmp dword [0x474b28], 0
mov eax, ecx
mov dword [esp + 0xc], edx
mov dword [esp + 8], eax
jne 0x413241
push 0xfffffffffffffffc
pop eax
jmp 0x413347
call fcn.004133c0
test eax, eax
jne 0x413252
or eax, 0xffffffff
jmp 0x413347
push esi
push eax
push 0
push 0x440
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov esi, eax
test esi, esi
jne 0x41326f
push 0xfffffffffffffffe
pop eax
jmp 0x413346
push ebp
push edi
mov edi, 0x400
push edi
mov dword [esp + 0x10], edi
call fcn.0043bca1
jmp 0x4132a4
push ebp
cmp eax, 0xc0000004
jne 0x41334e
call fcn.0043bc9c
mov eax, dword [esp + 0x10]
add eax, edi
push eax
mov dword [esp + 0x14], eax
call fcn.0043bca1
pop ecx
pop ecx
mov ebp, eax
lea eax, [esp + 0xc]
push eax
push dword [esp + 0x10]
push ebp
push 0x33
push esi
call dword [0x474b24]
test eax, eax
js 0x413282
xor edi, edi
push ebx
cmp dword [ebp], edi
jbe 0x413339
lea ebx, [ebp + 8]
push 2
push 0
push 0
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
push dword [ebx]
push esi
call dword [sym.imp.KERNEL32.dll_DuplicateHandle]
test eax, eax
je 0x413330
push 0x208
lea eax, [esp + 0x24]
push 0
push eax
call fcn.00436de0
add esp, 0xc
lea eax, [esp + 0x20]
push 0
push 0x104
push eax
push dword [esp + 0x20]
call dword [0x474b28]
lea eax, [esp + 0x28]
push eax
push dword [esp + 0x1c]
call fcn.0043f8a4
pop ecx
pop ecx
test eax, eax
je 0x413359
push dword [esp + 0x14]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
inc edi
add ebx, 0x1c
cmp edi, dword [ebp]
jb 0x4132c9
push ebp
call fcn.0043bc9c
pop ecx
push 0xfffffffffffffffd
pop eax
pop ebx
pop edi
pop ebp
pop esi
add esp, 0x218
ret
call fcn.0043bc9c
xor eax, eax
pop ecx
inc eax
jmp 0x413344
xor edi, edi
push edi
push edi
push edi
push 2
push edi
push dword [esp + 0x28]
call dword [sym.imp.KERNEL32.dll_CreateFileMappingW]
push edi
push edi
push edi
mov ebx, eax
push 4
push ebx
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
push edi
push dword [esp + 0x18]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov edi, eax
push edi
call fcn.0043bca1
mov ecx, dword [esp + 0x20]
push edi
push esi
push eax
mov dword [ecx], eax
call fcn.00436860
add esp, 0x10
push esi
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
call ebx
push dword [esp + 0x14]
call ebx
push ebp
call fcn.0043bc9c
pop ecx
mov eax, edi
jmp 0x413343

Function at 0x41344d
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push ecx
push esi
lea eax, [ebp - 4]
xor esi, esi
push eax
push 0x20019
push esi
push edx
push closesocket
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x413490
push esi
push esi
push esi
push esi
push dword [ebp + 8]
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push dword [ebp - 4]
mov esi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test esi, esi
sete al
jmp 0x413492
xor al, al
pop esi
mov esp, ebp
pop ebp
ret
Function at 0x413497
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push 4
pop eax
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], eax
lea eax, [ebp - 4]
push eax
push 0x20019
push 0
push edx
push closesocket
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4134ee
push esi
lea eax, [ebp - 8]
push eax
push dword [ebp + 0xc]
lea eax, [ebp - 0xc]
push eax
push 0
push dword [ebp + 8]
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push dword [ebp - 4]
mov esi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test esi, esi
pop esi
sete al
jmp 0x4134f0
xor al, al
mov esp, ebp
pop ebp
ret

Function at 0x4134f4
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x408
push esi
push edi
lea eax, [ebp - 4]
mov dword [ebp - 8], 0x400
push eax
push 0x20019
xor esi, esi
mov edi, ecx
push esi
push dword [ebp + 8]
push edx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x413555
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x408]
push eax
push esi
push esi
push dword [ebp + 0xc]
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push dword [ebp - 4]
mov esi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, edi
test esi, esi
jne 0x413557
lea eax, [ebp - 0x408]
push eax
jmp 0x41355c
mov ecx, edi
push 0x4660a4
call fcn.00402093
mov eax, edi
pop edi
pop esi
mov esp, ebp
pop ebp
ret

Function at 0x413569
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x808
push esi
lea eax, [ebp - 4]
mov dword [ebp - 8], 0x400
push eax
push 0x20019
push 0
push dword [ebp + 8]
mov esi, ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4135c2
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x808]
push eax
push 0
push 0
push dword [ebp + 0xc]
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [ebp - 0x808]
push eax
jmp 0x4135c7
push 0x466468
mov ecx, esi
call fcn.0040417e
mov eax, esi
pop esi
mov esp, ebp
pop ebp
ret

Function at 0x4135d5
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
push esi
push edi
lea eax, [ebp - 4]
mov edi, ecx
push eax
xor ecx, ecx
lea eax, [ebp - 8]
push ecx
push eax
push ecx
push dword [ebp + 8]
mov ebx, edx
mov dword [ebp - 4], ecx
push ebx
mov esi, 0x4660a4
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x413635
cmp dword [ebp - 4], eax
jbe 0x413635
push dword [ebp - 4]
call fcn.0043bca1
push dword [ebp - 4]
mov esi, eax
push 0
push esi
call fcn.00436de0
add esp, 0x10
lea eax, [ebp - 4]
push eax
push esi
lea eax, [ebp - 8]
push eax
push 0
push dword [ebp + 8]
push ebx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push esi
mov ecx, edi
call fcn.0040417e
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x4139a3
Capabilities:
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
mov eax, 0xabb4
call fcn.00457600
push ebx
push esi
push edi
push 0x208
xor esi, esi
lea eax, [ebp - 0x4a0]
push esi
push eax
mov ebx, ecx
call fcn.00436de0
add esp, 0xc
mov dword [ebp - 0x14], 0x104
lea eax, [ebp - 0x50]
mov dword [ebp - 4], esi
mov dword [ebp - 8], 0x3fff
push eax
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 4]
push eax
push esi
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x4a0]
push eax
push ebx
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
mov eax, dword [ebp - 4]
test eax, eax
je 0x413a81
test eax, eax
je 0x413a81
lea eax, [ebp - 0x50]
mov dword [ebp - 0x18], 0xff
push eax
push 0
push 0
push 0
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x298]
push eax
push esi
push ebx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
test eax, eax
jne 0x413a7b
push 0x467130
lea ecx, [ebp - 0x34]
call fcn.0040417e
push eax
lea edx, [ebp - 0x298]
lea ecx, [ebp - 0x68]
call fcn.004042fc
pop ecx
push eax
mov ecx, 0x4754b0
call fcn.0040325d
lea ecx, [ebp - 0x68]
call fcn.00401f09
lea ecx, [ebp - 0x34]
call fcn.00401f09
inc esi
cmp esi, dword [ebp - 4]
jb 0x413a1b
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x413bc3
xor esi, esi
test eax, eax
je 0x413bc3
xor eax, eax
mov byte [ebp - 0x5c], 0
lea edi, [ebp - 0x5b]
mov dword [ebp - 0xc], 0x2710
stosd dword es:[edi], eax
mov dword [ebp - 8], 0x3fff
stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov word [ebp - 0xabb0], ax
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x2bb0]
push eax
lea eax, [ebp - 0x1c]
push eax
push 0
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0xabb0]
push eax
push esi
push ebx
call dword [sym.imp.ADVAPI32.dll_RegEnumValueW]
test eax, eax
jne 0x413bb9
push 0xa
lea eax, [ebp - 0x5c]
push eax
push dword [ebp - 0x1c]
call fcn.00441dd1
add esp, 0xc
lea ecx, [ebp - 0x80]
push 0x467130
call fcn.0040417e
push eax
lea edx, [ebp - 0xabb0]
lea ecx, [ebp - 0x34]
call fcn.004042fc
pop ecx
push eax
mov ecx, 0x4754c8
call fcn.0040325d
lea ecx, [ebp - 0x34]
call fcn.00401f09
lea ecx, [ebp - 0x80]
call fcn.00401f09
push 0x4660c0
lea ecx, [ebp - 0x34]
call fcn.00402093
push eax
lea edx, [ebp - 0x5c]
lea ecx, [ebp - 0x80]
call fcn.004052fd
pop ecx
push eax
mov ecx, 0x4754e0
call fcn.00403376
lea ecx, [ebp - 0x80]
call fcn.00401fd8
lea ecx, [ebp - 0x34]
call fcn.00401fd8
push str._regsplt_
lea ecx, [ebp - 0x98]
call fcn.00402093
push eax
push dword [ebp - 0xc]
lea eax, [ebp - 0x2bb0]
push eax
lea ecx, [ebp - 0x34]
call fcn.004020b7
mov edx, eax
lea ecx, [ebp - 0x80]
call fcn.00402ea1
pop ecx
push eax
mov ecx, 0x475578
call fcn.00403376
lea ecx, [ebp - 0x80]
call fcn.00401fd8
lea ecx, [ebp - 0x34]
call fcn.00401fd8
lea ecx, [ebp - 0x98]
call fcn.00401fd8
inc esi
cmp esi, dword [ebp - 0x10]
jb 0x413a96
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x414622
Capabilities:
Resolve dns

Disassembly:
push ecx
push ebx
mov ebx, dword [esp + 0x14]
push ebp
mov ebp, dword [esp + 0x1c]
push esi
push edi
push ecx
and dword [ebp], 0
mov dword [esp + 0x14], edx
mov byte [ebx], 0
call dword [sym.imp.WS2_32.dll_gethostbyname]
mov esi, eax
test esi, esi
je 0x4146a0
cmp word [esi + 8], 2
jne 0x414682
push 4
pop eax
cmp word [esi + 0xa], ax
jne 0x414682
mov edi, dword [esi + 0xc]
jmp 0x41467c
push dword [eax]
mov edx, dword [esp + 0x1c]
push dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
call fcn.004145bb
mov dword [ebp], eax
test eax, eax
je 0x41469b
lea ebp, [eax + 0x1c]
add edi, 4
mov eax, dword [edi]
test eax, eax
jne 0x41465c
push 0x400
push dword [esi]
push 0x401
push ebx
call fcn.00441983
add esp, 0x10
xor eax, eax
jmp 0x4146be
push 8
pop eax
jmp 0x4146be
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
mov ecx, 0x2af9
sub eax, ecx
je 0x4146bc
sub eax, 1
je 0x4146cd
sub eax, 1
je 0x4146c6
sub eax, 1
mov eax, ecx
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret 0x10
mov eax, 0x2afb
jmp 0x4146be
mov eax, 0x2afa
jmp 0x4146be

Function at 0x414cd4
Capabilities:
Get common file path

Disassembly:
sub esp, 0x22c
cmp dword [0x476b38], 0
mov dword [esp], str.getaddrinfo
mov dword [esp + 4], 0x414858
mov dword [esp + 8], str.getnameinfo
mov dword [esp + 0xc], 0x414afe
mov dword [esp + 0x10], str.freeaddrinfo
mov dword [esp + 0x14], fcn.0041481d
jne 0x414e2b
push 0x104
lea eax, [esp + 0x128]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
je 0x414e21
push ebx
push ebp
push esi
push edi
lea eax, [esp + 0x134]
mov ebx, 0x10c
push eax
lea eax, [esp + 0x2c]
push ebx
push eax
call fcn.0044198e
push str.ws2_32
lea eax, [esp + 0x38]
push ebx
push eax
call fcn.004419e8
add esp, 0x18
lea eax, [esp + 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
mov ebp, dword [sym.imp.KERNEL32.dll_FreeLibrary]
xor edi, edi
test esi, esi
je 0x414d94
push str.getaddrinfo
push esi
call ebx
test eax, eax
jne 0x414d90
push esi
call ebp
mov esi, edi
test esi, esi
jne 0x414de5
lea eax, [esp + 0x134]
mov esi, 0x10c
push eax
lea eax, [esp + 0x2c]
push esi
push eax
call fcn.0044198e
push str.wship6
lea eax, [esp + 0x38]
push esi
push eax
call fcn.004419e8
add esp, 0x18
lea eax, [esp + 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
test esi, esi
je 0x414e1d
push str.getaddrinfo
push esi
call ebx
test eax, eax
jne 0x414de1
push esi
call ebp
mov esi, edi
test esi, esi
je 0x414e1d
mov ebx, edi
push dword [esp + ebx*8 + 0x10]
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [esp + ebx*8 + 0x14], eax
test eax, eax
je 0x414e02
inc ebx
cmp ebx, 3
jl 0x414de7
jmp 0x414e07
push esi
call ebp
mov esi, edi
test esi, esi
je 0x414e1d
mov eax, dword [esp + edi + 0x14]
mov dword [edi + 0x4719f8], eax
add edi, 8
cmp edi, 0x18
jl 0x414e0b
pop edi
pop esi
pop ebp
pop ebx
mov dword [0x476b38], 1
mov eax, dword [0x4719f8]
add esp, 0x22c
ret
Function at 0x4173e7
Capabilities:
Create process on windows
Delete file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc8
push ebx
push esi
push str._sysinfo.txt
push str.temp
call fcn.0043c01f
pop ecx
push eax
lea ecx, [ebp - 0x30]
call fcn.0040417e
mov edx, eax
lea ecx, [ebp - 0x48]
call fcn.00403014
pop ecx
lea ecx, [ebp - 0x30]
call fcn.00401f09
xor ebx, ebx
lea eax, [ebp - 0x48]
push ebx
push ebx
push eax
mov edx, 0x46c7a8
lea ecx, [ebp - 0x30]
call fcn.0040b8ca
pop ecx
mov ecx, eax
call fcn.00401f04
push eax
push str.dxdiag
push 0x466108
push ebx
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
lea ecx, [ebp - 0x30]
call fcn.00401f09
lea ecx, [ebp - 0x18]
call fcn.004020df
mov esi, ebx
lea ecx, [ebp - 0x48]
call fcn.00401f04
lea edx, [ebp - 0x18]
mov ecx, eax
call fcn.0041c3d7
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
lea ecx, [ebp - 0x18]
inc esi
call fcn.00406b28
test al, al
je 0x41748e
cmp esi, 0x4b0
jl 0x41745f
lea ecx, [ebp - 0x18]
call fcn.00406b28
test al, al
jne 0x41751e
lea ecx, [ebp - 0x48]
call fcn.00401f04
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push 1
lea ecx, [ebp - 0xc8]
call fcn.004046f7
push ecx
lea ecx, [ebp - 0xc8]
call fcn.004048c8
test al, al
je 0x417513
sub esp, 0x18
lea eax, [ebp - 0x18]
mov esi, esp
lea edx, [ebp + 8]
lea ecx, [ebp - 0x30]
push eax
push 0x474ee0
call fcn.00402f31
pop ecx
mov edx, eax
mov ecx, esi
call fcn.00402f10
pop ecx
push 0x97
lea ecx, [ebp - 0xc8]
call fcn.00404aa1
lea ecx, [ebp - 0x30]
call fcn.00401fd8
lea ecx, [ebp - 0xc8]
call fcn.00404e26
mov bl, 1
lea ecx, [ebp - 0xc8]
call fcn.00404ee2
lea ecx, [ebp - 0x18]
call fcn.00401fd8
lea ecx, [ebp - 0x48]
call fcn.00401f09
lea ecx, [ebp + 8]
call fcn.00401fd8
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x417c31
Capabilities:
Create process on windows
Delete file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x13c
lea eax, [ebp + 8]
lea ecx, [ebp - 0x84]
push ebx
push esi
push edi
push eax
push 0x4660bc
call fcn.00402093
push eax
push str.Temp
call fcn.0043c02a
pop ecx
mov edx, eax
lea ecx, [ebp - 0x6c]
call fcn.004052fd
pop ecx
mov edx, eax
lea ecx, [ebp - 0x18]
call fcn.00402f10
pop ecx
lea ecx, [ebp - 0x6c]
call fcn.00401fd8
lea ecx, [ebp - 0x84]
call fcn.00401fd8
push ecx
push ecx
push 0x10
lea ecx, [ebp - 0x18]
call fcn.00401fab
push eax
lea ecx, [ebp - 0x138]
call fcn.0040fb01
lea ecx, [ebp - 0x138]
call fcn.00417e6e
test al, al
je 0x417d62
lea edx, [ebp + 0x20]
lea ecx, [ebp - 0x138]
call fcn.00417e7e
lea ecx, [ebp - 0x138]
call fcn.0040fab2
and dword [ebp - 0x4c], 0
lea ecx, [ebp - 0x18]
and dword [ebp - 0x48], 0
mov dword [ebp - 0x54], 0x3c
mov dword [ebp - 0x50], 0x40
call fcn.00401fab
movaps xmm0, xmmword [0x46d280]
mov dword [ebp - 0x44], eax
lea eax, [ebp - 0x54]
push eax
movups xmmword [ebp - 0x40], xmm0
call dword [sym.imp.SHELL32.dll_ShellExecuteExA]
test eax, eax
mov esi, 0x4660a4
mov edi, 0x475630
setne bl
cmp dword [ebp - 0x1c], 0
je 0x417d4c
sub esp, 0x18
mov ecx, esp
push esi
call fcn.00402093
push 0x70
mov ecx, edi
call fcn.00404aa1
push 0xffffffffffffffff
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x18]
call fcn.00401fab
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
cmp bl, 1
jne 0x417d7d
sub esp, 0x18
mov ecx, esp
push esi
call fcn.00402093
push 0x6e
mov ecx, edi
jmp 0x417d78
sub esp, 0x18
mov ecx, esp
push 0x4660a4
call fcn.00402093
push 0x6f
mov ecx, 0x475630
call fcn.00404aa1
lea ecx, [ebp - 0x138]
call fcn.0040f2fe
lea ecx, [ebp - 0x18]
call fcn.00401fd8
lea ecx, [ebp + 8]
call fcn.00401fd8
lea ecx, [ebp + 0x20]
call fcn.00401fd8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x41a9f8
Capabilities:
Stop service

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
push edi
push 0x20
xor ebx, ebx
push ebx
push ebx
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
push 0x20
lea ecx, [ebp + 8]
mov esi, eax
call fcn.00401f04
push eax
push esi
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov edi, eax
test edi, edi
jne 0x41aa30
push esi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
jmp 0x41aa4e
lea eax, [ebp - 0x1c]
push eax
push 1
push edi
call dword [sym.imp.ADVAPI32.dll_ControlService]
test eax, eax
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
setne bl
call esi
push edi
call esi
lea ecx, [ebp + 8]
call fcn.00401f09
pop edi
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret

Function at 0x41aa5f
Capabilities:
Query service status
Start service
Stop service

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
push edi
push 0x11
xor ebx, ebx
push ebx
push ebx
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
push 0xf003f
lea ecx, [ebp + 8]
mov esi, eax
call fcn.00401f04
push eax
push esi
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov edi, eax
test edi, edi
jne 0x41aa9a
push esi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
jmp 0x41aaeb
lea eax, [ebp - 0x1c]
push eax
push 1
push edi
call dword [sym.imp.ADVAPI32.dll_ControlService]
test eax, eax
jne 0x41aabb
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
call esi
push edi
call esi
mov bl, 2
jmp 0x41aaeb
lea eax, [ebp - 0x1c]
push eax
push edi
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
cmp dword [ebp - 0x18], 1
jne 0x41aabb
push ebx
push ebx
push edi
call dword [sym.imp.ADVAPI32.dll_StartServiceW]
neg eax
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
sbb ebx, ebx
and ebx, 0xfffffffe
add ebx, 3
call esi
push edi
call esi
lea ecx, [ebp + 8]
call fcn.00401f09
pop edi
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret

Function at 0x41aafc
Capabilities:
Pause service

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
push edi
push 0x40
xor ebx, ebx
push ebx
push ebx
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
push 0x40
lea ecx, [ebp + 8]
mov esi, eax
call fcn.00401f04
push eax
push esi
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov edi, eax
test edi, edi
jne 0x41ab34
push esi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
jmp 0x41ab52
lea eax, [ebp - 0x1c]
push eax
push 2
push edi
call dword [sym.imp.ADVAPI32.dll_ControlService]
test eax, eax
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
setne bl
call esi
push edi
call esi
lea ecx, [ebp + 8]
call fcn.00401f09
pop edi
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x41ab63
Capabilities:
Continue service

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
push edi
push 0x40
xor ebx, ebx
push ebx
push ebx
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
push 0x40
lea ecx, [ebp + 8]
mov esi, eax
call fcn.00401f04
push eax
push esi
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov edi, eax
test edi, edi
jne 0x41ab9b
push esi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
jmp 0x41abb9
lea eax, [ebp - 0x1c]
push eax
push 3
push edi
call dword [sym.imp.ADVAPI32.dll_ControlService]
test eax, eax
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
setne bl
call esi
push edi
call esi
lea ecx, [ebp + 8]
call fcn.00401f09
pop edi
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret

Function at 0x41abca
Capabilities:
Modify service

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
push 2
xor ebx, ebx
mov byte [ebp - 1], cl
push ebx
push ebx
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
push 2
lea ecx, [ebp + 8]
mov esi, eax
call fcn.00401f04
push eax
push esi
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov edi, eax
test edi, edi
jne 0x41ac03
push esi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
jmp 0x41ac47
movzx eax, byte [ebp - 1]
or ecx, 0xffffffff
sub eax, ebx
je 0x41ac20
sub eax, 1
je 0x41ac1c
sub eax, 1
jne 0x41ac23
push 3
jmp 0x41ac22
push 2
jmp 0x41ac22
push 4
pop ecx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push ecx
push 0xffffffffffffffff
push edi
call dword [sym.imp.ADVAPI32.dll_ChangeServiceConfigW]
test eax, eax
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
setne bl
call esi
push edi
call esi
lea ecx, [ebp + 8]
call fcn.00401f09
pop edi
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret

Function at 0x41ac69
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1c
lea ecx, [esp + 4]
mov dl, 0x30
push esi
push str.alarm.wav
call fcn.0040d936
pop ecx
lea ecx, [esp + 8]
call fcn.00401f04
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x41acf4
mov esi, 0x475968
mov edx, 0x4660a4
mov ecx, esi
call fcn.00405b05
test al, al
je 0x41ace2
sub esp, 0x18
cmp byte [0x474ad2], 0
mov ecx, esp
push 0x46c92c
je 0x41accc
call fcn.00402093
mov ecx, 0x475980
jmp 0x41acd6
call fcn.00402093
mov ecx, 0x475598
push 0xa1
call fcn.00404aa1
jmp 0x41ad04
lea ecx, [esp + 8]
call fcn.00401f04
mov edx, eax
mov ecx, esi
call fcn.0041c444
lea ecx, [esp + 8]
call fcn.00401f04
mov ecx, eax
call fcn.0041ad12
lea ecx, [esp + 8]
call fcn.00401f09
pop esi
mov esp, ebp
pop ebp
ret

Function at 0x41ad67
Capabilities:
Check if file exists

Disassembly:
push ebx
push ecx
mov ecx, 0x475968
mov bl, dl
call fcn.00401fc0
test bl, bl
je 0x41ad7f
pop ebx
jmp fcn.0041ac69
mov byte [0x474ad3], 1
pop ebx
ret
Function at 0x41af99
Capabilities:
Check if file exists

Disassembly:
sub esp, 0x7c
push ebx
push ebp
push esi
push edi
push ecx
mov edi, ecx
mov esi, edx
push ecx
lea ecx, [esp + 0x98]
call fcn.0041b1ee
cmp eax, 0xffffffff
jne 0x41afe6
lea ecx, [esp + 0x90]
call fcn.00401f04
push eax
mov dl, 0x30
lea ecx, [esp + 0x14]
call fcn.0040d982
pop ecx
push eax
lea ecx, [esp + 0x94]
call fcn.00401f13
lea ecx, [esp + 0x10]
call fcn.00401f09
mov ecx, esi
call fcn.0040247c
lea ecx, [esp + 0x90]
test eax, eax
je 0x41b0da
call fcn.00401f04
mov edx, eax
mov ecx, esi
call fcn.0041c444
push str._alias_audio
mov edx, edi
lea ecx, [esp + 0x74]
call fcn.0041bbb0
push eax
lea eax, [esp + 0x98]
mov edx, str.open__
push str.__type
push eax
lea ecx, [esp + 0x68]
call fcn.0040b8ca
pop ecx
mov edx, eax
lea ecx, [esp + 0x4c]
call fcn.00403014
pop ecx
mov edx, eax
lea ecx, [esp + 0x18]
call fcn.00402fa5
pop ecx
mov edx, eax
lea ecx, [esp + 0x2c]
call fcn.00403014
pop ecx
lea ecx, [esp + 0x10]
call fcn.00401f09
lea ecx, [esp + 0x40]
call fcn.00401f09
lea ecx, [esp + 0x58]
call fcn.00401f09
lea ecx, [esp + 0x70]
call fcn.00401f09
xor ebx, ebx
lea ecx, [esp + 0x28]
push ebx
push ebx
push ebx
call fcn.00401f04
push eax
call dword [sym.imp.WINMM.dll_mciSendStringW]
mov esi, dword [sym.imp.WINMM.dll_mciSendStringA]
push ebx
push ebx
push ebx
push str.play_audio
call esi
sub esp, 0x18
mov edi, 0x4660a4
mov ecx, esp
push edi
call fcn.00402093
mov ebp, 0x475980
push 0xa9
mov ecx, ebp
call fcn.00404aa1
push ebx
push ebx
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateEventA]
mov dword [0x474ad4], eax
jmp 0x41b19e
call fcn.00401f04
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x41b00a
sub esp, 0x18
mov ecx, esp
push 0x4660a4
call fcn.00402093
push 0xa8
mov ecx, 0x475980
call fcn.00404aa1
jmp 0x41b1da
cmp byte [0x474ad1], bl
je 0x41b129
push ebx
push ebx
push ebx
push str.pause_audio
call esi
mov byte [0x474ad1], bl
cmp byte [0x474ad0], bl
je 0x41b141
push ebx
push ebx
push ebx
push str.resume_audio
call esi
mov byte [0x474ad0], bl
push ebx
push 0x14
lea eax, [esp + 0x18]
push eax
push str.status_audio_mode
call esi
lea eax, [esp + 0x10]
push str.stopped
push eax
call fcn.0043fc50
pop ecx
pop ecx
test eax, eax
jne 0x41b171
push dword [0x474ad4]
call dword [sym.imp.KERNEL32.dll_SetEvent]
push 0x1f4
push dword [0x474ad4]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x41b199
push dword [0x474ad4]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, ebx
jmp 0x41b0d0
mov eax, dword [0x474ad4]
test eax, eax
jne 0x41b111
push ebx
push ebx
push ebx
push str.stop_audio
call esi
push ebx
push ebx
push ebx
push str.close_audio
call esi
sub esp, 0x18
mov ecx, esp
push edi
call fcn.00402093
push 0xaa
mov ecx, ebp
call fcn.00404aa1
lea ecx, [esp + 0x28]
call fcn.00401f09
lea ecx, [esp + 0x90]
call fcn.00401f09
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x7c
ret