joyce8/EMBER2024-capa huggingface dataset:
Function at 0x401cf6
Capabilities:
Capture screenshot
Open clipboard
Write clipboard data

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48
lea eax, [ebp + 0x18]
mov dword [esp + 0xc], eax
lea eax, [ebp + 0x14]
mov dword [esp + 8], eax
lea eax, [ebp + 0x10]
mov dword [esp + 4], eax
lea eax, [ebp + 0xc]
mov dword [esp], eax
call sym.normalize_coords_int__int__int__int_
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x14]
sub eax, edx
mov dword [ebp - 4], eax
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp - 8], eax
mov dword [esp], 0
call sym._GetDC_4
sub esp, 4
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
mov dword [esp], eax
call sym._CreateCompatibleDC_4
sub esp, 4
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 8]
mov dword [esp + 8], eax
mov eax, dword [ebp - 4]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xc]
mov dword [esp], eax
call sym._CreateCompatibleBitmap_12
sub esp, 0xc
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sym._SelectObject_8
sub esp, 8
mov dword [ebp - 0x18], eax
mov dword [esp + 0x20], 0xcc0020
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x18], eax
mov eax, dword [ebp - 0xc]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 8]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 4]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sym._BitBlt_36
sub esp, 0x24
test eax, eax
jne 0x401df1
mov dword [esp], str.error:_BitBlt_failed_n
call sym._printf
mov dword [ebp - 0x20], 0
jmp 0x401e79
mov byte [ebp - 0x19], 0
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._OpenClipboard_4
sub esp, 4
test eax, eax
je 0x401e35
call sym._EmptyClipboard_0
test eax, eax
je 0x401e2e
mov eax, dword [ebp - 0x14]
mov dword [esp + 4], eax
mov dword [esp], 2
call sym._SetClipboardData_8
sub esp, 8
test eax, eax
je 0x401e2e
mov byte [ebp - 0x19], 1
call sym._CloseClipboard_0
jmp 0x401e41
mov dword [esp], str.error:_could_not_open_clipboard_n
call sym._printf
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sym._DeleteDC_4
sub esp, 4
mov eax, dword [ebp - 0xc]
mov dword [esp], eax
call sym._DeleteDC_4
sub esp, 4
mov eax, dword [ebp - 0x18]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sym._SelectObject_8
sub esp, 8
movzx eax, byte [ebp - 0x19]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
leave
ret

Function at 0x40c630
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x1c
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0x10], eax
lea esi, [esi]
lea edi, [edi]
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call fcn.0040c570
mov dword [esp], eax
mov dword [esp + 8], esi
mov dword [esp + 4], edi
call sym._read
cmp eax, 0xffffffff
mov ebx, eax
jne 0x40c67c
call sym.__errno
cmp dword [eax], 4
je 0x40c650
add esp, 0x1c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
Function at 0x40e660
Capabilities:
Allocate thread local storage

Disassembly:
push ebp
mov ebp, esp
push ebx
sub esp, 0x14
mov ebx, dword [0x44a5d0]
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
cmp eax, 0xffffffff
je 0x40e6a0
mov dword [ebx + 0x30], eax
xor eax, eax
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x30]
mov dword [esp], eax
call sym.___mingwthr_key_dtor
test eax, eax
sete al
movzx eax, al
mov dword [ebx + 0x2c], eax
add esp, 0x14
pop ebx
pop ebp
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
sete al
movzx eax, al
mov dword [ebx + 0x2c], eax
add esp, 0x14
pop ebx
pop ebp
ret

Function at 0x40ea50
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x2c
mov eax, dword [0x44a5d0]
mov edi, dword [ebp + 8]
test eax, eax
je 0x40eb2c
mov ecx, dword [eax + 0x2c]
test ecx, ecx
js 0x40eb41
mov edx, dword [eax + 0x2c]
test edx, edx
jne 0x40eb00
mov eax, dword [eax + 0x28]
mov dword [ebp - 0x10], eax
lea ebx, [ebp - 0x14]
mov dword [ebp - 0x14], eax
jmp 0x40ea98
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
mov dword [ebp - 0x14], eax
xor ecx, ecx
test eax, eax
mov edx, 5
je 0x40eaa8
mov ecx, dword [eax + 0x18]
xor edx, edx
cmp edx, 5
je 0x40eaf3
test edx, edx
jne 0x40eae6
test ecx, ecx
je 0x40ea90
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], edi
mov eax, dword [edi]
mov edx, dword [edi + 4]
mov dword [esp], 1
mov dword [esp + 8], eax
mov eax, 1
mov dword [esp + 0xc], edx
mov dword [esp + 4], eax
call ecx
cmp eax, 6
je 0x40eb50
cmp eax, 8
je 0x40ea90
mov eax, 3
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
lea esp, [ebp - 0xc]
mov eax, 5
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebx, dword [eax + 0x30]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], ebx
mov esi, eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov ebx, eax
mov dword [esp], esi
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, ebx
sub esp, 4
jmp 0x40ea82
call sym.___w32_sharedptr_initialize
mov eax, dword [0x44a5d0]
mov ecx, dword [eax + 0x2c]
test ecx, ecx
jns 0x40ea74
call sym._fc_key_init_once
mov eax, dword [0x44a5d0]
jmp 0x40ea74
mov dword [edi + 0xc], 0
mov eax, dword [ebp - 0x14]
mov edx, ebx
mov dword [edi + 0x10], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
mov eax, edi
call sym.__Unwind_RaiseException_Phase2
cmp eax, 7
jne 0x40eaeb
mov eax, dword [0x44a5d0]
mov ebx, dword [ebp - 0x14]
test eax, eax
je 0x40eba3
mov edi, dword [eax + 0x2c]
test edi, edi
js 0x40ebce
mov esi, dword [eax + 0x2c]
test esi, esi
jne 0x40ebaf
mov dword [eax + 0x28], ebx
mov eax, dword [ebp - 0x14]
lea edx, [eax + 0x20]
mov ecx, dword [edx + 4]
mov ebp, dword [eax + 0x20]
mov esp, dword [edx + 8]
jmp ecx
call sym.___w32_sharedptr_initialize
mov eax, dword [0x44a5d0]
jmp 0x40eb81
mov eax, dword [eax + 0x30]
mov dword [esp + 4], ebx
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
sub esp, 8
test eax, eax
jne 0x40eb92
call dword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x40eb92
call sym._fc_key_init_once
mov eax, dword [0x44a5d0]
jmp 0x40eb88
Function at 0x413b80
Capabilities:
Contain obfuscated stackstrings

Disassembly:
push ebp
mov ebp, esp
pop ebp
jmp sym.___do_sjlj_init

Function at 0x413e94
Capabilities:
Hide graphical window

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov eax, dword [ebp + 0xc]
mov byte [ebp - 1], al
cmp byte [ebp - 1], 0
je 0x413ec1
mov dword [esp + 4], 5
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x68]
mov dword [esp], eax
call sym._ShowWindow_8
sub esp, 8
jmp 0x413eda
mov dword [esp + 4], 0
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x68]
mov dword [esp], eax
call sym._ShowWindow_8
sub esp, 8
leave
ret

Function at 0x41526c
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov dword [ebp - 8], ebx
mov ebx, dword [ebp + 8]
mov dword [ebp - 4], esi
mov esi, dword [ebp + 0xc]
mov eax, dword [ebx + 0x20]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x10]
mov dword [esp], esi
mov dword [esp + 8], eax
mov eax, 1
mov dword [esp + 4], eax
call sym._fread
test eax, eax
mov edx, eax
jle 0x4152bc
movzx eax, byte [esi + eax - 1]
mov dword [ebx + 0x24], eax
mov ebx, dword [ebp - 8]
mov eax, edx
mov esi, dword [ebp - 4]
mov esp, ebp
pop ebp
ret
mov dword [ebx + 0x24], 0xffffffff
mov eax, edx
mov ebx, dword [ebp - 8]
mov esi, dword [ebp - 4]
mov esp, ebp
pop ebp
ret
Function at 0x402d28
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push esi
push 0
mov eax, dword [ebp + 8]
push eax
push dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
push eax
push dword [ebp + 0x14]
call sub.kernel32.dll_WriteFile
test eax, eax
setne al
movsx eax, al
push eax
call fcn.00402bc8
mov esi, eax
cmp dword [0x407dd4], 0xffffffff
je 0x402d89
mov eax, dword [ebp + 0x14]
cmp eax, dword [0x407dd0]
jne 0x402d89
lea eax, [ebp - 0x1c]
push eax
push dword [0x407dd0]
call sub.kernel32.dll_GetConsoleScreenBufferInfo
movsx eax, word [ebp - 0x18]
mov dword [0x407ddc], eax
movsx eax, word [ebp - 0x16]
mov dword [0x407de0], eax
mov eax, esi
pop esi
mov esp, ebp
pop ebp
ret 0x10

Function at 0x402ea0
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38c
push esi
push edi
mov edi, 3
push 0x4088f0
call fcn.00406008
mov esi, dword [eax]
push 0x4088f0
call fcn.00406008
mov dword [eax], 0x40
lea eax, [ebp - 0x150]
push eax
lea eax, [ebp - 0x38c]
push eax
push 0
call fcn.00405870
call fcn.004056ec
lea eax, [ebp - 0x150]
push eax
push 1
call fcn.00405778
call fcn.0040432c
test eax, eax
jne 0x402fe1
lea eax, [ebp - 0x150]
push eax
lea eax, [ebp - 0x190]
push eax
push 0x40
push 0
call fcn.00405850
call fcn.0040432c
test eax, eax
jne 0x402f57
cmp word [ebp - 0x190], 0x5a4d
jne 0x402f57
lea eax, [ebp - 0x150]
push eax
push dword [ebp - 0x154]
call fcn.00405794
lea eax, [ebp - 0x150]
push eax
lea eax, [ebp - 0x190]
push eax
push 2
push 0
call fcn.00405850
jmp 0x402f61
mov dword [ebp - 0x154], 0
lea eax, [ebp - 0x150]
push eax
push dword [ebp - 0x154]
call fcn.00405794
call fcn.0040432c
test eax, eax
jne 0x402fc5
cmp word [ebp - 0x190], 0x4550
jne 0x402fc5
lea eax, [ebp - 0x150]
push eax
lea eax, [ebp - 0x288]
push eax
push 0xf8
push 0
call fcn.00405850
call fcn.0040432c
test eax, eax
jne 0x402fc5
cmp dword [ebp - 0x288], 0x4550
jne 0x402fc5
cmp word [ebp - 0x22c], 3
jne 0x402fc5
mov edi, 2
lea eax, [ebp - 0x150]
push eax
call fcn.004057c4
push 0x4088e8
call fcn.00406008
mov dword [eax], 0
push 0x4088f0
call fcn.00406008
mov dword [eax], esi
mov eax, edi
pop edi
pop esi
mov esp, ebp
pop ebp
ret

Function at 0x403038
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
push esi
mov eax, dword [ebp + 8]
push eax
push dword [ebp + 0xc]
push dword [ebp + 0x10]
push dword [ebp + 0x14]
push dword [ebp + 0x18]
push dword [ebp + 0x1c]
call sub.kernel32.dll_CreateThread
mov esi, eax
push esi
call sub.kernel32.dll_CloseHandle
test esi, esi
setne al
movsx eax, al
push eax
call fcn.00402bc8
mov esi, eax
mov eax, esi
pop esi
pop ebp
ret 0x18
Function at 0x4030dc
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x110
push ebx
push esi
push edi
cmp dword [0x407e74], 0
je 0x4030fe
mov eax, dword [0x407e74]
mov dword [ebp - 4], eax
jmp 0x403193
push 0x104
call fcn.00404400
mov dword [ebp - 4], eax
push 0x104
push dword [ebp - 4]
push 0
call sub.kernel32.dll_GetModuleFileNameA
push dword [ebp - 4]
call fcn.00403ec8
inc eax
mov ebx, eax
call sub.kernel32.dll_GetCommandLineA
mov esi, eax
mov al, byte [esi]
dec al
cmp al, 0x1f
jbe 0x403143
push esi
lea eax, [ebp - 0x108]
push eax
call fcn.00403074
mov esi, eax
inc esi
push esi
call fcn.00403ec8
inc eax
mov edi, eax
lea eax, [ebp - 4]
push eax
mov eax, ebx
add eax, edi
inc eax
push eax
call fcn.00404460
call sub.kernel32.dll_AreFileApisANSI
test eax, eax
jne 0x403174
push edi
mov eax, dword [ebp - 4]
add eax, ebx
push eax
push esi
call sub.user32.dll_CharToOemBuffA
jmp 0x403181
push esi
mov eax, dword [ebp - 4]
add eax, ebx
push eax
push edi
call fcn.00404c40
mov eax, dword [ebp - 4]
add eax, ebx
add eax, edi
mov byte [eax], 0
mov eax, dword [ebp - 4]
mov dword [0x407e74], eax
mov eax, dword [ebp - 4]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret

Function at 0x403270
Capabilities:
Contain obfuscated stackstrings
Read file via mapping

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push ebx
push esi
mov dword [ebp - 0x24], 0x52414853
mov dword [ebp - 0x20], 0x454d4445
mov dword [ebp - 0x1c], 0x5356354d
call sub.kernel32.dll_GetCurrentProcessId
push eax
push 0
lea eax, [ebp - 0x18]
push eax
push 0xb
call fcn.00404bb4
xor eax, eax
mov bl, 0
cmp dword [0x407e18], 0
jne 0x4032be
push 0x407b68
push 1
call fcn.00402ad4
mov dword [0x407e18], eax
cmp dword [0x407e18], 0
jne 0x4032d7
push 0x8000
call fcn.00404400
mov esi, eax
mov bl, 1
jmp 0x403311
lea eax, [ebp - 0x24]
push eax
push 0
push 6
call dword [0x407e18]
test eax, eax
jne 0x403301
lea eax, [ebp - 0x24]
push eax
push 0x8000
push 0
push 4
push 0
push 0xffffffffffffffff
call sub.kernel32.dll_CreateFileMappingA
mov bl, 1
push 0
push 0
push 0
push 6
push eax
call sub.kernel32.dll_MapViewOfFile
mov esi, eax
test bl, bl
je 0x40333a
push esi
push 0x8000
push 0xff
call fcn.00404c9c
push esi
push 0x24
push 0
call fcn.00404c9c
mov eax, esi
add eax, 0xc
push eax
call fcn.004044e8
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x4036e8
Capabilities:
Manipulate console buffer

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x418
push esi
call fcn.00403674
lea edx, [ebp - 0x400]
movzx ecx, word [ebp + 0x14]
dec ecx
xor esi, esi
jmp 0x403720
mov eax, dword [ebp + 8]
movzx eax, byte [eax]
mov word [edx + 2], ax
mov eax, dword [ebp + 0x18]
movzx eax, byte [eax]
mov word [edx], ax
inc dword [ebp + 0x18]
add edx, 4
inc esi
cmp ecx, esi
jge 0x403706
mov ax, word [ebp + 0x14]
mov word [ebp - 0x404], ax
mov word [ebp - 0x402], 1
mov word [ebp - 0x408], 0
mov word [ebp - 0x406], 0
mov ax, word [ebp + 0x10]
mov word [ebp - 0x410], ax
mov ax, word [ebp + 0xc]
mov word [ebp - 0x40e], ax
movzx ecx, word [ebp + 0x10]
movzx eax, word [ebp + 0x14]
add ecx, eax
dec ecx
mov word [ebp - 0x40c], cx
mov ax, word [ebp + 0xc]
mov word [ebp - 0x40a], ax
lea eax, [ebp - 0x410]
push eax
push dword [ebp - 0x408]
push dword [ebp - 0x404]
lea eax, [ebp - 0x400]
push eax
push dword [0x407dd0]
call sub.kernel32.dll_WriteConsoleOutputA
pop esi
mov esp, ebp
pop ebp
ret 0x14

Function at 0x403ac8
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
sub esp, 4
push 2
lea eax, [ebp - 4]
push eax
push dword [ebp + 0xc]
push dword [ebp + 0x10]
call sub.kernel32.dll_GetLocaleInfoA
test eax, eax
jle 0x403ae8
mov al, byte [ebp - 4]
jmp 0x403aeb
mov al, byte [ebp + 8]
mov esp, ebp
pop ebp
ret 0xc
Function at 0x405b28
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
push esi
push edi
or edi, 0xffffffff
or eax, 0xffffffff
mov dword [ebp - 0x24], 0
xor esi, esi
mov edx, dword [0x4081c8]
add edx, 0x24
mov esi, edx
cmp dword [edx], 0xffffffff
je 0x405b66
mov ecx, dword [edx + 8]
cmp ecx, dword [ebp + 0x10]
ja 0x405b61
mov ecx, dword [edx + 8]
cmp ecx, dword [esi + 8]
jbe 0x405b61
mov esi, edx
add edx, 0x10
jmp 0x405b4a
mov edx, esi
cmp dword [edx], 0xffffffff
je 0x405c7a
mov ecx, dword [edx + 8]
cmp ecx, dword [ebp + 0x10]
ja 0x405c7a
mov ecx, dword [edx + 8]
cmp ecx, dword [ebp + 0x10]
ja 0x405c78
mov ecx, dword [edx + 8]
sub dword [ebp + 0x10], ecx
mov ecx, dword [edx + 8]
mov dword [ebp - 0x18], ecx
mov edx, dword [edx + 0xc]
test edx, edx
je 0x405c78
mov cl, byte [edx]
sub cl, 0x3c
jne 0x405bae
jmp 0x405c78
sub cl, 3
jne 0x405bc8
inc edx
mov dword [ebp - 0xc], edx
movzx ecx, byte [edx]
inc ecx
add edx, ecx
mov byte [ebp - 0x25], 1
jmp 0x405c73
inc cl
jne 0x405bdc
movzx ecx, word [edx + 1]
add edi, ecx
add edx, 3
jmp 0x405c73
inc cl
jne 0x405bf0
movzx ecx, word [edx + 1]
add edi, ecx
mov ecx, dword [edx + 3]
add eax, ecx
add edx, 7
jmp 0x405c03
movzx ecx, byte [edx]
shr ecx, 6
add edi, ecx
mov cl, byte [edx]
and cl, 0x3f
movzx ecx, cl
add eax, ecx
inc edx
cmp eax, dword [ebp + 0x10]
jne 0x405c0d
mov esi, eax
mov dword [ebp - 0x24], edi
cmp eax, dword [ebp + 0x10]
jl 0x405c6a
sub eax, dword [ebp + 0x10]
cmp eax, 0xa
jle 0x405c20
cmp byte [ebp - 0x25], 0
jne 0x405c68
mov eax, dword [ebp - 0xc]
mov cl, byte [eax]
mov eax, dword [ebp + 0xc]
mov byte [eax], cl
mov dword [ebp - 0x14], 0
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax]
cmp eax, dword [ebp - 0x14]
jle 0x405c56
inc dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x14]
mov dl, byte [eax + ecx]
xor dl, 0xaa
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x14]
mov byte [eax + ecx], dl
jmp 0x405c31
movzx eax, word [ebp - 0x24]
mov ecx, dword [ebp + 8]
mov dword [ecx], eax
add esi, dword [ebp - 0x18]
mov eax, esi
jmp 0x405c7a
jmp 0x405c78
mov esi, eax
mov dword [ebp - 0x24], edi
mov byte [ebp - 0x25], 0
jmp 0x405ba0
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc

Function at 0x406150
Capabilities:
Query environment variable

Disassembly:
sub esp, 0x10
cld
push ecx
call fcn.0040612c
call fcn.00403270
mov dword [0x4081c8], eax
lea edx, [eax + 0x18]
mov dword [0x408228], edx
pop edx
call fcn.00405fac
call sub.kernel32.dll_GetEnvironmentStrings
mov dword [0x4081f4], eax
push 0
call sub.kernel32.dll_GetModuleHandleA
mov dword [0x408208], eax
mov dword [0x408230], eax
call fcn.00402ea0
cmp eax, 3
setb byte [0x4081d1]
call fcn.00403ec0
lea eax, [esp]
xor edx, edx
mov ecx, dword fs:[edx]
mov dword fs:[edx], eax
mov dword [eax], ecx
mov dword [eax + 4], 0x4063dc
mov dword [eax + 8], ebp
jmp dword [esp + 0x10]
Function at 0x401330
Capabilities:
Access peb ldr_data
Get kernel32 base address
Get process heap flags
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x5c
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], edx
test byte [0x404020], 8
jne 0x401410
mov ebx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x30]
lea edi, [ebp - 0x1c]
lea esi, [ebp - 0x20]
mov dword [esp + 0x14], edi
mov dword [esp], ebx
mov ebx, dword [sym.imp.advapi32.dll_RegQueryValueExW]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0
mov dword [esp + 4], eax
call ebx
xor edx, edx
sub esp, 0x18
test eax, eax
jne 0x401402
mov ecx, dword [ebp - 0x1c]
mov dword [esp + 4], 0
add ecx, 4
mov edx, ecx
mov dword [ebp - 0x3c], ecx
mov dword [esp + 8], edx
mov ecx, dword fs:[0x18]
mov eax, dword [ecx + 0x30]
mov dword [ebp - 0x38], ecx
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
sub esp, 0xc
mov dword [ebp - 0x34], eax
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x30]
mov dword [esp + 0x14], edi
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x2c]
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0
mov dword [esp], eax
call ebx
mov edx, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x38]
sub esp, 0x18
test eax, eax
jne 0x401440
mov eax, dword [ebp - 0x3c]
xor ecx, ecx
xor ebx, ebx
and eax, 0xfffffffe
mov word [edx + eax - 2], cx
mov word [edx + eax - 4], bx
lea esp, [ebp - 0xc]
mov eax, edx
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0xc], 0x405017
mov dword [esp + 8], str.GetRegValue
mov dword [esp + 4], 0x404020
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x40134c
mov dword [esp + 8], edx
mov dword [esp + 4], 0
mov eax, dword [ecx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
xor edx, edx
sub esp, 0xc
jmp 0x401402
Function at 0x401df0
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push esi
push ebx
and esp, 0xfffffff0
sub esp, 0x10
mov esi, dword [ebp + 8]
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_strlen]
mov ebx, eax
xor eax, eax
test ebx, ebx
je 0x401e4b
cmp byte [esi + ebx - 1], 0xa
je 0x401e1f
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x24]
xchg dword [0x4040f8], eax
mov dword [esp], 2
call dword [sym.imp.ucrtbase.dll___acrt_iob_func]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_fwrite]
lea esp, [ebp - 8]
pop ebx
pop esi
pop ebp
ret
Function at 0x403080
Capabilities:
Get process heap force flags
Terminate process

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
and esp, 0xfffffff0
sub esp, 0x10
mov dword [esp], 1
call sym.__configure_wide_argv
call sym.__initialize_wide_environment
call sym.___p___argc
mov esi, dword [eax]
call sym.___p___wargv
mov edi, dword [eax]
call sym.__get_initial_wide_environment
mov ebx, eax
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 8]
mov edx, dword [eax + 0x3c]
cmp word [eax + edx + 0x5c], 2
sete al
movzx eax, al
inc eax
mov dword [esp], eax
call sym.__set_app_type
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
mov dword [esp], esi
call sym._wmain
mov dword [esp], eax
call sym._exit
nop
nop
Function at 0x405510
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x90c
push ebx
push esi
mov edx, ecx
push edi
mov ecx, 0x200
xor eax, eax
lea edi, [esp + 0x114]
mov byte [esp + 0x10], 0
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
mov al, byte [edx + 0x941]
cmp al, 0x3a
je 0x405570
cmp byte [edx + 0x940], 0x5c
je 0x405570
cmp al, 0x5c
je 0x405570
mov edi, dword [esp + 0x91c]
or ecx, 0xffffffff
xor eax, eax
lea ebx, [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [edx + 0x940]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push eax
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
push eax
push 3
mov ecx, ebx
push eax
push eax
and ecx, 3
lea eax, [esp + 0x24]
push 0x80000000
rep movsb byte es:[edi], byte [esi]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
jne 0x4055de
lea ecx, [esp + 0x10]
push ecx
push 0x21
push 0x4284f0
call fcn.00409820
add esp, 0xc
or eax, esi
pop edi
pop esi
pop ebx
add esp, 0x90c
ret 4
lea edx, [esp + 0xc]
push 0
push edx
lea eax, [esp + 0x11c]
push 0x800
push eax
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
push esi
jne 0x405627
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esp + 0x10]
push ecx
push 0x21
push 0x4284f0
call fcn.00409820
add esp, 0xc
or eax, 0xffffffff
pop edi
pop esi
pop ebx
add esp, 0x90c
ret 4
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea edx, [esp + 0x114]
push edx
call fcn.00414040
mov al, byte [esp + 0x118]
add esp, 4
test al, al
lea esi, [esp + 0x114]
je 0x405696
mov bl, 0x6d
cmp byte [esi], 0x69
jne 0x40566f
cmp byte [esi + 4], bl
jne 0x40566f
push 8
push str.inf_mode
push esi
call fcn.00414000
add esp, 0xc
test eax, eax
je 0x405685
mov al, byte [esi + 1]
inc esi
test al, al
jne 0x405651
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 0x90c
ret 4
mov eax, 1
pop edi
pop esi
pop ebx
add esp, 0x90c
ret 4
pop edi
pop esi
xor eax, eax
pop ebx
add esp, 0x90c
ret 4
Function at 0x405ee0
Capabilities:
Delete file
Get common file path

Disassembly:
sub esp, 0x208
lea eax, [esp]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea ecx, [esp + 0x104]
lea edx, [esp]
push ecx
push 0
push str.vs98
push edx
call dword [sym.imp.KERNEL32.dll_GetTempFileNameA]
test eax, eax
jne 0x405f20
mov eax, 1
add esp, 0x208
ret
lea eax, [esp + 0x104]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
xor eax, eax
add esp, 0x208
ret