joyce8/EMBER2024-capa huggingface dataset:
Function at 0x404760
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x410
push ebx
push esi
push edi
mov esi, ecx
call dword [0x40f040]
xor ebx, ebx
cmp dword [ebp + 8], ebx
mov edi, eax
mov dword [ebp - 4], ebx
mov dword [ebp - 8], esi
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x410], ebx
je 0x4047d5
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea esi, [eax + eax + 2]
cmp esi, 0x400
jg 0x4047bd
push esi
call fcn.00401b8d
test al, al
pop ecx
je 0x4047bd
mov eax, esi
add eax, 3
and eax, 0xfffffffc
call fcn.00406060
mov eax, esp
jmp 0x4047c6
push esi
lea ecx, [ebp - 4]
call fcn.00402a4f
push edi
push esi
push dword [ebp + 8]
push eax
call fcn.00401c1d
cmp eax, ebx
jne 0x4047f8
lea eax, [ebp - 0x40c]
cmp dword [ebp - 0x410], eax
je 0x4047ee
lea ecx, [ebp - 0x410]
call fcn.00402567
mov esi, 0x8007000e
jmp 0x4048b3
push 2
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
mov edi, eax
cmp edi, ebx
jne 0x404814
call fcn.00401c92
mov esi, eax
jmp 0x40489a
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push edi
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
cmp esi, ebx
je 0x404836
push esi
push edi
call dword [sym.imp.KERNEL32.dll_LoadResource]
cmp eax, ebx
mov dword [ebp + 8], eax
jne 0x40483d
call fcn.00401c92
jmp 0x404891
push esi
push edi
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov esi, eax
lea eax, [esi + 1]
push eax
lea ecx, [ebp - 0x410]
call fcn.00402abd
cmp dword [ebp - 0x410], ebx
jne 0x404865
mov esi, 0x8007000e
jmp 0x404893
push esi
push dword [ebp + 8]
push dword [ebp - 0x410]
call fcn.00405940
mov eax, dword [ebp - 0x410]
add esp, 0xc
push dword [ebp + 0x14]
mov byte [esi + eax], bl
push dword [ebp - 0x410]
lea ecx, [ebp - 0xc]
call fcn.004041b1
mov esi, eax
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [ebp - 0x40c]
cmp dword [ebp - 0x410], eax
je 0x4048b3
lea ecx, [ebp - 0x410]
call fcn.00402567
lea ecx, [ebp - 4]
call fcn.0040249e
mov eax, esi
lea esp, [ebp - 0x41c]
pop edi
pop esi
pop ebx
leave
ret 0x10
Function at 0x405235
Capabilities:
Accept command line arguments

Disassembly:
push ecx
push ecx
push ebx
push ebp
push esi
push edi
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
xor ebp, ebp
push ebp
mov dword [esp + 0x28], eax
call dword [sym.imp.ole32.dll_CoInitialize]
xor ebx, ebx
xor edi, edi
inc ebx
xor esi, esi
call fcn.004023f1
test al, al
je 0x405278
call fcn.0040af10
mov esi, eax
cmp esi, ebp
je 0x405278
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov edi, eax
cmp edi, ebp
je 0x405278
xor ebx, ebx
push ebp
push ebp
push ebp
push 3
push ebx
push ebp
push ebp
push 0xffffffffffffffff
push edi
call dword [sym.imp.ole32.dll_CoInitializeSecurity]
cmp esi, ebp
je 0x405295
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax]
push 0x40c474
push dword [esp + 0x20]
mov ecx, 0x4103c8
push 0x40f078
call fcn.0040222f
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [0x4103f8], eax
mov esi, 0x40c8f0
lea edi, [esp + 0x10]
lea eax, [esp + 0x10]
movsw word es:[edi], word [esi]
push eax
push dword [esp + 0x28]
movsb byte es:[edi], byte [esi]
mov dword [esp + 0x1c], ebp
call fcn.004023b0
mov esi, eax
cmp esi, ebp
pop ecx
pop ecx
je 0x405359
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ebp, str.startup
mov ebx, str.shutdown
push str.unregserver
call edi
push eax
push str.unregserver
push esi
call fcn.0040628c
add esp, 0xc
test eax, eax
je 0x40537b
push str.regserver
call edi
push eax
push str.regserver
push esi
call fcn.0040628c
add esp, 0xc
test eax, eax
je 0x405387
push ebp
call edi
push eax
push ebp
push esi
call fcn.0040628c
add esp, 0xc
test eax, eax
je 0x40535e
push ebx
call edi
push eax
push ebx
push esi
call fcn.0040628c
add esp, 0xc
test eax, eax
je 0x40535e
lea eax, [esp + 0x10]
push eax
push esi
call fcn.004023b0
mov esi, eax
test esi, esi
pop ecx
pop ecx
jne 0x4052ee
call fcn.00402a1e
mov ecx, 0x4103c8
call fcn.00402883
call dword [sym.imp.ole32.dll_CoUninitialize]
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
pop ecx
pop ecx
ret 0x10
push esi
push dword [esp + 0x20]
call fcn.00405203
jmp 0x405391
push esi
push dword [esp + 0x20]
call fcn.004051d1
pop ecx
pop ecx
mov dword [esp + 0x14], eax
jmp 0x40535e
Function at 0x405399
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
push esi
push edi
lea eax, [ebp - 0xc]
push eax
push dword [ebp + 8]
xor edi, edi
mov dword [ebp - 0xc], edi
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov esi, eax
cmp esi, edi
je 0x40541b
push ebx
push esi
call fcn.00406287
mov ebx, eax
cmp ebx, edi
pop ecx
je 0x40541a
push ebx
push esi
push edi
push dword [ebp + 8]
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
je 0x405413
push 0x12
pop ecx
mov dword [ebp - 4], edi
mov dword [ebp - 8], edi
mov esi, str.StringFileInfo040904b0ProductName
lea edi, [ebp - 0x58]
rep movsd dword es:[edi], dword [esi]
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x58]
push eax
push ebx
movsw word es:[edi], word [esi]
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x405413
cmp dword [ebp - 4], 0
je 0x405413
push dword [ebp - 8]
push dword [ebp + 0xc]
call fcn.00406335
pop ecx
pop ecx
push ebx
call fcn.00405cee
pop ecx
pop ebx
pop edi
pop esi
leave
ret

Function at 0x405f71
Capabilities:
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4c
push ebx
push esi
push edi
push 4
pop eax
call fcn.00406060
mov esi, esp
push 0x1c
lea eax, [ebp - 0x28]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
test eax, eax
je 0x40600c
mov ebx, dword [ebp - 0x24]
lea eax, [ebp - 0x4c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov ecx, dword [ebp - 0x48]
mov eax, dword [0x41058c]
lea edi, [ecx - 1]
not edi
and edi, esi
sub edi, ecx
mov esi, eax
dec esi
neg esi
sbb esi, esi
and esi, 0xfffffff1
add esi, 0x11
imul esi, ecx
add esi, ebx
cmp edi, esi
mov dword [ebp - 8], ecx
jb 0x40600c
cmp eax, 1
je 0x40602d
mov dword [ebp - 4], ebx
mov ebx, 0x1000
push 0x1c
lea eax, [ebp - 0x28]
push eax
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
test eax, eax
je 0x40600c
mov eax, dword [ebp - 0x1c]
add dword [ebp - 4], eax
test dword [ebp - 0x18], ebx
je 0x405fd9
test byte [ebp - 0x13], 1
mov eax, dword [ebp - 0x28]
mov dword [ebp - 4], eax
je 0x406008
xor eax, eax
inc eax
jmp 0x40604c
cmp edi, eax
jae 0x406010
xor eax, eax
jmp 0x40604c
cmp eax, esi
jae 0x406017
mov dword [ebp - 4], esi
push 4
push ebx
push dword [ebp - 8]
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov eax, dword [0x41058c]
jmp 0x406030
mov dword [ebp - 4], edi
dec eax
neg eax
sbb eax, eax
and eax, 0x103
lea ecx, [ebp - 0xc]
push ecx
inc eax
push eax
push dword [ebp - 8]
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
lea esp, [ebp - 0x58]
pop edi
pop esi
pop ebx
leave
ret
Function at 0x4063b0
Capabilities:
Accept command line arguments
Parse pe header
Terminate process

Disassembly:
push 0x60
push 0x40ca30
call fcn.004058d0
mov edi, 0x94
mov eax, edi
call fcn.00406060
mov dword [ebp - 0x18], esp
mov esi, esp
mov dword [esi], edi
push esi
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov ecx, dword [esi + 0x10]
mov dword [0x41058c], ecx
mov eax, dword [esi + 4]
mov dword [0x410598], eax
mov edx, dword [esi + 8]
mov dword [0x41059c], edx
mov esi, dword [esi + 0xc]
and esi, 0x7fff
mov dword [0x410590], esi
cmp ecx, 2
je 0x406410
or esi, 0x8000
mov dword [0x410590], esi
shl eax, 8
add eax, edx
mov dword [0x410594], eax
xor esi, esi
push esi
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call edi
cmp word [eax], 0x5a4d
jne 0x40644b
mov ecx, dword [eax + 0x3c]
add ecx, eax
cmp dword [ecx], 0x4550
jne 0x40644b
movzx eax, word [ecx + 0x18]
cmp eax, 0x10b
je 0x406463
cmp eax, 0x20b
je 0x406450
mov dword [ebp - 0x1c], esi
jmp 0x406477
cmp dword [ecx + 0x84], 0xe
jbe 0x40644b
xor eax, eax
cmp dword [ecx + 0xf8], esi
jmp 0x406471
cmp dword [ecx + 0x74], 0xe
jbe 0x40644b
xor eax, eax
cmp dword [ecx + 0xe8], esi
setne al
mov dword [ebp - 0x1c], eax
push 1
call fcn.004066ab
pop ecx
test eax, eax
jne 0x40648b
push 0x1c
call fcn.0040638c
pop ecx
call fcn.00407adb
test eax, eax
jne 0x40649c
push 0x10
call fcn.0040638c
pop ecx
call fcn.00408530
mov dword [ebp - 4], esi
call fcn.00408332
test eax, eax
jge 0x4064b5
push 0x1b
call fcn.00406367
pop ecx
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov dword [0x410cb8], eax
call fcn.00408210
mov dword [0x41042c], eax
call fcn.0040816e
test eax, eax
jge 0x4064db
push 8
call fcn.00406367
pop ecx
call fcn.00407f3b
test eax, eax
jge 0x4064ec
push 9
call fcn.00406367
pop ecx
push 1
call fcn.004073fd
pop ecx
mov dword [ebp - 0x28], eax
cmp eax, esi
je 0x406502
push eax
call fcn.00406367
pop ecx
mov dword [ebp - 0x44], esi
lea eax, [ebp - 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_GetStartupInfoA]
call fcn.00407ede
mov dword [ebp - 0x20], eax
test byte [ebp - 0x44], 1
je 0x406523
movzx eax, word [ebp - 0x40]
jmp 0x406526
push 0xa
pop eax
push eax
push dword [ebp - 0x20]
push esi
push esi
call edi
push eax
call fcn.00405235
mov edi, eax
mov dword [ebp - 0x2c], edi
cmp dword [ebp - 0x1c], esi
jne 0x406544
push edi
call fcn.0040752a
call fcn.0040754c
jmp 0x406576
or dword [ebp - 4], 0xffffffff
mov eax, edi
lea esp, [ebp - 0x7c]
call fcn.0040590b
ret
Function at 0x407467
Capabilities:
Terminate process

Disassembly:
push 8
push 0x40ca68
call fcn.004058d0
push 8
call fcn.0040684f
pop ecx
xor edi, edi
mov dword [ebp - 4], edi
xor esi, esi
inc esi
cmp dword [0x4105cc], esi
jne 0x40749b
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
mov dword [0x4105c8], esi
mov al, byte [ebp + 0x10]
mov byte [0x4105c4], al
cmp dword [ebp + 0xc], edi
jne 0x4074e5
cmp dword [0x410c88], edi
je 0x4074d5
mov eax, dword [0x410c84]
sub eax, 4
mov dword [0x410c84], eax
cmp eax, dword [0x410c88]
jb 0x4074d5
mov eax, dword [eax]
cmp eax, edi
je 0x4074b6
call eax
jmp 0x4074b6
push 0x40f02c
mov eax, 0x40f028
call fcn.004073e5
pop ecx
push 0x40f034
mov eax, 0x40f030
call fcn.004073e5
pop ecx
or dword [ebp - 4], 0xffffffff
call 0x407516
cmp dword [ebp + 0x10], edi
jne 0x407524
mov dword [0x4105cc], esi
push dword [ebp + 8]
call fcn.004073a3
xor edi, edi
xor esi, esi
inc esi
cmp dword [ebp + 0x10], edi
je 0x407523
push 8
call fcn.0040679a
pop ecx
ret
call fcn.0040590b
ret

Function at 0x407bca
Capabilities:
Write file on windows

Disassembly:
push ebp
lea ebp, [esp - 0x8c]
sub esp, 0x10c
mov eax, dword [0x40f750]
mov ecx, dword [ebp + 0x94]
push ebx
push esi
mov dword [ebp + 0x88], eax
xor edx, edx
push edi
xor eax, eax
cmp ecx, dword [eax*8 + 0x40f388]
je 0x407bff
inc eax
cmp eax, 0x13
jb 0x407bf0
mov esi, eax
shl esi, 3
cmp ecx, dword [esi + 0x40f388]
jne 0x407d25
mov eax, dword [0x410434]
cmp eax, 1
je 0x407cfd
cmp eax, edx
jne 0x407c2f
cmp dword [0x40f0c4], 1
je 0x407cfd
cmp ecx, 0xfc
je 0x407d25
push 0x104
lea eax, [ebp - 0x80]
push eax
push edx
mov byte [ebp + 0x84], dl
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x407c65
lea eax, [ebp - 0x80]
push str._program_name_unknown_
push eax
call fcn.004093c0
pop ecx
pop ecx
lea edi, [ebp - 0x80]
mov eax, edi
push eax
call fcn.004096d0
inc eax
cmp eax, 0x3c
pop ecx
jbe 0x407c99
mov eax, edi
push eax
call fcn.004096d0
mov edi, eax
lea eax, [ebp - 0x80]
sub eax, 0x3b
push 3
add edi, eax
push 0x40d058
push edi
call fcn.00409510
add esp, 0x10
push edi
call fcn.004096d0
push dword [esi + 0x40f38c]
mov ebx, eax
call fcn.004096d0
lea eax, [ebx + eax + 0x1c]
pop ecx
add eax, 3
pop ecx
and eax, 0xfffffffc
call fcn.00406060
mov ebx, esp
push str.Runtime_Error__n_nProgram:
push ebx
call fcn.004093c0
push edi
push ebx
call fcn.004093d0
push 0x40d038
push ebx
call fcn.004093d0
push dword [esi + 0x40f38c]
push ebx
call fcn.004093d0
push 0x12010
push str.Microsoft_Visual_C_Runtime_Library
push ebx
call fcn.00409f7d
add esp, 0x2c
jmp 0x407d25
push edx
lea eax, [ebp + 0x94]
push eax
lea esi, [esi + 0x40f38c]
push dword [esi]
call fcn.004096d0
pop ecx
push eax
push dword [esi]
push 0xfffffffffffffff4
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
lea esp, [ebp - 0x8c]
mov ecx, dword [ebp + 0x88]
call fcn.0040978c
pop edi
pop esi
pop ebx
add ebp, 0x8c
leave
ret
Function at 0x4086a6
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push esi
mov esi, dword [ebp + 8]
mov ebx, dword [esi + 8]
test bl, 3
jne 0x4086d4
mov eax, dword fs:[0x18]
mov dword [ebp + 8], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 8]
cmp ebx, ecx
mov dword [ebp - 4], ecx
jb 0x4086db
cmp ebx, dword [eax + 4]
jae 0x4086db
xor eax, eax
jmp 0x4088cb
push edi
mov edi, dword [esi + 0xc]
cmp edi, 0xffffffff
jne 0x4086ec
xor eax, eax
inc eax
jmp 0x4088ca
xor edx, edx
mov dword [ebp + 8], edx
mov eax, ebx
mov ecx, dword [eax]
cmp ecx, 0xffffffff
je 0x408702
cmp ecx, edx
jae 0x408847
cmp dword [eax + 4], 0
je 0x40870b
inc dword [ebp + 8]
inc edx
add eax, 0xc
cmp edx, edi
jbe 0x4086f3
cmp dword [ebp + 8], 0
je 0x40872d
mov eax, dword [esi - 8]
cmp eax, dword [ebp - 4]
jb 0x408847
cmp eax, esi
jae 0x408847
mov eax, dword [0x410708]
mov edi, ebx
and edi, 0xfffff000
xor esi, esi
test eax, eax
jle 0x408752
cmp dword [esi*4 + 0x410710], edi
je 0x40884b
inc esi
cmp esi, eax
jl 0x408740
push 0x1c
lea eax, [ebp - 0x20]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
test eax, eax
je 0x4088c7
cmp dword [ebp - 8], 0x1000000
jne 0x4088c7
test byte [ebp - 0xc], 0xcc
je 0x4087d0
mov ecx, dword [ebp - 0x1c]
cmp word [ecx], 0x5a4d
jne 0x4088c7
mov eax, dword [ecx + 0x3c]
add eax, ecx
cmp dword [eax], 0x4550
jne 0x4088c7
cmp word [eax + 0x18], 0x10b
jne 0x4088c7
sub ebx, ecx
cmp word [eax + 6], 0
movzx ecx, word [eax + 0x14]
lea ecx, [ecx + eax + 0x18]
jbe 0x4088c7
mov eax, dword [ecx + 0xc]
cmp ebx, eax
jb 0x4087d0
mov edx, dword [ecx + 8]
add edx, eax
cmp ebx, edx
jae 0x4087d0
test byte [ecx + 0x27], 0x80
jne 0x408847
push 1
push 0x410750
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
test eax, eax
jne 0x4086e4
mov ecx, dword [0x410708]
test ecx, ecx
mov edx, ecx
jle 0x408804
lea eax, [ecx*4 + 0x41070c]
cmp dword [eax], edi
je 0x408804
dec edx
sub eax, 4
test edx, edx
jg 0x4087f8
test edx, edx
jne 0x408835
push 0xf
pop ebx
cmp ecx, ebx
jg 0x408811
mov ebx, ecx
xor edx, edx
test ebx, ebx
jl 0x408829
lea eax, [edx*4 + 0x410710]
mov esi, dword [eax]
inc edx
cmp edx, ebx
mov dword [eax], edi
mov edi, esi
jle 0x408817
cmp ecx, 0x10
jge 0x408835
inc ecx
mov dword [0x410708], ecx
push 0
push 0x410750
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
jmp 0x4086e4
xor eax, eax
jmp 0x4088ca
test esi, esi
jle 0x4086e4
mov ebx, dword [sym.imp.KERNEL32.dll_InterlockedExchange]
push 1
push 0x410750
call ebx
test eax, eax
jne 0x4086e4
cmp dword [esi*4 + 0x410710], edi
je 0x4088a1
mov eax, dword [0x410708]
lea esi, [eax - 1]
test esi, esi
jl 0x40888f
cmp dword [esi*4 + 0x410710], edi
je 0x40888b
dec esi
jns 0x40887f
test esi, esi
jge 0x40889f
cmp eax, 0x10
jge 0x40889a
inc eax
mov dword [0x410708], eax
lea esi, [eax - 1]
jmp 0x4088a1
je 0x4088b9
xor ecx, ecx
test esi, esi
jl 0x4088b9
lea eax, [ecx*4 + 0x410710]
mov edx, dword [eax]
inc ecx
cmp ecx, esi
mov dword [eax], edi
mov edi, edx
jle 0x4088a7
push 0
push 0x410750
call ebx
jmp 0x4086e4
or eax, 0xffffffff
pop edi
pop esi
pop ebx
leave
ret
Function at 0x409f7d
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
xor ebx, ebx
cmp dword [0x4107d8], ebx
push esi
push edi
jne 0x409ffd
push str.user32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
cmp edi, ebx
je 0x40a038
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.MessageBoxA
push edi
call esi
test eax, eax
mov dword [0x4107d8], eax
je 0x40a038
push str.GetActiveWindow
push edi
call esi
push str.GetLastActivePopup
push edi
mov dword [0x4107dc], eax
call esi
cmp dword [0x41058c], 2
mov dword [0x4107e0], eax
jne 0x409ffd
push str.GetUserObjectInformationA
push edi
call esi
test eax, eax
mov dword [0x4107e8], eax
je 0x409ffd
push str.GetProcessWindowStation
push edi
call esi
mov dword [0x4107e4], eax
mov eax, dword [0x4107e4]
test eax, eax
je 0x40a042
call eax
test eax, eax
je 0x40a029
lea ecx, [ebp - 4]
push ecx
push 0xc
lea ecx, [ebp - 0x10]
push ecx
push 1
push eax
call dword [0x4107e8]
test eax, eax
je 0x40a029
test byte [ebp - 8], 1
jne 0x40a042
cmp dword [0x410598], 4
jb 0x40a03c
or byte [ebp + 0x12], 0x20
jmp 0x40a061
xor eax, eax
jmp 0x40a071
or byte [ebp + 0x12], 4
jmp 0x40a061
mov eax, dword [0x4107dc]
test eax, eax
je 0x40a061
call eax
mov ebx, eax
test ebx, ebx
je 0x40a061
mov eax, dword [0x4107e0]
test eax, eax
je 0x40a061
push ebx
call eax
mov ebx, eax
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
push ebx
call dword [0x4107d8]
pop edi
pop esi
pop ebx
leave
ret

Function at 0x40a8d0
Capabilities:
Query or enumerate registry value

Disassembly:
sub esp, 0xc
push ebx
push edi
lea eax, [esp + 0xc]
push eax
push 0x20019
xor edi, edi
push edi
push str.SOFTWAREMicrosoftOle
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [esp + 0x24], ecx
mov bl, 1
mov dword [esp + 0x20], edi
mov dword [esp + 0x1c], edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, edi
je 0x40a908
xor bl, bl
jmp 0x40a97c
mov edx, dword [esp + 0xc]
push ebp
mov ebp, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push esi
lea ecx, [esp + 0x10]
push ecx
push edi
push edi
push edi
push 0x40d9fc
push edx
call ebp
cmp eax, edi
je 0x40a92c
xor bl, bl
jmp 0x40a97a
mov eax, dword [esp + 0x10]
push eax
call fcn.00405cf3
mov esi, eax
add esp, 4
cmp esi, edi
je 0x40a96f
mov ecx, dword [esp + 0x10]
mov edx, ecx
shr ecx, 2
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x10]
push eax
push esi
push 0
push 0
push 0x40d9fc
push ecx
call ebp
test eax, eax
je 0x40a973
xor bl, bl
jmp 0x40a97a
mov edx, dword [esp + 0x18]
mov dword [edx + 4], esi
pop esi
pop ebp
mov eax, dword [esp + 0xc]
test eax, eax
je 0x40a98b
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
pop edi
mov al, bl
pop ebx
add esp, 0xc
ret
Function at 0x40958d
Capabilities:
Access peb ldr_data
Resolve function by hash

Disassembly:
push ebp
mov ebp, esp
sub esp, 4
mov dword [ebp - 4], 0
cld
xor edx, edx
mov edx, dword fs:[edx + 0x30]
mov edx, dword [edx + 0xc]
mov edx, dword [edx + 0x14]
mov esi, dword [edx + 0x28]
push 0x18
pop ecx
xor edi, edi
xor eax, eax
lodsb al, byte [esi]
cmp al, 0x61
jl 0x4095bb
sub al, 0x20
ror edi, 0xd
add edi, eax
loop 0x4095b2
cmp edi, 0x6a4abc5b
mov ebx, dword [edx + 0x10]
mov edx, dword [edx]
jne 0x4095aa
mov eax, ebx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
jmp 0x4095dc
mov esp, ebp
pop ebp
ret

Function at 0x4095e0
Capabilities:
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
sub esp, 4
mov dword [ebp - 4], 0
add esp, 0xffffffec
push esi
push ebx
push edi
push edx
push ecx
mov eax, dword [ebp + 0x10]
xor edx, edx
xchg edx, eax
mov esi, 0x3c
add esi, dword [ebp + 0xc]
mov eax, dword [esi]
add eax, dword [ebp + 0xc]
mov esi, dword [eax + 0x78]
add esi, 0x18
add esi, dword [ebp + 0xc]
mov eax, dword [esi]
mov dword [ebp - 0x14], eax
add esi, 4
lea edi, [ebp - 8]
lodsd eax, dword [esi]
add eax, dword [ebp + 0xc]
stosd dword es:[edi], eax
mov dword [ebp - 8], eax
lodsd eax, dword [esi]
add eax, dword [ebp + 0xc]
push eax
stosd dword es:[edi], eax
mov dword [ebp - 0xc], eax
mov eax, dword [esi]
add eax, dword [ebp + 0xc]
mov dword [ebp - 0x10], eax
pop esi
mov dword [ebp - 4], 0
push esi
mov eax, dword [esi]
add eax, dword [ebp + 0xc]
xchg edi, eax
mov ebx, edi
push edi
xor al, al
scasb al, byte es:[edi]
jne 0x40964c
pop esi
sub edi, ebx
push edx
cld
xor ecx, ecx
dec ecx
mov edx, ecx
xor eax, eax
xor ebx, ebx
lodsb al, byte [esi]
xor al, cl
mov cl, ch
mov ch, dl
mov dl, dh
mov dh, 8
shr bx, 1
rcr ax, 1
jae 0x409679
xor ax, 0x8320
xor bx, 0xedb8
dec dh
jne 0x409668
xor ecx, eax
xor edx, ebx
dec edi
jne 0x409659
not edx
not ecx
mov eax, edx
rol eax, 0x10
mov ax, cx
pop edx
cmp edx, eax
je 0x40969f
pop esi
add esi, 4
add dword [ebp - 4], 1
jmp 0x409640
pop esi
mov eax, dword [ebp - 4]
shl eax, 1
add eax, dword [ebp - 0x10]
xor esi, esi
xchg esi, eax
mov ax, word [esi]
shl ax, 2
add eax, dword [ebp - 8]
xchg esi, eax
mov eax, dword [esi]
add eax, dword [ebp + 0xc]
pop ecx
pop edx
pop edi
pop ebx
pop esi
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
jmp 0x4096cb
mov esp, ebp
pop ebp
ret 0xc
Function at 0x40a26a
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
mov dword [ebp + 0xc], eax
jmp 0x40a27a
sub esp, 0x38
mov dword [ebp - 4], 0
mov dword [ebp - 8], 0
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x18], 0
cmp dword [ebp + 8], 0
jle 0x40a2cf
push dword [ebp + 8]
call fcn.0040a47b
mov dword [ebp - 0x24], eax
cmp word [ebp - 0x24], 0x5a4d
jne 0x40a2cf
xor eax, eax
jmp 0x40a2d4
mov eax, 1
test eax, eax
je 0x40a2e6
mov eax, 0
jmp 0x40a475
push 0x3c
push dword [ebp + 8]
call fcn.0040a4bd
push eax
call fcn.0040a497
push eax
push dword [ebp + 8]
call fcn.0040a4bd
mov dword [ebp - 4], eax
push dword [ebp - 4]
call fcn.0040a497
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0x4550
jne 0x40a341
push 0x7c
push dword [ebp - 4]
call fcn.0040a4bd
push eax
call fcn.0040a497
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x30], 0
je 0x40a341
xor eax, eax
jmp 0x40a346
mov eax, 1
test eax, eax
je 0x40a358
mov eax, 0
jmp 0x40a475
push 0x78
push dword [ebp - 4]
call fcn.0040a4bd
push eax
call fcn.0040a497
push eax
push dword [ebp + 8]
call fcn.0040a4bd
mov dword [ebp - 8], eax
push 0x20
push dword [ebp - 8]
call fcn.0040a4bd
push eax
call fcn.0040a497
push eax
push dword [ebp + 8]
call fcn.0040a4bd
push eax
call fcn.0040a497
push eax
push dword [ebp + 8]
call fcn.0040a4bd
mov dword [ebp - 0xc], eax
push 0x18
push dword [ebp - 8]
call fcn.0040a4bd
push eax
call fcn.0040a497
mov dword [ebp - 0x10], eax
push 1
push dword [ebp - 0x10]
call fcn.0040a4e4
push eax
lea eax, [ebp - 0x10]
mov ebx, eax
mov ecx, 0
pop edx
push edx
push ecx
push ebx
mov dword [ebx], ecx
cmp ecx, edx
jg 0x40a468
push dword [ebp - 0x18]
push dword [ebp - 0xc]
call fcn.0040a4bd
mov dword [ebp - 0x14], eax
push dword [ebp + 0xc]
push dword [ebp - 0x14]
call fcn.0040a50b
test eax, eax
je 0x40a44b
push 0x1c
push dword [ebp - 8]
call fcn.0040a4bd
push eax
call fcn.0040a497
push eax
push dword [ebp + 8]
call fcn.0040a4bd
mov dword [ebp - 0x24], eax
push 4
push dword [ebp - 0x10]
call fcn.0040a53f
push eax
push dword [ebp - 0x24]
call fcn.0040a4bd
push eax
call fcn.0040a497
push eax
push dword [ebp + 8]
call fcn.0040a4bd
jmp 0x40a475
push dword [ebp - 0x14]
call fcn.0040a567
push eax
push dword [ebp - 0x18]
call fcn.0040a4bd
mov dword [ebp - 0x18], eax
pop ebx
pop ecx
pop edx
inc ecx
jmp 0x40a3d4
add esp, 0xc
mov eax, 0
jmp 0x40a475
mov esp, ebp
pop ebp
ret 8