joyce8/EMBER2024-capa huggingface dataset:
Function at 0x10011462
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
and byte [ebp - 0x20], 0
push ebx
push esi
push edi
xor eax, eax
lea edi, [ebp - 0x1f]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov edi, dword [ebp + 0xc]
mov byte [ebp - 0x10], 0xf3
push edi
mov byte [ebp - 0xf], 0x84
mov byte [ebp - 0xe], 0x3e
mov byte [ebp - 0xd], 0xaa
mov byte [ebp - 0xc], 0x1d
mov byte [ebp - 0xb], 0xf
mov byte [ebp - 0xa], 0xb4
mov byte [ebp - 9], 0x50
mov byte [ebp - 8], 0xe0
mov byte [ebp - 7], 0x2f
mov byte [ebp - 6], 0x71
mov byte [ebp - 5], 0x39
mov byte [ebp - 4], 0x7d
mov byte [ebp - 3], 0x44
mov byte [ebp - 2], 0x6a
mov byte [ebp - 1], 0xa6
call fcn.100179e0
mov esi, eax
pop ecx
test esi, esi
je 0x100114e9
cmp esi, 0x10
jg 0x100114e9
mov eax, edi
xor ecx, ecx
mov dl, byte [eax]
inc eax
mov byte [ebp + ecx - 0x20], dl
cmp byte [eax], 0
jne 0x100114e1
mov eax, edi
inc ecx
cmp ecx, 0x10
jl 0x100114d3
jmp 0x1001150d
xor ecx, ecx
test esi, esi
jle 0x1001150d
cmp ecx, 0x80
je 0x1001150d
mov eax, ecx
push 0x10
cdq
pop ebx
idiv ebx
lea eax, [ebp + edx - 0x20]
mov dl, byte [ecx + edi]
xor byte [eax], dl
inc ecx
cmp ecx, esi
jl 0x100114ef
pop edi
pop esi
xor eax, eax
pop ebx
mov cl, byte [ebp + eax - 0x20]
mov edx, dword [ebp + 8]
xor cl, byte [ebp + eax - 0x10]
mov byte [eax + edx], cl
inc eax
cmp eax, 0x10
jl 0x10011512
leave
ret

Function at 0x10011f06
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov esi, ecx
xor edi, edi
cmp dword [esi + 8], edi
je 0x10011f58
mov eax, dword [ebp + 8]
cmp dword [eax - 8], edi
je 0x10011f58
push edi
push edi
push 2
push edi
push edi
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x10011f58
mov eax, dword [esi + 8]
lea ecx, [ebp - 4]
push edi
push ecx
push eax
mov dword [ebp - 4], eax
push dword [esi + 0x14]
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
push ebx
mov esi, eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x10011f5a
xor esi, esi
lea ecx, [ebp + 8]
call fcn.10001cd1
mov eax, esi
pop edi
pop esi
pop ebx
leave
ret 4
Function at 0x100137b4
Capabilities:
Delete file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc8
push ebx
mov ebx, dword [ebp + 0x1c]
push esi
push edi
push dword [ebx]
mov edi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
call edi
mov esi, dword [sym.imp.OLEAUT32.dll_SysReAllocString]
push 0x10026cd4
call esi
lea ecx, [ebp - 0xc8]
mov dword [ebx], eax
call fcn.100134fe
mov eax, dword [ebp + 0x28]
push dword [ebp - 0xac]
mov dword [ebp - 0x1c], eax
call edi
push dword [ebp + 0xc]
call esi
mov dword [ebp - 0xac], eax
lea eax, [ebp + 0x18]
push eax
lea ecx, [ebp - 0xa8]
call fcn.10003731
xor ebx, ebx
cmp dword [ebp + 0x14], ebx
jne 0x1001381b
mov dword [ebp + 0x14], ebx
jmp 0x1001384b
push dword [ebp + 0x14]
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [eax + eax + 2]
mov dword [ebp + 0x28], eax
add eax, 3
and al, 0xfc
call fcn.10016950
mov eax, esp
push ebx
push dword [ebp + 0x28]
push dword [ebp + 0x14]
push eax
call fcn.100036f5
cmp eax, ebx
mov dword [ebp + 0x14], eax
jne 0x1001384f
xor eax, eax
jmp 0x10013858
push dword [ebp + 0x14]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push dword [ebp + 0x14]
lea ecx, [ebp - 0xa4]
push eax
call fcn.1000438f
push dword [ebp - 0xa0]
call edi
push dword [ebp + 0x10]
call esi
mov dword [ebp - 0xa0], eax
mov eax, dword [ebp + 0x20]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp + 0x24]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp + 0x2c]
mov dword [ebp - 8], eax
lea eax, [ebp + 8]
push eax
lea ecx, [ebp - 0x9c]
call fcn.10003731
call dword [sym.imp.USER32.dll_GetActiveWindow]
mov dword [ebp + 0x14], eax
lea eax, [ebp - 0xc8]
push eax
lea eax, [ebp - 0xc0]
push eax
push 0x10026c18
call fcn.10003764
mov eax, dword [0x10026c20]
push ebx
push 0x10007cd3
push dword [ebp + 0x14]
push 0xca
push eax
call fcn.1000379e
cmp eax, 0xffffffff
mov dword [ebp + 0x28], eax
jne 0x100138ee
mov ecx, dword [ebp + 0x1c]
lea eax, [ebp - 0x14]
push eax
call fcn.10003731
mov esi, dword [ebp - 0x18]
jmp 0x1001395d
mov ecx, dword [ebp + 0x1c]
lea eax, [ebp - 0x40]
push eax
call fcn.10003731
cmp dword [ebp - 0x28], ebx
je 0x1001395a
cmp word [ebp - 0x38], 8
jne 0x1001395a
push dword [ebp - 0x30]
call esi
mov esi, eax
cmp esi, ebx
mov dword [ebp + 0x14], esi
je 0x10013955
push esi
call dword [sym.imp.OLEAUT32.dll_VariantInit]
test eax, eax
je 0x10013955
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [eax + eax + 2]
mov dword [ebp + 0x1c], eax
add eax, 3
and al, 0xfc
call fcn.10016950
mov esi, esp
push ebx
push ebx
push dword [ebp + 0x1c]
mov byte [esi], bl
push esi
push 0xffffffffffffffff
push dword [ebp + 0x14]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
push esi
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push dword [ebp + 0x14]
call edi
mov esi, dword [ebp + 0x28]
lea ecx, [ebp - 0xc8]
call fcn.10013758
push dword [ebp + 8]
call edi
push dword [ebp + 0x18]
call edi
lea esp, [ebp - 0xd4]
mov eax, esi
pop edi
pop esi
pop ebx
leave
ret
Function at 0x10014461
Capabilities:
Delete file
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x214
push ebx
push esi
push edi
mov edi, ecx
push ecx
lea esi, [edi + 0xa8]
mov ebx, esp
push dword [esi]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
push eax
push dword [esi]
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
mov dword [ebx], eax
push ecx
lea eax, [edi + 0x28]
mov ecx, esp
push eax
call fcn.1000436a
lea eax, [ebp - 0xc]
mov ecx, edi
push eax
call fcn.100145d2
lea eax, [ebp - 4]
xor ebx, ebx
push eax
push 0x1001d1c0
push ebx
push ebx
push ebx
mov dword [ebp - 4], ebx
push dword [ebp - 0xc]
call dword [sym.imp.OLEAUT32.dll_VarUI4FromI8]
test eax, eax
jne 0x1001459f
mov eax, dword [ebp - 4]
lea edx, [ebp - 8]
mov dword [ebp - 8], ebx
push edx
mov ecx, dword [eax]
push 0x1001d1a0
push eax
call dword [ecx]
test eax, eax
jl 0x10014592
mov ecx, 0x81
xor eax, eax
lea edi, [ebp - 0x213]
mov byte [ebp - 0x214], bl
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x214]
push eax
push 0x205
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea eax, [ebp - 0x214]
push str.AU3Title.bmp
push eax
call fcn.10017b70
pop ecx
lea eax, [ebp - 0x214]
pop ecx
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea eax, [ebp - 0x214]
test eax, eax
jne 0x10014535
xor edi, edi
jmp 0x1001456a
lea eax, [ebp - 0x214]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
inc esi
lea eax, [esi + esi]
add eax, 3
and al, 0xfc
call fcn.10016950
mov edi, esp
push esi
push edi
lea eax, [ebp - 0x214]
push 0xffffffffffffffff
push eax
push ebx
push ebx
mov word [edi], bx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push edi
push dword [ebp - 8]
call dword [sym.imp.OLEAUT32.dll_OleLoadPicturePath]
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x214]
push eax
call fcn.10001cfd
mov eax, dword [ebp - 8]
cmp eax, ebx
je 0x100145ac
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x100145ac
mov eax, dword [ebp - 8]
cmp eax, ebx
je 0x1001459f
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov ecx, dword [ebp + 8]
push 0x10026c00
call fcn.10001cfd
mov eax, dword [ebp - 4]
cmp eax, ebx
je 0x100145b9
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push dword [ebp - 0xc]
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebp + 8]
lea esp, [ebp - 0x220]
pop edi
pop esi
pop ebx
leave
ret 4
Function at 0x10015e94
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x118
push ebx
push esi
mov esi, 0x10026c00
push edi
mov eax, esi
mov dword [ebp - 0x14], ecx
test eax, eax
je 0x10015eb5
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [ebp + 0xc]
push esi
push eax
call fcn.1000438f
mov eax, esi
test eax, eax
je 0x10015ecc
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ebx, dword [ebp + 0x10]
push esi
push eax
mov ecx, ebx
call fcn.1000438f
mov eax, esi
test eax, eax
je 0x10015ee5
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [ebp + 0x14]
push esi
push eax
call fcn.1000438f
push str.CLSID_
lea ecx, [ebp - 4]
call fcn.10001cfd
mov eax, dword [ebp + 8]
lea ecx, [ebp - 4]
push eax
push dword [eax - 8]
call fcn.10002009
mov edi, str.InprocServer32
mov eax, edi
test eax, eax
je 0x10015f1d
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push edi
push eax
lea ecx, [ebp - 4]
call fcn.10002009
and byte [ebp - 0x118], 0
push 0x3f
pop ecx
xor eax, eax
lea edi, [ebp - 0x117]
and dword [ebp - 0xc], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp - 0xc]
mov dword [ebp - 0x18], 1
push eax
push 0x20019
push 0
mov dword [ebp - 0x10], 0x100
push dword [ebp - 4]
push SysReAllocStringLen
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
je 0x10015f74
xor esi, esi
jmp 0x1001607a
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x118]
push eax
lea eax, [ebp - 0x18]
push eax
push 0
push esi
push dword [ebp - 0xc]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x10015f6d
lea eax, [ebp - 0x118]
test eax, eax
je 0x10015faa
lea eax, [ebp - 0x118]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ecx, [ebp - 0x118]
push ecx
push eax
mov ecx, ebx
call fcn.1000438f
mov eax, dword [0x1001f030]
mov dword [ebp - 8], eax
lea eax, [ebp - 8]
push eax
push ecx
mov ecx, esp
push ebx
call fcn.10003f61
call fcn.1000119f
pop ecx
lea eax, [ebp - 8]
pop ecx
push eax
mov ecx, ebx
call fcn.10001d92
mov eax, dword [ebx]
push 0x5c
push eax
mov esi, dword [eax - 8]
call fcn.100168a7
pop ecx
test eax, eax
pop ecx
jne 0x10015ff8
or eax, 0xffffffff
jmp 0x10015ffa
sub eax, dword [ebx]
sub esi, eax
lea eax, [ebp + 0x10]
dec esi
mov ecx, ebx
push esi
push eax
call fcn.100021f7
mov ecx, dword [ebp + 0x14]
push eax
call fcn.10001d92
lea ecx, [ebp + 0x10]
call fcn.10001cd1
mov eax, dword [ebx]
push 0x5c
push eax
call fcn.100168a7
pop ecx
test eax, eax
pop ecx
jne 0x1001602f
or eax, 0xffffffff
jmp 0x10016031
sub eax, dword [ebx]
push eax
lea eax, [ebp + 0x14]
push eax
mov ecx, ebx
call fcn.10002285
push eax
mov ecx, ebx
call fcn.10001d92
lea ecx, [ebp + 0x14]
call fcn.10001cd1
push dword [ebp + 0xc]
lea eax, [ebp - 0x118]
push ecx
mov ecx, esp
push eax
call fcn.10001cfd
mov ecx, dword [ebp - 0x14]
call fcn.10016093
test eax, eax
je 0x10016070
push 1
pop esi
jmp 0x10016072
xor esi, esi
lea ecx, [ebp - 8]
call fcn.10001cd1
lea ecx, [ebp - 4]
call fcn.10001cd1
lea ecx, [ebp + 8]
call fcn.10001cd1
mov eax, esi
pop edi
pop esi
pop ebx
leave
ret 0x10
Function at 0x10016093
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
mov esi, 0x10026c00
push edi
mov eax, esi
xor edi, edi
test eax, eax
je 0x100160b0
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [ebp + 0xc]
push esi
push eax
call fcn.1000438f
push 0x10026cd4
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0xc], edi
mov dword [ebp - 8], edi
mov dword [ebp - 4], edi
mov eax, dword [eax - 8]
lea ecx, [ebp - 0xc]
push ecx
push eax
lea ecx, [ebp + 8]
call fcn.10002617
push eax
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov esi, eax
push esi
call dword [sym.imp.ole32.dll_CoTaskMemAlloc]
mov ebx, eax
cmp ebx, edi
je 0x10016177
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov eax, dword [eax - 8]
lea ecx, [ebp + 8]
push eax
call fcn.10002617
push eax
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
push 0xffffffffffffffff
lea ecx, [ebp + 8]
jne 0x10016121
call fcn.100020d7
jmp 0x10016170
call fcn.100020d7
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 8]
push eax
push 0x1001f04c
push ebx
call sub.VERSION.dll_VerQueryValueA
test eax, eax
je 0x10016170
cmp dword [ebp - 4], edi
je 0x10016170
mov eax, dword [ebp - 8]
movzx ecx, word [eax + 0xc]
push ecx
mov ecx, dword [eax + 0xc]
shr ecx, 0x10
push ecx
movzx ecx, word [eax + 8]
mov eax, dword [eax + 8]
push ecx
shr eax, 0x10
push eax
push str._d__d__d__d
push dword [ebp + 0xc]
call fcn.10002307
add esp, 0x18
push 1
pop edi
push ebx
call dword [sym.imp.ole32.dll_CoTaskMemFree]
push dword [ebp - 0x10]
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
lea ecx, [ebp + 8]
call fcn.10001cd1
mov eax, edi
pop edi
pop esi
pop ebx
leave
ret 8
Function at 0x4010fc
Capabilities:
Query environment variable

Disassembly:
enter 0x28, 0
lea eax, [0x403138]
sub edx, ebx
push eax
call sub.KERNEL32.dll_GetEnvironmentStringsA
pop eax
push eax
push dword [eax + 0x34]
push dword [eax + 0x20]
call fcn.004018f4
pop eax
push eax
call sub.KERNEL32.dll_GetCurrentThread
pop eax
add esp, 0x28
pop ebp
ret 0x10

Function at 0x401754
Capabilities:
Query environment variable

Disassembly:
enter 0x58, 0
mov ebx, 0x403184
and dword [ebx - 0x130], edi
call sub.KERNEL32.dll_GetEnvironmentStringsA
push ebx
push edi
push dword [ebx + 0x64]
call fcn.00401a24
pop ebx
call sub.KERNEL32.dll_GetEnvironmentStringsA
add esp, 0x58
pop ebp
ret 0x10

Function at 0x401830
Capabilities:
Query environment variable

Disassembly:
enter 0x48, 0
lea ebx, [eax - 0x1c4]
sbb esi, dword [ebx + 0x40]
call sub.KERNEL32.dll_GetCurrentProcessId
push ebx
push dword [ebx + 0x6c]
push dword [ebx + 0x188]
call fcn.00401330
pop ebx
call sub.KERNEL32.dll_GetEnvironmentStringsA
add esp, 0x48
pop ebp
ret 0x10

Function at 0x401958
Capabilities:
Query environment variable

Disassembly:
enter 0x28, 0
mov ecx, 0x403134
sbb esi, dword [ebp - 0xc]
push ecx
call sub.KERNEL32.dll_GetEnvironmentStringsA
pop ecx
push ecx
push edx
push dword [ecx + 0xd8]
call fcn.00401654
pop ecx
push ecx
mov edi, 0
push edi
call sub.USER32.dll_SetForegroundWindow
pop ecx
add esp, 0x28
pop ebp
ret 0x10
Function at 0x4035ac
Capabilities:
Generate random numbers using the delphi lcg

Disassembly:
push ebx
xor ebx, ebx
imul edx, dword [ebx + 0x5fd008], 0x8088405
inc edx
mov dword [ebx + 0x5fd008], edx
mul edx
mov eax, edx
pop ebx
ret

Function at 0x41cf44
Capabilities:
Decompress data using aplib

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push ebp
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
cld
mov dl, 0x80
mov al, byte [esi]
add esi, 1
mov byte [edi], al
add edi, 1
mov ebx, 2
add dl, dl
jne 0x41cf75
mov dl, byte [esi]
inc esi
adc dl, dl
jae 0x41cf5d
add dl, dl
jne 0x41cf80
mov dl, byte [esi]
inc esi
adc dl, dl
jae 0x41cfd1
xor eax, eax
add dl, dl
jne 0x41cf8d
mov dl, byte [esi]
inc esi
adc dl, dl
jae 0x41d06e
add dl, dl
jne 0x41cf9c
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x41cfa7
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x41cfb2
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x41cfbd
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
je 0x41cfc7
mov ebx, edi
sub ebx, eax
mov al, byte [ebx]
mov byte [edi], al
inc edi
mov ebx, 2
jmp 0x41cf6c
mov eax, 1
add dl, dl
jne 0x41cfdf
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x41cfea
mov dl, byte [esi]
inc esi
adc dl, dl
jb 0x41cfd6
sub eax, ebx
mov ebx, 1
jne 0x41d01d
mov ecx, 1
add dl, dl
jne 0x41d003
mov dl, byte [esi]
inc esi
adc dl, dl
adc ecx, ecx
add dl, dl
jne 0x41d00e
mov dl, byte [esi]
inc esi
adc dl, dl
jb 0x41cffa
push esi
mov esi, edi
sub esi, ebp
rep movsb byte es:[edi], byte [esi]
pop esi
jmp 0x41cf6c
dec eax
shl eax, 8
mov al, byte [esi]
inc esi
mov ebp, eax
mov ecx, 1
add dl, dl
jne 0x41d034
mov dl, byte [esi]
inc esi
adc dl, dl
adc ecx, ecx
add dl, dl
jne 0x41d03f
mov dl, byte [esi]
inc esi
adc dl, dl
jb 0x41d02b
cmp eax, 0x7d00
sbb ecx, 0xffffffff
cmp eax, 0x500
sbb ecx, 0xffffffff
cmp eax, 0x80
adc ecx, 0
cmp eax, 0x80
adc ecx, 0
push esi
mov esi, edi
sub esi, eax
rep movsb byte es:[edi], byte [esi]
pop esi
jmp 0x41cf6c
mov al, byte [esi]
inc esi
xor ecx, ecx
shr al, 1
je 0x41d08f
adc ecx, 2
mov ebp, eax
push esi
mov esi, edi
sub esi, eax
rep movsb byte es:[edi], byte [esi]
pop esi
mov ebx, 1
jmp 0x41cf6c
pop ebp
sub edi, dword [ebp - 8]
mov dword [ebp - 0xc], edi
pop edi
pop esi
pop ebx
mov eax, dword [ebp - 0xc]
mov esp, ebp
pop ebp
ret
Function at 0x41f0a0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
push esi
push edi
mov dword [ebp - 4], ecx
mov ebx, edx
xor edx, edx
push ebp
push 0x5e158e
push dword fs:[edx]
mov dword fs:[edx], esp
xor edx, edx
mov dword [ebp - 8], edx
mov esi, ebx
xor ecx, ecx
cmp byte [eax + 0x6a], 0
je 0x41f0ef
mov eax, ebx
xor edx, edx
push edx
push eax
mov eax, dword [esi + 0x3c]
cdq
add eax, dword [esp]
adc edx, dword [esp + 4]
add esp, 8
mov edx, dword [eax + 0x88]
test edx, edx
je 0x41f10e
mov ecx, edx
add ecx, ebx
jmp 0x41f10e
mov eax, ebx
xor edx, edx
push edx
push eax
mov eax, dword [esi + 0x3c]
cdq
add eax, dword [esp]
adc edx, dword [esp + 4]
add esp, 8
mov edx, dword [eax + 0x78]
test edx, edx
je 0x41f10e
mov ecx, edx
add ecx, ebx
test ecx, ecx
je 0x41f180
mov esi, dword [ecx + 0x18]
mov eax, dword [ecx + 0x1c]
add eax, ebx
mov dword [ebp - 0x10], eax
mov edi, dword [ecx + 0x20]
add edi, ebx
mov eax, dword [ecx + 0x24]
add eax, ebx
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
cmp eax, 0xffff
jbe 0x41f169
test esi, esi
jbe 0x41f180
mov eax, dword [edi]
add eax, ebx
mov edx, dword [ebp - 4]
call fcn.004088ec
test eax, eax
jne 0x41f15b
mov eax, dword [ebp - 0xc]
movzx eax, word [eax]
shl eax, 2
add eax, dword [ebp - 0x10]
mov eax, dword [eax]
mov dword [ebp - 8], eax
jmp 0x41f180
add dword [ebp - 0xc], 2
add edi, 4
dec esi
test esi, esi
ja 0x41f138
jmp 0x41f180
mov edx, eax
sub edx, dword [ecx + 0x10]
cmp edx, dword [ecx + 0x14]
jae 0x41f180
mov eax, edx
shl eax, 2
add eax, dword [ebp - 0x10]
mov eax, dword [eax]
mov dword [ebp - 8], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5e1595
ret
Function at 0x4202d8
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x10], ebx
mov word [ebp - 4], cx
mov byte [ebp - 1], dl
xor eax, eax
push ebp
push 0x5e28f3
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp + 8]
call fcn.00404cd0
xor ebx, ebx
mov eax, ebx
and eax, 0x80000001
jns 0x420313
dec eax
or eax, 0xfffffffe
inc eax
test eax, eax
jne 0x42032c
lea eax, [ebp - 0x10]
mov edx, dword [0x5ff54c]
mov edx, dword [edx]
mov edx, dword [edx + 0xc]
call fcn.00404d30
jmp 0x42033f
lea eax, [ebp - 0x10]
mov edx, dword [0x5ff54c]
mov edx, dword [edx]
mov edx, dword [edx + 0x10]
call fcn.00404d30
lea eax, [ebp - 0x10]
mov edx, ebx
sar edx, 1
jns 0x42034b
adc edx, 0
mov edx, dword [edx*4 + 0x5fe378]
call fcn.00404f20
push 0
push 0x80
push 3
push 0
push 1
push 0x80000000
mov eax, dword [ebp - 0x10]
call fcn.00404f04
push eax
call fcn.00406b1c
mov esi, eax
cmp esi, 0xffffffff
je 0x4204c5
mov eax, 0x40
call fcn.00403268
mov edi, eax
push 0
lea eax, [ebp - 8]
push eax
push 0x40
push edi
push esi
call fcn.00406d7c
test eax, eax
je 0x4204b8
mov eax, edi
cmp word [eax], 0x5a4d
jne 0x4204b8
push 0
push 0
mov eax, dword [eax + 0x3c]
push eax
push esi
call fcn.00406ddc
mov eax, edi
call fcn.00403288
mov eax, 0x18
call fcn.00403268
mov edi, eax
push 0
lea eax, [ebp - 8]
push eax
push 0x18
push edi
push esi
call fcn.00406d7c
test eax, eax
je 0x4204b8
mov eax, edi
cmp dword [eax], 0x4550
jne 0x4204b8
add eax, 4
mov dword [ebp - 0xc], eax
cmp byte [ebp - 1], 0
je 0x420456
mov eax, dword [ebp - 0xc]
cmp word [eax], 0x8664
jne 0x420456
mov eax, edi
call fcn.00403288
mov eax, 0xf0
call fcn.00403268
mov edi, eax
push 0
lea eax, [ebp - 8]
push eax
push 0xf0
push edi
push esi
call fcn.00406d7c
test eax, eax
je 0x420456
mov eax, edi
mov dx, word [eax + 0x44]
cmp dx, word [ebp - 4]
jne 0x420456
mov eax, dword [eax + 0x10]
mov edx, dword [ebp + 0xc]
mov dword [edx], eax
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x10]
call fcn.00404d0c
cmp byte [ebp - 1], 0
jne 0x4204b8
mov eax, dword [ebp - 0xc]
cmp word [eax], 0x14c
jb 0x4204b8
mov eax, dword [ebp - 0xc]
cmp word [eax], 0x150
ja 0x4204b8
mov eax, edi
call fcn.00403288
mov eax, 0xe0
call fcn.00403268
mov edi, eax
push 0
lea eax, [ebp - 8]
push eax
push 0xe0
push edi
push esi
call fcn.00406d7c
test eax, eax
je 0x4204b8
mov eax, edi
mov dx, word [eax + 0x44]
cmp dx, word [ebp - 4]
jne 0x4204b8
mov eax, dword [eax + 0x10]
mov edx, dword [ebp + 0xc]
mov dword [edx], eax
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x10]
call fcn.00404d0c
mov eax, edi
call fcn.00403288
push esi
call fcn.00406ad4
mov eax, dword [ebp + 8]
mov eax, dword [eax]
xor edx, edx
call fcn.0040502c
jne 0x4204dd
inc ebx
cmp ebx, 0x19
jne 0x420305
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5e28fa
lea eax, [ebp - 0x10]
call fcn.00404cd0
ret
Function at 0x403468
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
movzx eax, word [0x44e00c]
mov dword [ebp - 8], eax
lea eax, [ebp - 4]
push eax
push 1
push 0
push 0x403500
push 0x80000002
call sub.ADVAPI32.DLL_RegOpenKeyExA
test eax, eax
jne 0x4034e0
xor eax, eax
push ebp
push 0x4034d9
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 0x40351c
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 0x4034e0
mov eax, dword [ebp - 4]
push eax
call sub.ADVAPI32.DLL_RegCloseKey
ret
mov ax, word [0x44e00c]
and ax, 0xffc0
mov dx, word [ebp - 8]
and dx, 0x3f
or ax, dx
mov word [0x44e00c], ax
mov esp, ebp
pop ebp
ret

Function at 0x4041c8
Capabilities:
Write file on windows

Disassembly:
push ecx
cmp byte [0x455044], 0
je 0x404229
cmp word [0x455218], 0xd7b2
jne 0x4041f1
cmp dword [0x455220], 0
jbe 0x4041f1
mov eax, 0x455214
call dword [0x455230]
push 0
lea eax, [esp + 4]
push eax
push 0x1e
push 0x44e054
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 0x404250
push 0xfffffffffffffff5
call sub.KERNEL32.DLL_GetStdHandle
push eax
call sub.KERNEL32.DLL_WriteFile
pop edx
ret
cmp byte [0x44e01c], 0
jne 0x404245
push 0
push 0x44e074
push 0x44e054
push 0
call sub.USER32.DLL_MessageBoxA
pop edx
ret