joyce8/EMBER2024-capa huggingface dataset:
Function at 0x40f712
Capabilities:
Link many functions at runtime

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
push esi
push edi
call fcn.0040b70e
and dword [ebp - 4], 0
cmp dword [0x419b9c], 0
mov ebx, eax
jne 0x40f7c3
push str.USER32.DLL
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
test edi, edi
je 0x40f874
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.MessageBoxA
push edi
call esi
test eax, eax
je 0x40f874
push eax
call fcn.0040b69c
mov dword [esp], str.GetActiveWindow
push edi
mov dword [0x419b9c], eax
call esi
push eax
call fcn.0040b69c
mov dword [esp], str.GetLastActivePopup
push edi
mov dword [0x419ba0], eax
call esi
push eax
call fcn.0040b69c
mov dword [esp], str.GetUserObjectInformationA
push edi
mov dword [0x419ba4], eax
call esi
push eax
call fcn.0040b69c
pop ecx
mov dword [0x419bac], eax
test eax, eax
je 0x40f7c3
push str.GetProcessWindowStation
push edi
call esi
push eax
call fcn.0040b69c
pop ecx
mov dword [0x419ba8], eax
mov eax, dword [0x419ba8]
cmp eax, ebx
je 0x40f81b
cmp dword [0x419bac], ebx
je 0x40f81b
push eax
call fcn.0040b717
push dword [0x419bac]
mov esi, eax
call fcn.0040b717
pop ecx
pop ecx
mov edi, eax
test esi, esi
je 0x40f81b
test edi, edi
je 0x40f81b
call esi
test eax, eax
je 0x40f812
lea ecx, [ebp - 8]
push ecx
push 0xc
lea ecx, [ebp - 0x14]
push ecx
push 1
push eax
call edi
test eax, eax
je 0x40f812
test byte [ebp - 0xc], 1
jne 0x40f81b
or dword [ebp + 0x10], 0x200000
jmp 0x40f854
mov eax, dword [0x419ba0]
cmp eax, ebx
je 0x40f854
push eax
call fcn.0040b717
pop ecx
test eax, eax
je 0x40f854
call eax
mov dword [ebp - 4], eax
test eax, eax
je 0x40f854
mov eax, dword [0x419ba4]
cmp eax, ebx
je 0x40f854
push eax
call fcn.0040b717
pop ecx
test eax, eax
je 0x40f854
push dword [ebp - 4]
call eax
mov dword [ebp - 4], eax
push dword [0x419b9c]
call fcn.0040b717
pop ecx
test eax, eax
je 0x40f874
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [ebp - 4]
call eax
jmp 0x40f876
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret

Function at 0x430002
Capabilities:
Encode data using xor
Packed with generic packer

Disassembly:
pushal
nop
nop
nop
call 0x43000c
nop
nop
nop
nop
pop eax
nop
add eax, 0x403d6f
nop
sub eax, 0x403d15
nop
nop
nop
mov ebx, dword [eax]
nop
nop
nop
nop
mov ecx, dword [eax + 4]
nop
nop
nop
nop
mov edx, dword [eax + 8]
nop
xor dword [ebx], edx
nop
nop
nop
add ebx, 4
nop
nop
nop
nop
nop
nop
cmp ebx, ecx
nop
nop
nop
nop
jl 0x430030
nop
nop
add eax, 0xc
nop
nop
nop
cmp dword [eax], 0
nop
nop
nop
jne 0x43001e
nop
nop
nop
nop
popal
nop
nop
nop
nop
jmp fcn.00401219
Function at 0x401770
Capabilities:
Parse pe header

Disassembly:
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
je 0x4017af
mov ecx, 0x5a4d
cmp word [eax], cx
jne 0x4017af
mov ecx, dword [eax + 0x3c]
add ecx, eax
cmp dword [ecx], 0x4550
jne 0x4017af
mov eax, 0x10b
cmp word [ecx + 0x18], ax
jne 0x4017af
cmp dword [ecx + 0x74], 0xe
jbe 0x4017af
cmp dword [ecx + 0xe8], 0
setne al
ret
xor al, al
ret
Function at 0x407305
Capabilities:
Query environment variable

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push ecx
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_GetEnvironmentStringsW]
mov esi, eax
test esi, esi
je 0x4073a2
push ebx
push esi
call fcn.004072ce
xor ebx, ebx
sub eax, esi
push ebx
push ebx
push ebx
push ebx
sar eax, 1
push eax
push esi
push ebx
push ebx
mov dword [ebp - 8], eax
call fcn.00407217
add esp, 0x24
mov dword [ebp - 4], eax
test eax, eax
jne 0x40734f
push esi
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsW]
xor eax, eax
jmp 0x4073a1
push edi
push eax
call fcn.00405452
mov edi, eax
pop ecx
push ebx
test edi, edi
jne 0x40736f
call fcn.00405e3f
pop ecx
push esi
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsW]
xor eax, eax
jmp 0x4073a0
push ebx
push dword [ebp - 4]
push edi
push dword [ebp - 8]
push esi
push ebx
push ebx
call fcn.00407217
add esp, 0x20
test eax, eax
jne 0x40738e
push edi
call fcn.00405e3f
jmp 0x407396
push ebx
call fcn.00405e3f
mov ebx, edi
pop ecx
push esi
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsW]
mov eax, ebx
pop edi
pop ebx
pop esi
leave
ret

Function at 0x40863a
Capabilities:
Allocate thread local storage

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push 0x40ff80
push 0x40ff78
push str.FlsAlloc
push 0x1e
call fcn.004084fb
mov esi, eax
add esp, 0x10
test esi, esi
je 0x40866e
push dword [ebp + 8]
mov ecx, esi
call dword [0x40e10c]
call esi
jmp 0x408674
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
pop esi
pop ebp
ret 4

Function at 0x4086b8
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push 0x40ff90
push 0x40ff88
push str.FlsGetValue
push 0x20
call fcn.004084fb
mov esi, eax
add esp, 0x10
test esi, esi
je 0x4086ef
push dword [ebp + 8]
mov ecx, esi
call dword [0x40e10c]
call esi
pop esi
pop ebp
ret 4
pop esi
pop ebp
jmp dword [sym.imp.KERNEL32.dll_TlsGetValue]
Function at 0x40db70
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
mov ecx, 0x5a4d
cmp word [eax], cx
jne 0x40db9d
mov ecx, dword [eax + 0x3c]
add ecx, eax
cmp dword [ecx], 0x4550
jne 0x40db9d
mov edx, 0x10b
xor eax, eax
cmp word [ecx + 0x18], dx
sete al
pop ebp
ret
xor eax, eax
pop ebp
ret
Function at 0x100010d0
Capabilities:
Set thread local storage value

Disassembly:
cmp dword [0x1000a3e0], 1
push esi
ja 0x1000708e
mov edx, dword [0x1000a3ec]
mov esi, dword [edx]
mov eax, dword [0x1000a010]
push esi
push eax
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov eax, esi
pop esi
ret
push 0x1000a3c8
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [0x1000a3e8]
mov ecx, dword [0x1000a3ec]
mov esi, dword [ecx + eax*4]
test esi, esi
jne 0x100070bb
push eax
call fcn.100059b0
add esp, 4
mov esi, eax
mov eax, dword [0x1000a3e8]
add eax, 1
xor edx, edx
div dword [0x1000a3e0]
push 0x1000a3c8
mov dword [0x1000a3e8], edx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x100010e6

Function at 0x10001560
Capabilities:
Get thread local storage value

Disassembly:
push esi
mov edx, eax
neg edx
lea esi, [eax + ecx - 1]
and esi, edx
cmp esi, ecx
jb 0x100076f3
cmp esi, 0x1000
jbe 0x10001592
cmp eax, 0x1000
ja 0x100076f7
cmp esi, 0xff000
ja 0x100076f7
mov eax, dword [0x1000a010]
push edi
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x10007761
cmp esi, 0x800
mov edi, eax
jbe 0x100015fa
push ebx
push ebp
lea ebx, [edi + 4]
add esi, 0xfff
push ebx
and esi, 0xfffff000
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0
push 1
push esi
push edi
call fcn.10002270
add esp, 0x10
test eax, eax
push ebx
je 0x1000776b
add dword [edi + 0x78], 1
mov ebp, eax
adc dword [edi + 0x7c], 0
add dword [edi + 0x70], esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, ebp
pop ebp
pop ebx
pop edi
pop esi
ret
push 0
push esi
call fcn.10001350
add esp, 8
pop edi
pop esi
ret
xor eax, eax
pop esi
ret
lea edx, [eax + 0xfff]
lea eax, [ecx + 0xfff]
and eax, 0xfffff000
cmp eax, ecx
jb 0x100076f3
and edx, 0xfffff000
lea ecx, [eax + edx]
cmp ecx, eax
jb 0x100076f3
cmp eax, edx
jb 0x10007725
add ecx, 0xfffff000
jmp 0x1000772c
lea ecx, [edx + edx - 0x1000]
cmp ecx, 0xff000
ja 0x10007747
push ecx
push eax
push edx
call fcn.100040d0
push eax
call fcn.10008025
add esp, 0x10
pop esi
ret
cmp edx, 0x100000
ja 0x10007755
pop esi
jmp fcn.10005480
push eax
push edx
call fcn.10007d91
add esp, 8
pop esi
ret
call fcn.100010d0
jmp 0x100015a7
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor ebp, ebp
jmp 0x100015f3
Function at 0x100040d0
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
mov eax, dword [0x1000a010]
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x100040e1
ret
jmp fcn.100010d0
Function at 0x10005efa
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [section..data]
jne 0x10005f04
repz ret
jmp fcn.1000625d

Function at 0x100080da
Capabilities:
Get thread local storage value

Disassembly:
mov ecx, dword [esp + 8]
test ecx, ecx
jne 0x100080e7
mov ecx, 1
mov eax, dword [esp + 4]
cmp eax, 4
jae 0x100080f5
mov eax, 4
jmp fcn.10001560
Function at 0x100010a3
Capabilities:
Set current directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov dword [ebp - 4], 0
mov dword [ebp - 8], 0
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x10], esp
push 0
xor eax, eax
call dword [0x115e1267]
nop
nop
cmp dword [ebp - 0x10], esp
je 0x100010ef
push 0
push 0x40100dc
push 6
call fcn.10002e1a
add esp, 0xc
mov dword [ebp - 4], 0
push 0
mov ebx, 0x104
call fcn.10003200
add esp, 4
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], esp
push dword [ebp - 0x10]
xor eax, eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
nop
nop
cmp dword [ebp - 0x14], esp
je 0x10001137
push 0x4b
push 0x40100dc
push 6
call fcn.10002e1a
add esp, 0xc
mov ebx, dword [ebp - 0x10]
test ebx, ebx
je 0x10001147
push ebx
call fcn.10002e14
add esp, 4
call fcn.100012eb
call fcn.100013d1
and eax, 1
xor eax, 1
test eax, eax
je 0x100012a4
push 1
push 0
call fcn.100016a3
mov eax, 0x10009260
test eax, eax
je 0x10001187
push eax
mov eax, dword [eax + 4]
add eax, 8
push eax
call fcn.10002e0e
pop ecx
pop esi
mov edi, eax
rep movsb byte es:[edi], byte [esi]
push eax
mov ebx, dword [0x115e125b]
test ebx, ebx
je 0x1000119b
push ebx
call fcn.10002e14
add esp, 4
pop eax
mov dword [0x115e125b], eax
mov eax, 0x11342ed3
test eax, eax
je 0x100011bd
push eax
mov eax, dword [eax + 4]
add eax, 8
push eax
call fcn.10002e0e
pop ecx
pop esi
mov edi, eax
rep movsb byte es:[edi], byte [esi]
push eax
mov ebx, dword [0x115e125f]
test ebx, ebx
je 0x100011d1
push ebx
call fcn.10002e14
add esp, 4
pop eax
mov dword [0x115e125f], eax
call fcn.10001723
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
push eax
mov ebx, dword [ebp - 8]
test ebx, ebx
je 0x100011f3
push ebx
call fcn.10002e14
add esp, 4
pop eax
mov dword [ebp - 8], eax
lea eax, [ebp - 8]
push eax
push 0x115e1263
mov eax, dword [esp]
mov eax, dword [eax]
mov eax, dword [eax]
call dword [eax + 8]
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
je 0x10001276
push 8
call fcn.10002e0e
add esp, 4
mov dword [ebp - 0x10], eax
mov edi, eax
mov esi, 0x1159858c
lodsd eax, dword [esi]
stosd dword es:[edi], eax
lodsd eax, dword [esi]
stosd dword es:[edi], eax
push 0
lea eax, [ebp - 0x10]
push eax
mov eax, 0x11598594
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x14]
push eax
push 0x115e1263
mov eax, dword [esp]
mov eax, dword [eax]
mov eax, dword [eax]
call dword [eax + 0x14]
mov ebx, dword [ebp - 0x14]
test ebx, ebx
je 0x10001263
push ebx
call fcn.10002e14
add esp, 4
mov ebx, dword [ebp - 0x10]
push ebx
call fcn.10002e14
add esp, 4
mov dword [ebp - 4], 1
mov dword [ebp - 0x10], esp
xor eax, eax
call dword [0x115e126b]
nop
nop
cmp dword [ebp - 0x10], esp
je 0x1000129f
push 0x23b
push 0x40100dc
push 6
call fcn.10002e1a
add esp, 0xc
call fcn.10002455
call fcn.10002490
mov dword [ebp - 0x10], esp
xor eax, eax
call dword [0x115e126b]
nop
nop
cmp dword [ebp - 0x10], esp
je 0x100012d2
push 0x289
push 0x40100dc
push 6
call fcn.10002e1a
add esp, 0xc
jmp 0x100012d7
mov ebx, dword [ebp - 8]
test ebx, ebx
je 0x100012e7
push ebx
call fcn.10002e14
add esp, 4
mov esp, ebp
pop ebp
ret
Function at 0x1000249f
Capabilities:
Check for trap flag exception

Disassembly:
push dword fs:[0]
mov dword fs:[0], esp
pushfd
or dword [esp], 0x100
popfd
clc
call fcn.100024c4

Function at 0x10003630
Capabilities:
Encode data using xor

Disassembly:
mov edx, dword [esp + 4]
mov eax, dword [esp + 8]
cmp edx, 1
jle 0x1000364e
push esi
lea ecx, [esp + 0x18]
dec edx
mov esi, dword [ecx]
add ecx, 0xc
xor eax, esi
dec edx
jne 0x10003643
pop esi
ret
Function at 0x404910
Capabilities:
Persist via run registry key
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5085c6
mov eax, dword fs:[0]
push eax
sub esp, 0x214
mov eax, dword [0x551758]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
test esi, esi
jne 0x40494c
xor eax, eax
jmp 0x4049b5
push 0x208
xor ebx, ebx
lea eax, [ebp - 0x218]
push ebx
push eax
call fcn.004dfe60
add esp, 0xc
call fcn.00405310
push 0x5138b0
test al, al
lea eax, [ebp - 0x218]
push esi
push eax
je 0x4049d1
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea ecx, [ebp - 0x21c]
call fcn.004067e0
push edi
push ebx
lea eax, [ebp - 0x218]
mov dword [ebp - 4], ebx
push eax
push str.ADBlockMasterTray
lea ecx, [ebp - 0x21c]
call fcn.00407cd0
lea ecx, [ebp - 0x21c]
mov ebx, eax
call fcn.004071f0
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0049e374
mov esp, ebp
pop ebp
ret
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea eax, [ebp - 0x220]
push eax
push 0x20006
push 0
push str.SoftwareMicrosoftWindowsCurrentVersionRun
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4049b3
mov dword [ebp - 4], 1
call fcn.00404ec0
mov ecx, eax
test ecx, ecx
je 0x404aee
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x21c], eax
mov dword [ebp - 4], 2
lea eax, [ebp - 0x218]
test edi, edi
je 0x404a46
push edi
push eax
lea eax, [ebp - 0x21c]
push 0x51395c
push eax
call fcn.00404dd0
add esp, 0x10
jmp 0x404a5b
push eax
lea eax, [ebp - 0x21c]
push str.__s_
push eax
call fcn.00404dd0
add esp, 0xc
mov esi, dword [ebp - 0x21c]
mov edi, dword [esi - 0xc]
add edi, edi
cmp dword [esi - 4], 1
jle 0x404a80
push dword [esi - 0xc]
lea ecx, [ebp - 0x21c]
call fcn.00404d40
mov esi, dword [ebp - 0x21c]
push edi
push esi
push 1
push 0
push str.ADBlockMasterTray
push dword [ebp - 0x220]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [esi - 8]
mov ebx, eax
push esi
call fcn.004e33f8
add esp, 8
test eax, eax
js 0x404ae4
cmp eax, dword [esi - 8]
jg 0x404ae4
mov dword [esi - 0xc], eax
xor ecx, ecx
mov word [esi + eax*2], cx
push dword [ebp - 0x220]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4049b3
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x4049b3
push 0x80070057
call fcn.00404b90
push 0x80004005
call fcn.00404b90
int3
Function at 0x404c50
Capabilities:
Delete registry value
Persist via run registry key

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5085f8
mov eax, dword fs:[0]
push eax
sub esp, 8
push esi
mov eax, dword [0x551758]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
test eax, eax
jne 0x404c8d
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
lea ecx, [ebp - 0x10]
mov dword [ebp - 0x10], 0
push ecx
push eax
call fcn.00404fa0
add esp, 8
test eax, eax
jne 0x404cba
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
xor esi, esi
call fcn.00405310
test al, al
je 0x404cfb
lea ecx, [ebp + 8]
call fcn.004067e0
push 1
push str.ADBlockMasterTray
lea ecx, [ebp + 8]
mov dword [ebp - 4], esi
call fcn.00408690
lea ecx, [ebp + 8]
mov esi, eax
call fcn.004071f0
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x14]
push eax
push 0x20006
push 0
push str.SoftwareMicrosoftWindowsCurrentVersionRun
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x404d2a
push str.ADBlockMasterTray
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueW]
mov esi, eax
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret
Function at 0x405850
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push esi
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x4058a9
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
test esi, esi
je 0x4058a9
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov ecx, dword [ebp + 0x10]
lea edx, [esi + eax]
and ecx, 0xf
jbe 0x40589a
cmp esi, edx
jae 0x4058a9
movzx eax, word [esi]
lea esi, [esi + eax*2]
add esi, 2
sub ecx, 1
jne 0x405888
cmp esi, edx
jae 0x4058a9
cmp word [esi], 0
je 0x4058a9
mov eax, esi
pop esi
pop ebp
ret
xor eax, eax
pop esi
pop ebp
ret
Function at 0x40ceb0
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x509038
mov eax, dword fs:[0]
push eax
push ecx
push esi
push edi
mov eax, dword [0x551758]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
push dword [esi]
push 1
push str.protect_days
push str.general
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov edi, eax
mov dword [ebp - 4], 0
call fcn.00404ec0
mov ecx, eax
test ecx, ecx
je 0x40cf65
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x10], eax
lea eax, [edi + 1]
mov dword [ebp - 4], 1
push eax
lea eax, [ebp - 0x10]
push 0x514398
push eax
call fcn.00404dd0
add esp, 0xc
push dword [esi]
mov esi, dword [ebp - 0x10]
push esi
push str.protect_days
push str.general
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x40cf54
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00404b90
int3
Function at 0x40e150
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x4010
call fcn.0049e3f0
mov eax, dword [0x551758]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, dword [ebp + 8]
lea eax, [ebp - 0x4004]
push edi
mov edi, dword [ebp + 0xc]
push 0x4000
push 0
push eax
call fcn.004dfe60
add esp, 0xc
mov dword [ebp - 0x4008], 0
test esi, esi
je 0x40e246
test edi, edi
je 0x40e246
lea eax, [ebp - 0x4008]
push eax
push esi
call sub.VERSION.dll_GetFileVersionInfoSizeW
test eax, eax
je 0x40e246
cmp eax, 0x3fff
ja 0x40e246
lea ecx, [ebp - 0x4004]
push ecx
push eax
push 0
push esi
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
je 0x40e246
lea eax, [ebp - 0x4010]
push eax
lea eax, [ebp - 0x400c]
push eax
push 0x513978
lea eax, [ebp - 0x4004]
push eax
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40e246
mov esi, dword [ebp + 0x10]
lea eax, [esi + esi]
push eax
push 0
push edi
call fcn.004dfe60
mov ecx, dword [ebp - 0x400c]
movzx eax, word [ecx + 0xc]
push eax
movzx eax, word [ecx + 0xe]
push eax
movzx eax, word [ecx + 8]
push eax
movzx eax, word [ecx + 0xa]
push eax
push str._d._d._d._d
lea eax, [esi - 1]
push eax
push edi
call fcn.0040def0
add esp, 0x28
mov eax, 1
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0049e374
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
xor ecx, ebp
pop esi
call fcn.0049e374
mov esp, ebp
pop ebp
ret

Function at 0x40e3d0
Capabilities:
Allocate or change rwx memory

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
test edi, edi
je 0x40e441
mov ebx, dword [ebp + 0xc]
test ebx, ebx
je 0x40e441
mov esi, dword [ebp + 0x10]
test esi, esi
je 0x40e441
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x40e441
mov dword [ebp + 8], eax
lea eax, [ebp + 8]
push eax
push 0x40
push esi
push edi
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
je 0x40e43b
push esi
push ebx
push edi
call fcn.004df360
add esp, 0xc
mov dword [ebp - 4], 0
lea eax, [ebp - 4]
push eax
push dword [ebp + 8]
push esi
push edi
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
je 0x40e43b
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
pop edi
pop esi
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x40ed20
Capabilities:
Check if file exists
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20c
mov eax, dword [0x551758]
xor eax, ebp
mov dword [ebp - 4], eax
push edi
mov edi, ecx
cmp dword [edi + 0x1c], 0
je 0x40ed52
mov eax, 1
pop edi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0049e374
mov esp, ebp
pop ebp
ret 4
push ebx
push esi
push 0x208
lea eax, [ebp - 0x20c]
push 0
push eax
call fcn.004dfe60
add esp, 0xc
lea eax, [ebp - 0x20c]
push 0x104
push eax
push 0x400000
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
lea eax, [ebp - 0x20c]
push eax
call ebx
mov esi, dword [ebp + 8]
test esi, esi
je 0x40eda5
lea eax, [ebp - 0x20c]
push eax
call ebx
sub esi, 1
jne 0x40ed97
push 0x5147c4
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x40ee62
mov dword [edi + 0x1c], 1
cmp dword [edi], 0
jne 0x40ee38
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [edi], eax
test eax, eax
je 0x40ee62
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.CurlInit
push eax
call esi
push str.CurlUninit
push dword [edi]
mov dword [edi + 4], eax
call esi
push str.zlib_uncompress
push dword [edi]
mov dword [edi + 8], eax
call esi
push str.zlib_compress
push dword [edi]
mov dword [edi + 0x10], eax
call esi
push str.zlib_compressBound
push dword [edi]
mov dword [edi + 0x14], eax
call esi
mov dword [edi + 0x18], eax
mov eax, dword [edi + 4]
test eax, eax
je 0x40ee38
call eax
mov dword [edi + 0xc], eax
cmp dword [edi + 8], 0
je 0x40ee62
cmp dword [edi + 4], 0
je 0x40ee62
cmp dword [edi + 0xc], 0
je 0x40ee62
pop esi
pop ebx
mov eax, 1
pop edi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0049e374
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [ebp - 4]
xor eax, eax
pop esi
pop ebx
xor ecx, ebp
pop edi
call fcn.0049e374
mov esp, ebp
pop ebp
ret 4