joyce8/EMBER2024-capa huggingface dataset:
Function at 0x4a83a0
Capabilities:
Delete directory
Get common file path
Manipulate console buffer

Disassembly:
sub esp, 0xc0c
cmp dword [0x8350f8], 0x37
jne 0x4a8446
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FatalAppExitW]
push 0
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_VirtualUnlock]
push 0
call dword [sym.imp.KERNEL32.dll_GetSystemPowerStatus]
push 0
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea ecx, [esp + 8]
push ecx
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WriteConsoleInputA]
lea edx, [esp + 4]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetCompressedFileSizeA]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WriteProfileSectionA]
push 0
lea eax, [esp + 0x410]
push eax
push 0
push 0x404128
push 0
call dword [sym.imp.KERNEL32.dll_FoldStringW]
push 0
push 0
push 0
push 0x404168
push 0x404144
push 0x4041c0
call dword [sym.imp.KERNEL32.dll_ReplaceFileW]
mov ecx, dword [0x8350fc]
mov dword [esp], ecx
mov eax, 0x5d1
add dword [esp], eax
mov edx, dword [esp]
mov al, byte [edx + esi]
mov ecx, dword [0x4b515c]
mov byte [ecx + esi], al
add esp, 0xc0c
ret
Function at 0x4a8650
Capabilities:
Enumerate files on windows
Manipulate console buffer
Move file

Disassembly:
mov eax, dword [0x8350f8]
sub esp, 0x47c
push ebx
push ebp
push esi
shr eax, 3
xor ebx, ebx
push edi
mov edi, dword [0x4b515c]
cmp eax, ebx
jbe 0x4a8846
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], eax
jmp 0x4a8686
mov edi, dword [esp + 0x1c]
xor ebx, ebx
cmp dword [0x8350f8], 0x1c
jne 0x4a869d
lea eax, [esp + 0x3c]
push eax
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WriteConsoleInputA]
mov ecx, dword [edi + 4]
mov edx, dword [0x4ae700]
mov eax, dword [0x4ae704]
mov esi, dword [edi]
mov ebp, dword [0x4ae708]
mov dword [esp + 0x14], ecx
mov ecx, dword [0x4ae70c]
mov edi, 0xc6ef3720
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], 0x20
jmp 0x4a86da
xor ebx, ebx
mov eax, esi
mov edx, esi
shl eax, 4
shr edx, 5
add edx, dword [esp + 0x28]
add eax, ebp
lea ecx, [edi + esi]
xor eax, ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x10], eax
mov dword [0x83407c], ebx
mov eax, dword [esp + 0x18]
add dword [0x83407c], eax
mov edx, dword [0x83407c]
mov dword [esp + 0x38], edx
mov dword [esp + 0x18], ebx
mov eax, dword [esp + 0x38]
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x10]
xor eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
sub dword [esp + 0x14], eax
mov ecx, dword [esp + 0x14]
shl ecx, 4
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x2c]
add dword [esp + 0x10], eax
cmp dword [0x8350f8], 0x1be
mov eax, dword [esp + 0x14]
lea ebx, [edi + eax]
jne 0x4a8774
lea edx, [esp + 0x34]
push edx
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WriteConsoleInputW]
mov eax, dword [esp + 0x14]
shr eax, 5
add eax, dword [esp + 0x30]
cmp dword [0x8350f8], 0x979
mov dword [0x834080], 0xff6b3619
mov dword [0x834084], 0xffffffff
mov dword [esp + 0x18], eax
jne 0x4a87c8
mov eax, dword [esp + 0x34]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_SetConsoleScreenBufferSize]
push 0
lea ecx, [esp + 0x8c]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GlobalGetAtomNameA]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
xor dword [esp + 0x10], ebx
mov eax, dword [esp + 0x18]
xor dword [esp + 0x10], eax
sub esi, dword [esp + 0x10]
add edi, 0x61c88647
dec dword [esp + 0x20]
jne 0x4a86d8
cmp dword [0x8350f8], 0x8d4
jne 0x4a87ff
lea edx, [esp + 0x40]
push edx
call dword [sym.imp.KERNEL32.dll_GetStartupInfoA]
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
mov dword [edi], esi
mov dword [edi + 4], eax
cmp dword [0x8350f8], 0x17
jne 0x4a8835
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MoveFileWithProgressW]
lea ecx, [esp + 0x88]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
add edi, 8
dec dword [esp + 0x24]
mov dword [esp + 0x1c], edi
jne 0x4a8680
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x47c
ret
Function at 0x4015fb
Capabilities:
Query environment variable

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov dword [0x40c024], 1
mov eax, dword [0x40c024]
mov dword [0x40c038], eax
mov eax, dword [0x40c038]
mov dword [0x40c034], eax
mov dword [0x40c028], 0
mov dword [esp], str.POSIXLY_CORRECT
call sub.msvcrt.dll_getenv
mov dword [0x40c030], eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax]
cmp al, 0x2d
jne 0x401654
mov dword [0x40c02c], 2
add dword [ebp + 8], 1
jmp 0x40168d
mov eax, dword [ebp + 8]
movzx eax, byte [eax]
cmp al, 0x2b
jne 0x40166e
mov dword [0x40c02c], 0
add dword [ebp + 8], 1
jmp 0x40168d
mov eax, dword [0x40c030]
test eax, eax
je 0x401683
mov dword [0x40c02c], 0
jmp 0x40168d
mov dword [0x40c02c], 1
mov eax, dword [ebp + 8]
leave
ret

Function at 0x402014
Capabilities:
Initialize winsock library

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1b8
mov word [ebp - 0xa], 0x101
movzx eax, word [ebp - 0xa]
lea edx, [ebp - 0x1a0]
mov dword [esp + 4], edx
mov dword [esp], eax
call sub.WS2_32.dll_WSAStartup
sub esp, 8
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jne 0x402066
movzx eax, word [ebp - 0x1a0]
cmp al, 1
jne 0x40205f
movzx eax, word [ebp - 0x1a0]
shr ax, 8
cmp al, 1
je 0x402067
call sub.WS2_32.dll_WSACleanup
jmp 0x402067
nop
leave
ret
Function at 0x403613
Capabilities:
Send data
Send data on socket

Disassembly:
push ebp
mov ebp, esp
push ebx
sub esp, 0x14
mov edx, dword [0x40c128]
mov eax, dword [ebp + 8]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], edx
mov dword [esp], eax
call sub.WS2_32.dll_send
sub esp, 0x10
mov ebx, eax
cmp ebx, 1
je 0x403660
call sub.msvcrt.dll__errno
mov eax, dword [eax]
mov dword [esp + 4], eax
mov dword [esp], str.udptest_first_write_failed___errno__d
call fcn.00402513
mov eax, dword [0x40c088]
test eax, eax
je 0x403678
mov eax, dword [0x40c088]
mov dword [esp], eax
call sub.msvcrt.dll__sleep
jmp 0x4036f1
mov word [0x40c084], 0
mov dword [0x40c088], 5
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x7a69
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.00402dcf
mov ebx, eax
test ebx, ebx
jle 0x4036ca
mov eax, dword [ebp + 8]
mov dword [esp + 4], 2
mov dword [esp], eax
call sub.WS2_32.dll_shutdown
sub esp, 8
mov eax, ebx
mov dword [esp], eax
call sub.WS2_32.dll_closesocket
sub esp, 4
mov dword [0x40c088], 0
movzx eax, word [0x40c084]
add eax, 1
mov word [0x40c084], ax
call sub.msvcrt.dll__errno
mov dword [eax], 0
mov edx, dword [0x40c128]
mov eax, dword [ebp + 8]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], edx
mov dword [esp], eax
call sub.WS2_32.dll_send
sub esp, 0x10
mov ebx, eax
cmp ebx, 1
jne 0x403730
mov eax, dword [ebp + 8]
jmp 0x403759
mov eax, dword [ebp + 8]
mov dword [esp + 4], 2
mov dword [esp], eax
call sub.WS2_32.dll_shutdown
sub esp, 8
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sub.WS2_32.dll_closesocket
sub esp, 4
mov eax, 0xffffffff
mov ebx, dword [ebp - 4]
leave
ret
Function at 0x4052c0
Capabilities:
Get thread local storage value

Disassembly:
push esi
push ebx
sub esp, 0x14
mov dword [esp], 0x40c0b4
call sub.KERNEL32.dll_EnterCriticalSection
mov ebx, dword [0x40c0ac]
sub esp, 4
test ebx, ebx
je 0x40530b
nop
mov eax, dword [ebx]
mov dword [esp], eax
call sub.KERNEL32.dll_TlsGetValue
sub esp, 4
mov esi, eax
call sub.KERNEL32.dll_GetLastError
test eax, eax
jne 0x405304
test esi, esi
je 0x405304
mov eax, dword [ebx + 4]
mov dword [esp], esi
call eax
mov ebx, dword [ebx + 8]
test ebx, ebx
jne 0x4052e0
mov dword [esp], 0x40c0b4
call sub.KERNEL32.dll_LeaveCriticalSection
sub esp, 4
add esp, 0x14
pop ebx
pop esi
ret

Function at 0x4054f0
Capabilities:
Write file on windows

Disassembly:
push esi
push ebx
sub esp, 0x14
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 8], 0x17
mov dword [esp + 4], 1
lea esi, [esp + 0x24]
mov dword [esp], str.Mingw_runtime_failure:_n
lea ebx, [eax + 0x40]
mov dword [esp + 0xc], ebx
call sub.msvcrt.dll_fwrite
mov eax, dword [esp + 0x20]
mov dword [esp + 8], esi
mov dword [esp], ebx
mov dword [esp + 4], eax
call sub.msvcrt.dll_vfprintf
call sub.msvcrt.dll_abort
lea esi, [esi]

Function at 0x405540
Capabilities:
Allocate or change rwx memory

Disassembly:
push ebp
push edi
mov edi, ecx
push esi
push ebx
mov ebx, eax
mov esi, edx
sub esp, 0x4c
lea eax, [esp + 0x24]
mov dword [esp + 8], 0x1c
mov dword [esp], ebx
mov dword [esp + 4], eax
call sub.KERNEL32.dll_VirtualQuery
sub esp, 0xc
test eax, eax
je 0x405618
mov eax, dword [esp + 0x38]
cmp eax, 0x40
je 0x40557e
cmp eax, 4
jne 0x4055a0
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp], ebx
call sub.msvcrt.dll_memcpy
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x30]
lea ebp, [esp + 0x20]
mov dword [esp + 8], 0x40
mov dword [esp + 0xc], ebp
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call sub.KERNEL32.dll_VirtualProtect
sub esp, 0x10
mov edx, dword [esp + 0x38]
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp], ebx
mov dword [esp + 0x1c], edx
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x1c]
cmp edx, 0x40
je 0x40558e
cmp edx, 4
je 0x40558e
mov eax, dword [esp + 0x20]
mov dword [esp + 0xc], ebp
mov dword [esp + 8], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call sub.KERNEL32.dll_VirtualProtect
sub esp, 0x10
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 8], ebx
mov dword [esp + 4], 0x1c
mov dword [esp], str.__VirtualQuery_failed_for__d_bytes_at_address__p
call fcn.004054f0
Function at 0x401040
Capabilities:
Allocate or change rwx memory
Encode data using xor
Execute shellcode via indirect call
Terminate process

Disassembly:
push ebx
push esi
push edi
push 9
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov esi, eax
add esp, 4
test esi, esi
jne 0x401069
push str.Memory_allocation_failed._n
call fcn.00401010
add esp, 4
push 1
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_exit]
push 0
call dword [sym.imp.api_ms_win_crt_time_l1_1_0.dll__time64]
push eax
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_srand]
mov ebx, dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
add esp, 8
xor edi, edi
call ebx
cdq
mov ecx, 0x3e
idiv ecx
mov al, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
mov byte [edi + esi], al
inc edi
cmp edi, 8
jl 0x401083
push esi
push str.Generated_Password:__s_n
mov byte [esi + 8], 0
call fcn.00401010
push esi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
push str.Executing_shellcode..._n
call fcn.00401010
add esp, 0x10
push 0x40
push 0x1000
push 0xf
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov ebx, eax
test ebx, ebx
jne 0x4010ea
push str.Error_allocating_memory_for_shellcode._n
call fcn.00401010
add esp, 4
lea eax, [ebx + 1]
pop edi
pop esi
pop ebx
ret
push str.hello
call fcn.00401010
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
add esp, 4
xor esi, esi
nop
push 0
call edi
mov al, byte [esi + 0x403018]
add al, 3
push esi
push 0x4021e4
mov byte [esi + 0x403394], al
call fcn.00401010
inc esi
add esp, 8
cmp esi, 0xf
jb 0x401100
xor eax, eax
nop dword [eax + eax]
xor byte [eax + 0x403018], 0x42
inc eax
cmp eax, 0xe
jb 0x401130
mov esi, 0x31
push 0
call edi
sub esi, 1
jne 0x401142
nop dword [eax + eax]
mov eax, esi
imul eax, esi
push eax
push 0x4021e8
call fcn.00401010
inc esi
add esp, 8
cmp esi, 0x64
jl 0x401150
push 0xf
push 0xf
push 0xf
push str._d__d__d
call fcn.00401010
add esp, 0x10
xor esi, esi
nop
push 0
call edi
mov al, byte [esi + 0x403394]
sub al, 3
push esi
push 0x4021e4
mov byte [esi + 0x403384], al
call fcn.00401010
inc esi
add esp, 8
cmp esi, 0xf
jb 0x401180
push 0x4021f8
call fcn.00401010
push 0xf
push 0xf
push 0xf
push str._d__d__d
call fcn.00401010
add esp, 0x14
xor eax, eax
xor byte [eax + 0x403018], 0x4b
inc eax
cmp eax, 0xe
jb 0x4011c5
movq xmm0, qword [0x403018]
movq qword [ebx], xmm0
mov eax, dword [0x403020]
mov dword [ebx + 8], eax
mov ax, word [0x403024]
mov word [ebx + 0xc], ax
mov al, byte [0x403026]
mov byte [ebx + 0xe], al
call ebx
push str.Shellcode_execution_complete._n
call fcn.00401010
add esp, 4
push 0x8000
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_VirtualFree]
pop edi
pop esi
xor eax, eax
pop ebx
ret

Function at 0x401a20
Capabilities:
Parse pe header

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

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0x10]
push eax
push 0x40
push 0
mov ecx, dword [ebp + 8]
push ecx
call dword [ebp + 0xc]
add esp, 0x10
test eax, eax
jne 0x4053a3
mov eax, 1
jmp 0x4054ae
mov edx, dword [ebp + 8]
movzx eax, word [edx]
cmp eax, 0x5a4d
jne 0x4053b9
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x3c], 0
jne 0x4053c3
mov eax, 2
jmp 0x4054ae
mov edx, dword [ebp + 0x10]
push edx
push 0xf8
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x3c]
push ecx
mov edx, dword [ebp + 8]
add edx, 0x40
push edx
call dword [ebp + 0xc]
add esp, 0x10
test eax, eax
jne 0x4053ee
mov eax, 1
jmp 0x4054ae
mov eax, dword [ebp + 8]
cmp dword [eax + 0x40], 0x4550
jne 0x405414
mov ecx, dword [ebp + 8]
movzx edx, word [ecx + 0x58]
cmp edx, 0x10b
jne 0x405414
mov eax, dword [ebp + 8]
movzx ecx, word [eax + 0x46]
test ecx, ecx
jne 0x40541e
mov eax, 2
jmp 0x4054ae
mov edx, dword [ebp + 8]
movzx eax, word [edx + 0x46]
imul eax, eax, 0x28
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x140], eax
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x140]
push eax
call fcn.00411480
add esp, 4
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x138], eax
mov edx, dword [ebp + 8]
cmp dword [edx + 0x138], 0
jne 0x40545f
mov eax, 3
jmp 0x4054ae
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x3c]
mov edx, dword [ebp + 8]
movzx eax, word [edx + 0x54]
lea ecx, [ecx + eax + 0x18]
mov edx, dword [ebp + 8]
mov dword [edx + 0x13c], ecx
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x140]
push edx
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x13c]
push ecx
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x138]
push eax
call dword [ebp + 0xc]
add esp, 0x10
test eax, eax
jne 0x4054ac
mov eax, 1
jmp 0x4054ae
xor eax, eax
pop ebp
ret

Function at 0x405e40
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [ebp + 8]
movzx ecx, word [eax]
cmp ecx, 0x5a4d
je 0x405e56
xor eax, eax
jmp 0x405e96
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 8]
add eax, dword [edx + 0x3c]
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 4]
cmp dword [ecx], 0x4550
jne 0x405e7b
mov edx, dword [ebp - 4]
movzx eax, word [edx + 0x18]
cmp eax, 0x10b
je 0x405e7f
xor eax, eax
jmp 0x405e96
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x78]
push ecx
call fcn.00405ea0
add esp, 0xc
mov esp, ebp
pop ebp
ret

Function at 0x412070
Capabilities:
Access peb ldr_data
Get kernel32 base address

Disassembly:
push ebp
mov ebp, esp
push ecx
mov dword [ebp - 4], 0
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov eax, dword [eax]
mov eax, dword [eax + 0x18]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
mov esp, ebp
pop ebp
ret
Function at 0x4120a0
Capabilities:
Parse pe header
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
cmp dword [ebp + 8], 0
jne 0x4120b3
xor eax, eax
jmp 0x412171
mov eax, dword [ebp + 8]
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0xc]
movzx edx, word [ecx]
cmp edx, 0x5a4d
je 0x4120ce
xor eax, eax
jmp 0x412171
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp + 8]
add ecx, dword [eax + 0x3c]
mov dword [ebp - 0x10], ecx
mov edx, dword [ebp - 0x10]
cmp dword [edx], 0x4550
je 0x4120ec
xor eax, eax
jmp 0x412171
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp + 8]
add ecx, dword [eax + 0x78]
mov dword [ebp - 8], ecx
mov edx, dword [ebp - 8]
mov eax, dword [ebp + 8]
add eax, dword [edx + 0x1c]
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 8]
mov edx, dword [ebp + 8]
add edx, dword [ecx + 0x24]
mov dword [ebp - 0x14], edx
mov eax, dword [ebp - 8]
mov ecx, dword [ebp + 8]
add ecx, dword [eax + 0x20]
mov dword [ebp - 4], ecx
mov dword [ebp - 0x1c], 0
jmp 0x41212e
mov edx, dword [ebp - 0x1c]
add edx, 1
mov dword [ebp - 0x1c], edx
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x1c]
cmp ecx, dword [eax + 0x18]
jae 0x41216f
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 4]
mov edx, dword [ebp + 8]
add edx, dword [ecx + eax*4]
push edx
call fcn.004114a0
add esp, 8
test eax, eax
jne 0x41216d
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x14]
movzx edx, word [ecx + eax*2]
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp + 8]
add ecx, dword [eax + edx*4]
mov eax, ecx
jmp 0x412171
jmp 0x412125
xor eax, eax
mov esp, ebp
pop ebp
ret
Function at 0x4017f0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebx
push edi
push esi
sub esp, 0x98
mov edi, dword [esp + 0xa8]
mov esi, edx
push ecx
call fcn.004365e0
add esp, 4
lea ecx, [esp + 0x44]
push edx
push eax
push ecx
call fcn.00430300
add esp, 0xc
lea eax, [esp + 0x24]
push edi
push esi
push eax
call fcn.00430300
add esp, 0xc
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x28]
movzx edx, byte [esp + 0x40]
mov ah, byte [esp + 0x41]
mov bh, byte [esp + 0x60]
mov ch, byte [esp + 0x61]
mov bl, byte [esp + 0x4c]
cmp edi, esi
mov byte [esp + 3], dl
mov byte [esp + 2], ah
jne 0x401893
cmp bh, dl
jne 0x401893
cmp ch, 2
jne 0x401893
cmp ah, 2
jne 0x401893
cmp bl, 3
setae al
cmp byte [esp + 0x2c], 3
setb cl
xor cl, al
je 0x401893
push edi
push dword [esp + 0x28]
push dword [esp + 0x4c]
mov byte [esp + 0xd], ch
call sub.VCRUNTIME140.dll_memcmp
mov ch, byte [esp + 0xd]
add esp, 0xc
test eax, eax
je 0x4019a1
mov eax, dword [esp + 0x44]
cmp bl, 6
je 0x4018c0
mov dl, ch
mov ecx, dword [esp + 0x5c]
movsd xmm0, qword [esp + 0x4d]
movsd xmm1, qword [esp + 0x55]
mov dword [esp + 0x13], ecx
mov ch, dl
movsd qword [esp + 0xc], xmm1
movsd qword [esp + 4], xmm0
movsd xmm0, qword [esp + 4]
movsd xmm1, qword [esp + 0xc]
mov edx, dword [esp + 0x13]
mov cl, byte [esp + 0x62]
movsd qword [esp + 0x89], xmm1
movsd qword [esp + 0x81], xmm0
mov dword [esp + 0x90], edx
mov dword [esp + 0x78], eax
movzx eax, byte [esp + 0x2c]
mov dword [esp + 0x7c], edi
mov byte [esp + 0x80], bl
mov byte [esp + 0x94], bh
mov byte [esp + 0x95], ch
mov byte [esp + 0x96], cl
mov ecx, dword [esp + 0x24]
cmp al, 6
je 0x40193e
mov edx, dword [esp + 0x3c]
movsd xmm0, qword [esp + 0x2d]
movsd xmm1, qword [esp + 0x35]
mov dword [esp + 0x73], edx
movsd qword [esp + 0x6c], xmm1
movsd qword [esp + 0x64], xmm0
movsd xmm0, qword [esp + 0x64]
movsd xmm1, qword [esp + 0x6c]
mov edi, dword [esp + 0x73]
movzx edx, byte [esp + 0x42]
movsd qword [esp + 0x15], xmm1
movsd qword [esp + 0xd], xmm0
mov dword [esp + 0x1c], edi
mov dword [esp + 4], ecx
mov dword [esp + 8], esi
mov byte [esp + 0xc], al
movzx eax, byte [esp + 3]
lea ecx, [esp + 0x78]
mov byte [esp + 0x20], al
movzx eax, byte [esp + 2]
mov byte [esp + 0x21], al
lea eax, [esp + 4]
mov byte [esp + 0x22], dl
push eax
push ecx
call fcn.00406830
add esp, 8
add esp, 0x98
pop esi
pop edi
pop ebx
ret
mov al, 1
jmp 0x401997
Function at 0x40ccd0
Capabilities:
Check for peb ntglobalflag flag

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x80
mov esi, esp
mov dword [esi + 0x68], ebp
mov dword [esi + 0x6c], esp
mov dword [esi + 0x78], 0xffffffff
mov dword [esi + 0x74], 0x40dc50
mov ecx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov eax, dword fs:[0]
mov dword [esi + 0x70], eax
lea eax, [esi + 0x70]
mov dword fs:[0], eax
mov eax, dword [ecx + 8]
movsd xmm0, qword [ecx]
mov ecx, dword [ebp + 0x10]
mov ebx, dword [edi + 0x18]
movsd xmm1, qword [ecx + 8]
mov dword [esi + 0x58], eax
movsd qword [esi + 0x50], xmm0
mov eax, dword [ebp + 0x14]
movsd xmm3, qword [ecx]
movsd xmm2, qword [ecx + 0x10]
movsd qword [esi + 0x18], xmm1
movsd xmm1, qword [ecx + 0x18]
movsd qword [esi + 0x10], xmm3
movsd qword [esi + 0x20], xmm2
movsd xmm3, qword [eax]
movsd xmm2, qword [eax + 0x10]
movsd qword [esi + 0x28], xmm1
movsd xmm1, qword [eax + 8]
movsd qword [esi + 0x30], xmm3
movsd qword [esi + 0x40], xmm2
movsd qword [esi + 0x38], xmm1
movsd xmm1, qword [eax + 0x18]
mov eax, dword [edi + 8]
cmp eax, dword [edi + 4]
movsd qword [esi + 0x48], xmm1
mov dword [esi + 8], 0
mov dword [esi + 0x5c], 4
mov dword [esi + 0x60], 0
mov dword [esi + 0x64], 0
jne 0x40cdb6
mov dword [esi + 4], ebx
mov dword [esi + 0x78], 0
push eax
push edi
call fcn.0040e620
add esp, 8
mov ecx, dword [ebp + 8]
mov ebx, dword [esi + 4]
mov eax, dword [ecx + 8]
mov edi, ecx
lea eax, [eax + eax*2]
lea ecx, [esi + 8]
shl eax, 5
add eax, dword [edi]
push 0x60
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x70]
inc dword [edi + 8]
inc dword [edi + 0x18]
mov dword fs:[0], eax
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
Function at 0x40ce10
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x48
mov esi, esp
mov dword [esi + 0x30], ebp
mov dword [esi + 0x34], esp
mov dword [esi + 0x40], 0xffffffff
mov dword [esi + 0x3c], 0x40dc60
lea eax, [esi + 0x38]
mov ecx, dword fs:[0]
mov dword [esi + 0x38], ecx
mov dword fs:[0], eax
mov dword [esi + 4], 1
mov dword [esi + 8], 0
mov dword [esi + 0xc], 0
mov dword [esi + 0x40], 0
push 0
call fcn.0043a5a0
add esp, 4
test eax, eax
je 0x40cf77
mov dword [esi + 0x10], 0x67b2d0
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], 0
mov dword [esi + 0x1c], 0
movdqu xmm0, xmmword [eax]
movd edx, xmm0
pshufd xmm1, xmm0, 0x55
add edx, 1
movd ecx, xmm1
adc ecx, 0
mov dword [eax], edx
mov dword [eax + 4], ecx
movdqu xmmword [esi + 0x20], xmm0
mov dword [esi + 0x40], 1
push 0
call fcn.0043a5a0
add esp, 4
mov ecx, eax
test eax, eax
je 0x40cf95
mov eax, dword [ebp + 8]
movsd xmm0, qword [esi + 4]
mov edx, dword [esi + 0xc]
movsd xmm1, qword [esi + 0x18]
movsd qword [eax + 0x50], xmm0
movsd xmm0, qword [esi + 0x10]
mov dword [eax + 0x58], edx
movsd qword [eax + 0x18], xmm1
movsd qword [eax + 0x10], xmm0
movsd xmm0, qword [esi + 0x20]
movsd qword [eax + 0x20], xmm0
movsd xmm0, qword [esi + 0x28]
movsd qword [eax + 0x28], xmm0
mov dword [eax], 0
mov dword [eax + 8], 0
mov dword [eax + 0x30], 0x67b2d0
mov dword [eax + 0x34], 0
mov dword [eax + 0x38], 0
mov dword [eax + 0x3c], 0
movdqu xmm0, xmmword [ecx]
movd edi, xmm0
pshufd xmm1, xmm0, 0x55
add edi, 1
movd edx, xmm1
adc edx, 0
mov dword [ecx], edi
mov dword [ecx + 4], edx
movdqu xmmword [eax + 0x40], xmm0
mov dword [eax + 0x5c], 4
mov dword [eax + 0x60], 0
mov dword [eax + 0x64], 0
mov ecx, dword [esi + 0x38]
mov dword fs:[0], ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, esi
push 0x67b2b4
push 0x67b150
push eax
push 0x46
push 0x67b21c
call fcn.0044a930
add esp, 0x14
jmp 0x40cfb1
mov eax, esi
push 0x67b2b4
push 0x67b150
push eax
push 0x46
push 0x67b21c
call fcn.0044a930
add esp, 0x14
ud2