joyce8/EMBER2024-capa huggingface dataset:
Function at 0x405820
Capabilities:
Get common file path
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x224
mov eax, dword [0x428044]
xor eax, ebp
mov dword [ebp - 8], eax
mov dword [ebp - 0x214], 0
xor eax, eax
mov word [ebp - 0x210], ax
push 0x206
push 0
lea ecx, [ebp - 0x20e]
push ecx
call fcn.00417ec0
add esp, 0xc
mov dword [ebp - 4], 0
cmp dword [ebp + 8], 0
je 0x40586f
cmp dword [ebp + 0xc], 0
jne 0x405879
jmp 0x40594a
cmp dword [ebp + 0x10], 0
je 0x4058ce
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x218], edx
mov eax, dword [ebp - 0x218]
add eax, 2
mov dword [ebp - 0x21c], eax
mov ecx, dword [ebp - 0x218]
mov dx, word [ecx]
mov word [ebp - 0x21e], dx
add dword [ebp - 0x218], 2
cmp word [ebp - 0x21e], 0
jne 0x405897
mov eax, dword [ebp - 0x218]
sub eax, dword [ebp - 0x21c]
sar eax, 1
mov dword [ebp - 0x224], eax
jne 0x4058d2
jmp 0x40594a
lea ecx, [ebp - 0x210]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
mov edx, dword [ebp + 0x10]
push edx
push 0x104
lea eax, [ebp - 0x210]
push eax
call fcn.0041123d
add esp, 0xc
push 0x42616c
lea ecx, [ebp - 0x210]
push ecx
lea edx, [ebp - 4]
push edx
call fcn.00410a07
add esp, 0xc
cmp dword [ebp - 4], 0
jne 0x40591e
jmp 0x40594a
mov eax, dword [ebp - 4]
push eax
push 1
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00411bee
add esp, 0x10
mov eax, dword [ebp - 4]
push eax
call fcn.00410c8c
add esp, 4
mov dword [ebp - 0x214], 1
mov eax, dword [ebp - 0x214]
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004107a7
mov esp, ebp
pop ebp
ret

Function at 0x405bf0
Capabilities:
Check if file exists
Delete file
Get file attributes
Set file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0xffffffff
jne 0x405c0d
xor eax, eax
jmp 0x405c78
mov ecx, dword [ebp - 0xc]
and ecx, 1
je 0x405c1e
mov edx, dword [ebp - 0xc]
xor edx, 1
mov dword [ebp - 0xc], edx
mov eax, dword [ebp - 0xc]
and eax, 4
je 0x405c2f
mov ecx, dword [ebp - 0xc]
xor ecx, 4
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp - 0xc]
and edx, 2
je 0x405c40
mov eax, dword [ebp - 0xc]
xor eax, 2
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0xc]
and ecx, 0x20
je 0x405c51
mov edx, dword [ebp - 0xc]
xor edx, 0x20
mov dword [ebp - 0xc], edx
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov dword [ebp - 8], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 8]
mov esp, ebp
pop ebp
ret

Function at 0x405d00
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [ebp - 8], eax
xor ecx, ecx
cmp dword [ebp - 8], 0xffffffff
setne cl
mov dword [ebp - 4], ecx
mov eax, dword [ebp - 4]
mov esp, ebp
pop ebp
ret
Function at 0x409880
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
cmp dword [ebp + 0xc], 0
jne 0x409890
xor eax, eax
jmp 0x409a2d
mov eax, dword [ebp + 8]
xor eax, 0xffffffff
mov dword [ebp + 8], eax
cmp dword [ebp + 0x10], 8
jb 0x4099ee
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx]
xor edx, dword [ebp + 8]
and edx, 0xff
mov eax, dword [ebp + 8]
shr eax, 8
xor eax, dword [edx*4 + 0x424b60]
mov dword [ebp + 8], eax
mov ecx, dword [ebp + 0xc]
add ecx, 1
mov dword [ebp + 0xc], ecx
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx]
xor eax, dword [ebp + 8]
and eax, 0xff
mov ecx, dword [ebp + 8]
shr ecx, 8
xor ecx, dword [eax*4 + 0x424b60]
mov dword [ebp + 8], ecx
mov edx, dword [ebp + 0xc]
add edx, 1
mov dword [ebp + 0xc], edx
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax]
xor ecx, dword [ebp + 8]
and ecx, 0xff
mov edx, dword [ebp + 8]
shr edx, 8
xor edx, dword [ecx*4 + 0x424b60]
mov dword [ebp + 8], edx
mov eax, dword [ebp + 0xc]
add eax, 1
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx]
xor edx, dword [ebp + 8]
and edx, 0xff
mov eax, dword [ebp + 8]
shr eax, 8
xor eax, dword [edx*4 + 0x424b60]
mov dword [ebp + 8], eax
mov ecx, dword [ebp + 0xc]
add ecx, 1
mov dword [ebp + 0xc], ecx
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx]
xor eax, dword [ebp + 8]
and eax, 0xff
mov ecx, dword [ebp + 8]
shr ecx, 8
xor ecx, dword [eax*4 + 0x424b60]
mov dword [ebp + 8], ecx
mov edx, dword [ebp + 0xc]
add edx, 1
mov dword [ebp + 0xc], edx
mov eax, dword [ebp + 0xc]
movzx ecx, byte [eax]
xor ecx, dword [ebp + 8]
and ecx, 0xff
mov edx, dword [ebp + 8]
shr edx, 8
xor edx, dword [ecx*4 + 0x424b60]
mov dword [ebp + 8], edx
mov eax, dword [ebp + 0xc]
add eax, 1
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx]
xor edx, dword [ebp + 8]
and edx, 0xff
mov eax, dword [ebp + 8]
shr eax, 8
xor eax, dword [edx*4 + 0x424b60]
mov dword [ebp + 8], eax
mov ecx, dword [ebp + 0xc]
add ecx, 1
mov dword [ebp + 0xc], ecx
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx]
xor eax, dword [ebp + 8]
and eax, 0xff
mov ecx, dword [ebp + 8]
shr ecx, 8
xor ecx, dword [eax*4 + 0x424b60]
mov dword [ebp + 8], ecx
mov edx, dword [ebp + 0xc]
add edx, 1
mov dword [ebp + 0xc], edx
mov eax, dword [ebp + 0x10]
sub eax, 8
mov dword [ebp + 0x10], eax
jmp 0x409899
cmp dword [ebp + 0x10], 0
je 0x409a27
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx]
xor edx, dword [ebp + 8]
and edx, 0xff
mov eax, dword [ebp + 8]
shr eax, 8
xor eax, dword [edx*4 + 0x424b60]
mov dword [ebp + 8], eax
mov ecx, dword [ebp + 0xc]
add ecx, 1
mov dword [ebp + 0xc], ecx
mov edx, dword [ebp + 0x10]
sub edx, 1
mov dword [ebp + 0x10], edx
jne 0x4099f4
mov eax, dword [ebp + 8]
xor eax, 0xffffffff
pop ebp
ret
Function at 0x409a30
Capabilities:
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
movsx eax, byte [ebp + 0xc]
mov ecx, dword [ebp + 8]
xor eax, dword [ecx]
and eax, 0xff
mov edx, dword [ebp + 8]
mov ecx, dword [edx]
shr ecx, 8
xor ecx, dword [eax*4 + 0x424b60]
mov edx, dword [ebp + 8]
mov dword [edx], ecx
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
and ecx, 0xff
mov edx, dword [ebp + 8]
add ecx, dword [edx + 4]
mov eax, dword [ebp + 8]
mov dword [eax + 4], ecx
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 4]
imul edx, edx, 0x8088405
add edx, 1
mov eax, dword [ebp + 8]
mov dword [eax + 4], edx
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 4]
shr edx, 0x18
mov eax, dword [ebp + 8]
xor edx, dword [eax + 8]
and edx, 0xff
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 8]
shr eax, 8
xor eax, dword [edx*4 + 0x424b60]
mov ecx, dword [ebp + 8]
mov dword [ecx + 8], eax
pop ebp
ret

Function at 0x40a9f0
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
mov eax, dword [ebp + 0xc]
imul eax, dword [ebp + 0x10]
mov dword [ebp - 8], eax
mov ecx, dword [ebp + 0x14]
movzx edx, byte [ecx]
test edx, edx
je 0x40aa3f
push 0
lea eax, [ebp - 0x10]
push eax
mov ecx, dword [ebp - 8]
push ecx
mov edx, dword [ebp + 8]
push edx
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax + 4]
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jne 0x40aa35
mov edx, dword [ebp + 0x14]
mov byte [edx + 8], 1
mov eax, dword [ebp - 0x10]
xor edx, edx
div dword [ebp + 0xc]
jmp 0x40aa99
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax + 0x1c]
add ecx, dword [ebp - 8]
mov edx, dword [ebp + 0x14]
cmp ecx, dword [edx + 0x18]
jbe 0x40aa5f
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x14]
mov edx, dword [eax + 0x18]
sub edx, dword [ecx + 0x1c]
mov dword [ebp - 8], edx
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [ebp + 0x14]
mov edx, dword [ecx + 0x14]
mov eax, dword [ebp + 0x14]
add edx, dword [eax + 0x1c]
push edx
mov ecx, dword [ebp + 8]
push ecx
call fcn.00414390
add esp, 0xc
mov edx, dword [ebp - 8]
mov dword [ebp - 4], edx
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax + 0x1c]
add ecx, dword [ebp - 4]
mov edx, dword [ebp + 0x14]
mov dword [edx + 0x1c], ecx
mov eax, dword [ebp - 4]
xor edx, edx
div dword [ebp + 0xc]
mov esp, ebp
pop ebp
ret
Function at 0x40c2b0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
push edi
mov dword [ebp - 0x18], ecx
mov eax, dword [ebp - 0x18]
cmp dword [eax], 0
jne 0x40c2cb
mov ecx, dword [ebp - 0x18]
cmp dword [ecx + 4], 0xffffffff
je 0x40c2d5
mov eax, 0x1000000
jmp 0x40c3eb
mov edx, dword [ebp - 0x18]
add edx, 0x244
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov eax, dword [ebp - 0x18]
add eax, 0x244
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebp - 0x1c]
add ecx, 2
mov dword [ebp - 0x20], ecx
mov edx, dword [ebp - 0x1c]
mov ax, word [edx]
mov word [ebp - 0x22], ax
add dword [ebp - 0x1c], 2
cmp word [ebp - 0x22], 0
jne 0x40c2fe
mov ecx, dword [ebp - 0x1c]
sub ecx, dword [ebp - 0x20]
sar ecx, 1
mov dword [ebp - 0x28], ecx
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x18]
mov cx, word [eax + edx*2 + 0x242]
mov word [ebp - 8], cx
movzx edx, word [ebp - 8]
cmp edx, 0x5c
je 0x40c36f
movzx eax, word [ebp - 8]
cmp eax, 0x2f
je 0x40c36f
mov ecx, dword [ebp - 0x18]
add ecx, 0x242
mov dword [ebp - 0x2c], ecx
mov edx, dword [ebp - 0x2c]
mov ax, word [edx + 2]
mov word [ebp - 0x2e], ax
add dword [ebp - 0x2c], 2
cmp word [ebp - 0x2e], 0
jne 0x40c34e
mov edi, dword [ebp - 0x2c]
mov ecx, dword [0x424ff8]
mov dword [edi], ecx
cmp dword [ebp + 0x10], 1
jne 0x40c3a3
push 1
push 0
push 0
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov dword [ebp - 0x10], eax
xor eax, eax
cmp dword [ebp - 0x10], 0xffffffff
setne al
mov byte [ebp - 0x11], al
movzx ecx, byte [ebp - 0x11]
test ecx, ecx
jne 0x40c3a3
mov eax, 0x2000000
jmp 0x40c3eb
lea edx, [ebp - 0xc]
push edx
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.0040a6d0
add esp, 0x10
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jne 0x40c3c9
mov eax, dword [ebp - 0xc]
jmp 0x40c3eb
mov eax, dword [ebp - 4]
push eax
call fcn.0040ada0
add esp, 4
mov ecx, dword [ebp - 0x18]
mov dword [ecx], eax
mov edx, dword [ebp - 0x18]
cmp dword [edx], 0
jne 0x40c3e9
mov eax, 0x200
jmp 0x40c3eb
xor eax, eax
pop edi
mov esp, ebp
pop ebp
ret 0xc
Function at 0x40db20
Capabilities:
Check if file exists
Create process on windows
Get file attributes
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x240
mov eax, dword [0x428044]
xor eax, ebp
mov dword [ebp - 0x28], eax
push 0x64
push 0x42ac88
push 0x67
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
push 0x64
push 0x42abc0
push 0x6d
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.USER32.dll_LoadStringW]
mov edx, dword [ebp + 8]
push edx
call fcn.0040dda0
add esp, 4
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x234], eax
mov dword [ebp - 0x238], 0x42b620
mov ecx, dword [ebp - 0x238]
mov dword [ebp - 0x23c], ecx
mov edx, dword [ebp - 0x234]
mov ax, word [edx]
mov word [ebp - 0x23e], ax
mov ecx, dword [ebp - 0x238]
mov dx, word [ebp - 0x23e]
mov word [ecx], dx
mov eax, dword [ebp - 0x234]
add eax, 2
mov dword [ebp - 0x234], eax
mov ecx, dword [ebp - 0x238]
add ecx, 2
mov dword [ebp - 0x238], ecx
cmp word [ebp - 0x23e], 0
jne 0x40db84
call fcn.00401a90
mov dword [0x428f30], eax
push 0x7d0
call dword [sym.imp.KERNEL32.dll_Sleep]
call fcn.0040ea00
test eax, eax
je 0x40dbf7
call fcn.00405d30
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov edx, dword [ebp + 0x14]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.0040de40
add esp, 8
test eax, eax
jne 0x40dc12
xor eax, eax
jmp 0x40dd84
xor ecx, ecx
mov word [ebp - 0x230], cx
push 0x206
push 0
lea edx, [ebp - 0x22e]
push edx
call fcn.00417ec0
add esp, 0xc
cmp dword [0x42b268], 0
jbe 0x40dc67
movzx eax, word [0x42b26c]
test eax, eax
jle 0x40dc67
push str.218.54.31.226
mov ecx, dword [0x42b268]
push ecx
call fcn.004019e0
add esp, 8
mov dx, word [0x42b26c]
mov word [0x428f2c], dx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
xor edx, edx
mov ecx, 0x3e8
div ecx
xor edx, edx
mov ecx, 0x3e8
div ecx
mov dword [ebp - 4], edx
mov edx, dword [ebp - 4]
push edx
push str.Temp7_X.exe
push 0x42ad58
call fcn.00406060
add esp, 0xc
call fcn.0040fb10
lea eax, [ebp - 0x230]
push eax
call fcn.00401000
add esp, 4
push 0x422298
push 0x104
lea ecx, [ebp - 0x230]
push ecx
call fcn.0041123d
add esp, 0xc
push 0x42ad58
push 0x104
lea edx, [ebp - 0x230]
push edx
call fcn.0041123d
add esp, 0xc
lea eax, [ebp - 0x230]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40dd15
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
push 1
push 0
push 0x42229c
lea ecx, [ebp - 0x230]
push ecx
push 0
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
push 0x1388
call dword [sym.imp.KERNEL32.dll_Sleep]
push 0
call fcn.004101a0
add esp, 4
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov ecx, dword [ebp - 0x28]
xor ecx, ebp
call fcn.004107a7
mov esp, ebp
pop ebp
ret 0x10
Function at 0x40e7d0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
cmp dword [ebp + 0xc], 0
je 0x40e7ea
mov eax, dword [ebp + 8]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
jmp 0x40e80f
push 0x104
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
push 0x422388
push 0x104
mov edx, dword [ebp + 8]
push edx
call fcn.0041123d
add esp, 0xc
pop ebp
ret

Function at 0x40e8f0
Capabilities:
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov dword [ebp - 4], 0
mov dword [ebp - 8], 0
push 0x4223e0
mov eax, dword [ebp + 8]
push eax
lea ecx, [ebp - 8]
push ecx
call fcn.00410a07
add esp, 0xc
test eax, eax
je 0x40e924
xor eax, eax
jmp 0x40e9f3
mov dword [ebp - 0x14], 0
push 2
push 0
mov edx, dword [ebp - 8]
push edx
call fcn.0041172f
add esp, 0xc
mov eax, dword [ebp - 8]
push eax
call fcn.0041193f
add esp, 4
mov dword [ebp - 0x14], eax
push 0
push 0
mov ecx, dword [ebp - 8]
push ecx
call fcn.0041172f
add esp, 0xc
mov edx, dword [ebp - 0x14]
add edx, dword [ebp + 0x10]
push edx
call fcn.00410d00
add esp, 4
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 8]
push eax
push 1
mov ecx, dword [ebp - 0x14]
push ecx
mov edx, dword [ebp - 0xc]
push edx
call fcn.00411bee
add esp, 0x10
mov eax, dword [ebp - 8]
push eax
call fcn.00410c8c
add esp, 4
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp - 0xc]
add edx, dword [ebp - 0x14]
push edx
call fcn.00401e70
add esp, 8
push 0x4223e8
mov eax, dword [ebp + 0xc]
push eax
lea ecx, [ebp - 8]
push ecx
call fcn.00410a07
add esp, 0xc
test eax, eax
je 0x40e9be
xor eax, eax
jmp 0x40e9f3
mov edx, dword [ebp - 0x14]
add edx, dword [ebp + 0x10]
mov dword [ebp - 0x10], edx
mov eax, dword [ebp - 8]
push eax
push 1
mov ecx, dword [ebp - 0x10]
push ecx
mov edx, dword [ebp - 0xc]
push edx
call fcn.00410ba5
add esp, 0x10
mov eax, dword [ebp - 8]
push eax
call fcn.00410c8c
add esp, 4
mov dword [ebp - 4], 1
mov eax, dword [ebp - 4]
mov esp, ebp
pop ebp
ret
Function at 0x410650
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
mov dword [ebp - 0x10], 0
mov dword [ebp - 4], 0
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], 0
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4106a8
mov edx, dword [ebp + 8]
push edx
call fcn.00401ba0
add esp, 4
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], edx
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0xc]
jne 0x4106a8
mov dword [ebp - 8], 1
mov dword [ebp - 4], 1
cmp dword [ebp - 8], 0
jne 0x410763
push 0x200000
call fcn.00410d00
add esp, 4
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], 0x200000
push str.1234
lea ecx, [ebp - 0x1c]
push ecx
mov edx, dword [ebp - 0x20]
push edx
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.004060b0
add esp, 0x14
test eax, eax
je 0x410757
mov dword [ebp - 0x24], 0
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
call fcn.00410847
add esp, 4
push 0xc8
push 0x32
call fcn.00401070
add esp, 8
mov dword [ebp - 0x24], eax
mov edx, dword [ebp - 0x24]
push edx
mov eax, dword [ebp - 0x20]
add eax, dword [ebp - 0x1c]
push eax
call fcn.00401e70
add esp, 8
mov ecx, dword [ebp - 0x1c]
add ecx, dword [ebp - 0x24]
mov dword [ebp - 0x1c], ecx
mov edx, dword [ebp - 0x1c]
push edx
mov eax, dword [ebp - 0x20]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00405b70
add esp, 0xc
cmp eax, 1
jne 0x410750
mov dword [ebp - 4], 1
jmp 0x410757
mov dword [ebp - 4], 0
mov edx, dword [ebp - 0x20]
push edx
call fcn.00410d94
add esp, 4
mov eax, dword [ebp - 4]
mov esp, ebp
pop ebp
ret

Function at 0x4107a7
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [0x428044]
jne 0x4107b1
repz ret
jmp fcn.004124d4
Function at 0x41a49e
Capabilities:
Link many functions at runtime

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x24
mov eax, dword [0x428044]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
push esi
push edi
mov dword [ebp - 0x1c], eax
call fcn.004127ff
and dword [ebp - 0x14], 0
cmp dword [0x42a5d8], 0
mov dword [ebp - 0x18], eax
jne 0x41a551
push str.USER32.DLL
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov ebx, eax
test ebx, ebx
je 0x41a5f9
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.MessageBoxW
push ebx
call edi
test eax, eax
je 0x41a5f9
mov esi, dword [sym.imp.KERNEL32.dll_EncodePointer]
push eax
call esi
push str.GetActiveWindow
push ebx
mov dword [0x42a5d8], eax
call edi
push eax
call esi
push str.GetLastActivePopup
push ebx
mov dword [0x42a5dc], eax
call edi
push eax
call esi
push str.GetUserObjectInformationW
push ebx
mov dword [0x42a5e0], eax
call edi
push eax
call esi
mov dword [0x42a5e8], eax
test eax, eax
je 0x41a551
push str.GetProcessWindowStation
push ebx
call edi
push eax
call esi
mov dword [0x42a5e4], eax
mov eax, dword [0x42a5e4]
mov ecx, dword [ebp - 0x18]
mov esi, dword [sym.imp.KERNEL32.dll_DecodePointer]
cmp eax, ecx
je 0x41a5aa
cmp dword [0x42a5e8], ecx
je 0x41a5aa
push eax
call esi
push dword [0x42a5e8]
mov edi, eax
call esi
mov ebx, eax
test edi, edi
je 0x41a5aa
test ebx, ebx
je 0x41a5aa
call edi
test eax, eax
je 0x41a5a1
lea ecx, [ebp - 0x24]
push ecx
push 0xc
lea ecx, [ebp - 0x10]
push ecx
push 1
push eax
call ebx
test eax, eax
je 0x41a5a1
test byte [ebp - 8], 1
jne 0x41a5aa
or dword [ebp + 0x10], 0x200000
jmp 0x41a5dd
mov eax, dword [0x42a5dc]
cmp eax, dword [ebp - 0x18]
je 0x41a5dd
push eax
call esi
test eax, eax
je 0x41a5dd
call eax
mov dword [ebp - 0x14], eax
test eax, eax
je 0x41a5dd
mov eax, dword [0x42a5e0]
cmp eax, dword [ebp - 0x18]
je 0x41a5dd
push eax
call esi
test eax, eax
je 0x41a5dd
push dword [ebp - 0x14]
call eax
mov dword [ebp - 0x14], eax
push dword [0x42a5d8]
call esi
test eax, eax
je 0x41a5f9
push dword [ebp + 0x10]
push dword [ebp - 0x1c]
push dword [ebp - 0x20]
push dword [ebp - 0x14]
call eax
jmp 0x41a5fb
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004107a7
leave
ret
Function at 0x402ec8
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
xor eax, eax
mov dword [ebp - 8], eax
xor eax, eax
push ebp
push 0x402f21
push dword fs:[eax]
mov dword fs:[eax], esp
xor ebx, ebx
call sub.kernel32.dll_GetCommandLineA
lea edx, [ebp - 8]
call fcn.00402d64
mov dword [ebp - 4], eax
lea edx, [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00402d64
mov dword [ebp - 4], eax
cmp dword [ebp - 8], 0
je 0x402f0b
inc ebx
jmp 0x402ef4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x402f28
lea eax, [ebp - 8]
call fcn.004046c8
ret

Function at 0x402f30
Capabilities:
Accept command line arguments

Disassembly:
push ebx
push esi
add esp, 0xfffffef4
mov ebx, edx
mov esi, eax
mov eax, ebx
call fcn.004046c8
test esi, esi
jne 0x402f67
push 0x105
lea eax, [esp + 8]
push eax
push 0
call sub.kernel32.dll_GetModuleFileNameA
mov ecx, eax
lea edx, [esp + 4]
mov eax, ebx
call fcn.004047b8
jmp 0x402f88
call sub.kernel32.dll_GetCommandLineA
mov dword [esp], eax
mov edx, ebx
mov eax, dword [esp]
call fcn.00402d64
mov dword [esp], eax
test esi, esi
je 0x402f88
cmp dword [ebx], 0
je 0x402f88
dec esi
jmp 0x402f6f
add esp, 0x10c
pop esi
pop ebx
ret

Function at 0x4036c4
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
movzx eax, word [0x4f3020]
mov dword [ebp - 8], eax
lea eax, [ebp - 4]
push eax
push 1
push 0
push 0x40375c
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
jne 0x40373c
xor eax, eax
push ebp
push 0x403735
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 0xc], 4
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 8]
push eax
push 0
push 0
push 0x403778
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegQueryValueExA
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40373c
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegCloseKey
ret
mov ax, word [0x4f3020]
and ax, 0xffc0
mov dx, word [ebp - 8]
and dx, 0x3f
or ax, dx
mov word [0x4f3020], ax
mov esp, ebp
pop ebp
ret

Function at 0x4044a0
Capabilities:
Write file on windows

Disassembly:
push ecx
cmp byte [0x4f604c], 0
je 0x404501
cmp word [0x4f6220], 0xd7b2
jne 0x4044c9
cmp dword [0x4f6228], 0
jbe 0x4044c9
mov eax, 0x4f621c
call dword [0x4f6238]
push 0
lea eax, [esp + 4]
push eax
push 0x1e
push 0x4f306c
push 0xfffffffffffffff5
call sub.kernel32.dll_GetStdHandle
push eax
call sub.kernel32.dll_WriteFile
push 0
lea eax, [esp + 4]
push eax
push 2
push 0x404528
push 0xfffffffffffffff5
call sub.kernel32.dll_GetStdHandle
push eax
call sub.kernel32.dll_WriteFile
pop edx
ret
cmp byte [0x4f3030], 0
jne 0x40451d
push 0
push 0x4f3064
push 0x4f306c
push 0
call sub.user32.dll_MessageBoxA
pop edx
ret
Function at 0x40467c
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
mov ebx, eax
mov eax, 8
call fcn.00402b04
mov dword [eax], edi
mov edx, dword [ebp + 0x10]
mov dword [eax + 4], edx
mov byte [0x4f604d], 1
mov edx, dword [ebp + 8]
push edx
mov edx, dword [ebp + 0xc]
push edx
push eax
mov eax, 0x404644
push eax
push esi
push ebx
call sub.kernel32.dll_CreateThread
pop edi
pop esi
pop ebx
pop ebp
ret 0xc