joyce8/EMBER2024-capa huggingface dataset:
Function at 0x5479b0
Capabilities:
Get common file path

Disassembly:
sub esp, 0x264
mov eax, dword [0x610304]
xor eax, esp
mov dword [esp + 0x260], eax
push esi
mov esi, dword [esp + 0x26c]
lea eax, [esp + 0x58]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
add eax, 0xffffffff
cmp eax, 0x102
ja 0x547a4b
lea ecx, [esp + 0x58]
push ecx
lea ecx, [esp + 8]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 8]
push eax
lea ecx, [esp + 0x44]
call fcn.0054b880
mov ecx, eax
call fcn.0054c070
push eax
mov ecx, esi
call fcn.0054b8b0
lea ecx, [esp + 0x20]
call sub.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_
lea ecx, [esp + 0x3c]
call sub.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_
lea ecx, [esp + 4]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov al, 1
pop esi
mov ecx, dword [esp + 0x260]
xor ecx, esp
call fcn.00584870
add esp, 0x264
ret
mov ecx, dword [esp + 0x264]
pop esi
xor ecx, esp
xor al, al
call fcn.00584870
add esp, 0x264
ret
Function at 0x548620
Capabilities:
Delete directory
Delete file

Disassembly:
sub esp, 0x258
mov eax, dword [0x610304]
xor eax, esp
mov dword [esp + 0x254], eax
push esi
mov esi, dword [esp + 0x260]
cmp dword [esi + 0x14], 0x104
jb 0x54865d
xor al, al
pop esi
mov ecx, dword [esp + 0x254]
xor ecx, esp
call fcn.00584870
add esp, 0x258
ret
push ebx
xor ebx, ebx
cmp byte [esp + 0x268], bl
jne 0x54870a
lea ecx, [esp + 0x28]
call fcn.005612c0
lea eax, [esp + 0x28]
push eax
push esi
call fcn.00547c60
add esp, 8
test al, al
je 0x5486ca
cmp byte [esp + 0x30], bl
je 0x5486ca
cmp dword [esi + 0x18], 8
jb 0x548699
mov esi, dword [esi + 4]
jmp 0x54869c
add esi, 4
push esi
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
lea ecx, [esp + 0x28]
setne bl
call fcn.005612f0
mov al, bl
pop ebx
pop esi
mov ecx, dword [esp + 0x254]
xor ecx, esp
call fcn.00584870
add esp, 0x258
ret
cmp dword [esi + 0x18], 8
jb 0x5486d5
mov eax, dword [esi + 4]
jmp 0x5486d8
lea eax, [esi + 4]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
test eax, eax
lea ecx, [esp + 0x28]
je 0x548705
call fcn.005612f0
pop ebx
mov al, 1
pop esi
mov ecx, dword [esp + 0x254]
xor ecx, esp
call fcn.00584870
add esp, 0x258
ret
call fcn.005612f0
push 0x208
lea ecx, [esp + 0x56]
push ebx
push ecx
mov word [esp + 0x5c], bx
call sub.MSVCR80.dll_memset
add esp, 0xc
cmp dword [esi + 0x18], 8
jb 0x54872d
mov ecx, dword [esi + 4]
jmp 0x548730
lea ecx, [esi + 4]
lea edx, [esp + 0x50]
movzx eax, word [ecx]
mov word [edx], ax
add ecx, 2
add edx, 2
cmp ax, bx
jne 0x548734
xor eax, eax
cmp byte [esp + 0x268], bl
lea edx, [esp + 0x50]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], eax
mov dword [esp + 8], ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov word [esp + 0x24], ax
mov dword [esp + 0xc], 3
mov dword [esp + 0x10], edx
mov word [esp + 0x18], 0x414
jne 0x54878f
mov word [esp + 0x18], 0x1494
lea eax, [esp + 8]
push eax
call dword [sym.imp.SHELL32.dll_SHFileOperationW]
cmp dword [esp + 0x1a], ebx
je 0x5487b9
pop ebx
xor al, al
pop esi
mov ecx, dword [esp + 0x254]
xor ecx, esp
call fcn.00584870
add esp, 0x258
ret
cmp eax, ebx
je 0x5487e2
cmp eax, 2
je 0x5487e2
cmp eax, 0x402
je 0x5487e2
pop ebx
xor eax, eax
pop esi
mov ecx, dword [esp + 0x254]
xor ecx, esp
call fcn.00584870
add esp, 0x258
ret
mov ecx, dword [esp + 0x25c]
pop ebx
pop esi
xor ecx, esp
mov eax, 1
call fcn.00584870
add esp, 0x258
ret
Function at 0x548dd0
Capabilities:
Get common file path

Disassembly:
sub esp, 0x2e8
mov eax, dword [0x610304]
xor eax, esp
mov dword [esp + 0x2e4], eax
push ebx
push ebp
mov ebp, dword [esp + 0x2f8]
push esi
mov esi, dword [esp + 0x2f8]
xor ebx, ebx
cmp dword [esi + 0x18], 8
push edi
mov dword [esp + 0x10], ebx
lea edi, [esi + 4]
jb 0x548e09
mov eax, dword [edi]
jmp 0x548e0b
mov eax, edi
lea ecx, [esp + 0xe8]
push ecx
push 0
push 0x5a3f7c
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
test eax, eax
jne 0x548e79
call fcn.005416d0
cmp eax, 1
jg 0x548e71
mov ebx, 1
call sub.KERNEL32.dll_GetLastError
push eax
push ebx
push 0x25e
push str.._file_util_win.cc
lea ecx, [esp + 0x40]
call fcn.005428f0
add eax, 0xc
push str.Failed_to_get_temporary_file_name_in
push eax
call fcn.004701f0
add esp, 8
cmp dword [esi + 0x18], 8
jb 0x548e67
mov edi, dword [edi]
push edi
push eax
call fcn.00541990
add esp, 8
test bl, 1
jmp 0x548f42
push 0x104
lea edx, [esp + 0xec]
push edx
mov eax, edx
push eax
call dword [sym.imp.KERNEL32.dll_GetLongPathNameW]
mov esi, eax
cmp esi, 0x105
ja 0x548ef3
test esi, esi
je 0x548ef3
lea ecx, [esp + 0xcc]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_void_]
push esi
lea ecx, [esp + 0xec]
push ecx
lea ecx, [esp + 0xd4]
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t______thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::assign_wchar_t_const___unsigned_int_]
lea edx, [esp + 0xcc]
push edx
lea ecx, [esp + 0x18]
call fcn.0054b880
push eax
mov ecx, ebp
call fcn.0054b8b0
lea ecx, [esp + 0x14]
call sub.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_
lea ecx, [esp + 0xcc]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov al, 1
jmp 0x548f4f
call fcn.005416d0
cmp eax, 1
jg 0x548f3f
mov ebx, 2
call sub.KERNEL32.dll_GetLastError
push eax
push 1
push 0x264
push str.._file_util_win.cc
lea ecx, [esp + 0x40]
call fcn.005428f0
lea ecx, [esp + 0xe8]
push ecx
add eax, 0xc
push str.Failed_to_get_long_path_name_for
push eax
call fcn.004701f0
add esp, 8
push eax
call fcn.00541990
add esp, 8
test bl, 2
je 0x548f4d
lea ecx, [esp + 0x30]
call fcn.00542950
xor al, al
mov ecx, dword [esp + 0x2f4]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00584870
add esp, 0x2e8
ret
Function at 0x55be50
Capabilities:
Check os version
Get system information on windows

Disassembly:
sub esp, 0x148
mov eax, dword [0x610304]
xor eax, esp
mov dword [esp + 0x144], eax
push esi
mov esi, ecx
push edi
mov dword [esi], 0
mov dword [esi + 0x18], 3
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push str.IsWow64Process
push str.kernel32.dll
mov edi, eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x55bebc
lea ecx, [esp + 8]
push ecx
push edi
mov dword [esp + 0x10], 0
call eax
test eax, eax
jne 0x55beb3
mov eax, 2
jmp 0x55bebc
xor eax, eax
cmp dword [esp + 8], eax
setne al
push 0x118
lea edx, [esp + 0x38]
push 0
push edx
mov dword [esi + 0x24], eax
mov dword [esp + 0x3c], 0x11c
call sub.MSVCR80.dll_memset
add esp, 0xc
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
mov eax, dword [esp + 0x34]
cmp eax, 5
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [esi + 4], eax
mov dword [esi + 8], ecx
mov dword [esi + 0xc], edx
jne 0x55bf13
test ecx, ecx
jle 0x55bf41
xor eax, eax
cmp ecx, 1
setne al
add eax, 1
mov dword [esi], eax
jmp 0x55bf41
cmp eax, 6
jne 0x55bf39
cmp byte [esp + 0x14a], 1
jne 0x55bf31
xor edx, edx
test ecx, ecx
setne dl
lea edx, [edx + edx + 3]
mov dword [esi], edx
jmp 0x55bf41
mov dword [esi], 4
jmp 0x55bf41
jle 0x55bf41
mov dword [esi], 5
movzx eax, word [esp + 0x144]
movzx ecx, word [esp + 0x146]
mov dword [esi + 0x10], eax
xor eax, eax
lea edx, [esp + 0xc]
push edx
mov dword [esi + 0x14], ecx
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
call dword [sym.imp.KERNEL32.dll_GetNativeSystemInfo]
movzx eax, word [esp + 0xc]
test eax, eax
je 0x55bfb1
cmp eax, 6
je 0x55bfa8
cmp eax, 9
jne 0x55bfb8
mov dword [esi + 0x18], 1
jmp 0x55bfb8
mov dword [esi + 0x18], 2
jmp 0x55bfb8
mov dword [esi + 0x18], 0
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
mov dword [esi + 0x1c], eax
mov dword [esi + 0x20], ecx
mov ecx, dword [esp + 0x14c]
pop edi
mov eax, esi
pop esi
xor ecx, esp
call fcn.00584870
add esp, 0x148
ret

Function at 0x56ae10
Capabilities:
Clear file content

Disassembly:
sub esp, 8
push esi
mov esi, dword [esp + 0x10]
cmp esi, 0xffffffff
jne 0x56ae24
xor al, al
pop esi
add esp, 8
ret
push edi
mov edi, dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
push 1
lea edx, [esp + 0xc]
push edx
xor ecx, ecx
push ecx
xor eax, eax
push eax
push esi
call edi
test eax, eax
je 0x56ae54
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
push 0
push 0
push eax
push ecx
push esi
call edi
test eax, eax
jne 0x56ae5c
pop edi
xor al, al
pop esi
add esp, 8
ret
push esi
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
test eax, eax
je 0x56ae87
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 8]
push 0
push 0
push edx
push eax
push esi
call edi
test eax, eax
je 0x56ae87
pop edi
mov eax, 1
pop esi
add esp, 8
ret
pop edi
xor eax, eax
pop esi
add esp, 8
ret
Function at 0x573a60
Capabilities:
Query or enumerate registry key

Disassembly:
sub esp, 0xc
push esi
mov esi, ecx
mov ecx, dword [esi]
test ecx, ecx
je 0x573aa2
mov eax, dword [esi + 4]
test eax, eax
jl 0x573aa2
lea edx, [esp + 8]
push edx
push 0
push 0
push 0
lea edx, [esp + 0x14]
push edx
lea edx, [esi + 8]
push edx
push eax
push ecx
mov dword [esp + 0x24], 0x104
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
test eax, eax
jne 0x573aa2
mov al, 1
pop esi
add esp, 0xc
ret
mov word [esi + 8], 0
xor al, al
pop esi
add esp, 0xc
ret

Function at 0x5742ac
Capabilities:
Query or enumerate registry value

Disassembly:
sub esp, 0xa0
push ebx
xor ebx, ebx
push ebp
mov ebp, dword [esp + 0xb0]
mov dword [esp + 8], ebx
cmp dword [0x6553b4], 1
push esi
mov esi, ecx
jne 0x5742e8
call fcn.005416d0
cmp eax, 3
jg 0x5742e8
test ebp, ebp
jne 0x5742e8
push 3
push 0xb8
push str..win_registry.cc
lea ecx, [esp + 0x24]
lea ebx, [ebp + 1]
call fcn.005420d0
add eax, 4
push str.Check_failed:_value.
push eax
call fcn.004701f0
add esp, 8
test bl, 1
je 0x5742f6
lea ecx, [esp + 0x18]
call fcn.00542670
lea eax, [esp + 0x10]
push eax
mov eax, dword [esp + 0xb4]
lea ecx, [esp + 0x10]
push ecx
mov ecx, dword [esi]
lea edx, [esp + 0x1c]
push edx
push 0
push eax
push ecx
mov dword [esp + 0x2c], 4
mov dword [esp + 0x28], 4
mov dword [esp + 0x24], 0
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x574361
mov ecx, dword [esp + 0x14]
cmp ecx, 4
je 0x574342
cmp ecx, 3
jne 0x57435c
cmp dword [esp + 0x10], 4
jne 0x57435c
mov edx, dword [esp + 0xc]
pop esi
mov dword [ebp], edx
pop ebp
pop ebx
add esp, 0xa0
ret 8
mov eax, 0x3f4
pop esi
pop ebp
pop ebx
add esp, 0xa0
ret 8

Function at 0x5747d0
Capabilities:
Set thread local storage value

Disassembly:
sub esp, 0x98
mov eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0x9c]
mov edx, dword [ecx]
push ebx
push eax
xor ebx, ebx
push edx
mov dword [esp + 0xc], ebx
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
test eax, eax
jne 0x574839
call fcn.005416d0
cmp eax, 4
jg 0x57482b
push 4
push 0x24
push str.._threading_thread_local_win.cc
lea ecx, [esp + 0x14]
mov ebx, 1
call fcn.005420d0
add eax, 4
push str.Failed_to_TlsSetValue__.
push eax
call fcn.004701f0
add esp, 8
test bl, 1
je 0x574839
lea ecx, [esp + 8]
call fcn.00542670
pop ebx
add esp, 0x98
ret

Function at 0x574870
Capabilities:
Allocate thread local storage

Disassembly:
sub esp, 0x98
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
cmp eax, 0xffffffff
mov ecx, dword [esp + 0x9c]
mov dword [ecx], eax
mov dword [esp], 0xffffffff
jne 0x5748c2
push str.slot_____DWORD_0xFFFFFFFF_
lea eax, [esp + 4]
push eax
push ecx
call fcn.0056d9e0
add esp, 0xc
test eax, eax
je 0x5748c2
push eax
push 0x12
push str.._threading_thread_local_win.cc
lea ecx, [esp + 0x10]
call fcn.00542120
lea ecx, [esp + 4]
call fcn.00542670
add esp, 0x98
ret
Function at 0x583ff4
Capabilities:
Check os version

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0x98
mov eax, dword [0x610304]
xor eax, ebp
mov dword [ebp + 0x74], eax
push esi
mov esi, ecx
call fcn.00583e53
mov eax, 0x400000
push 0x94
mov dword [esi + 8], eax
mov dword [esi + 4], eax
lea eax, [ebp - 0x20]
push 0
push eax
mov dword [esi], 0x3c
mov byte [esi + 0xc], 0
call sub.MSVCR80.dll_memset
add esp, 0xc
lea eax, [ebp - 0x20]
push eax
mov dword [ebp - 0x20], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [ebp - 0x10], 2
jne 0x584043
cmp dword [ebp - 0x1c], 5
jb 0x58405b
jmp 0x584057
cmp dword [ebp - 0x10], 1
jne 0x58405b
cmp dword [ebp - 0x1c], 4
ja 0x584057
jne 0x58405b
cmp dword [ebp - 0x18], 0
jbe 0x58405b
mov byte [esi + 0xc], 1
lea ecx, [esi + 0x18]
mov dword [esi + 0x10], 0x800
mov dword [esi + 0x14], 0x5caad4
call fcn.00444590
test eax, eax
jge 0x58407c
mov byte [0x6562c8], 1
mov ecx, dword [ebp + 0x74]
mov eax, esi
xor ecx, ebp
pop esi
call fcn.00584870
add ebp, 0x78
leave
ret

Function at 0x584295
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call

Disassembly:
cmp dword [0x655f58], 0
push esi
jne 0x584203
call fcn.00584121
test eax, eax
je 0x584246
mov eax, dword [0x655f58]
cmp eax, 1
jne 0x584224
push 0xd
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
test eax, eax
je 0x584246
pop esi
ret
push eax
call dword [0x655f60]
test eax, eax
jne 0x58428e
push 0x40
mov eax, 0x1000
push eax
push eax
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov esi, eax
test esi, esi
jne 0x58424a
xor eax, eax
pop esi
ret
mov eax, dword [esi]
push edi
push dword [0x655f58]
call dword [0x655f60]
mov edi, eax
test edi, edi
je 0x584271
push 0x8000
push 0
push esi
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov eax, edi
jmp 0x58428d
lea edi, [esi + 0xff0]
push esi
push dword [0x655f58]
call dword [0x655f5c]
add esi, 0x10
cmp esi, edi
jb 0x584277
mov eax, esi
pop edi
pop esi
ret
jmp 0x5841f0

Function at 0x584870
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [0x610304]
jne 0x58487a
repz ret
jmp fcn.0058559a

Function at 0x586290
Capabilities:
Enumerate pe sections

Disassembly:
mov edx, dword [ecx + 4]
push ebx
mov ebx, dword [esp + 8]
push ebp
push esi
push edi
xor edi, edi
xor esi, esi
nop
mov eax, dword [edx + 0x3c]
movzx ecx, word [eax + edx + 6]
add eax, edx
cmp edi, ecx
jae 0x5862da
movzx ecx, word [eax + 0x14]
add ecx, esi
lea eax, [ecx + eax + 0x18]
test eax, eax
je 0x5862da
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x5862c9
add ecx, edx
cmp ecx, ebx
ja 0x5862d2
mov ebp, dword [eax + 8]
add ebp, ecx
cmp ebp, ebx
ja 0x5862dc
add edi, 1
add esi, 0x28
jmp 0x5862a0
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
ret 4
Function at 0x5862f0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 8
push ebx
mov ebx, dword [esp + 0x14]
test ebx, ebx
push esi
mov esi, ecx
jne 0x586309
pop esi
xor al, al
pop ebx
add esp, 8
ret 8
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 0x3c]
mov edx, dword [esi]
mov edx, dword [edx]
add eax, ecx
mov eax, dword [eax + 0x78]
push edi
push eax
mov ecx, esi
call edx
mov edi, eax
test edi, edi
mov dword [esp + 0xc], edi
jne 0x586333
pop edi
pop esi
xor al, al
pop ebx
add esp, 8
ret 8
mov eax, dword [esp + 0x18]
cmp eax, 0xffff
push ebp
ja 0x58634e
pop ebp
pop edi
mov word [ebx], ax
pop esi
mov al, 1
pop ebx
add esp, 8
ret 8
mov ecx, dword [edi + 0x20]
mov eax, dword [esi]
mov edx, dword [eax]
push ecx
mov ecx, esi
call edx
mov ecx, dword [edi + 0x18]
lea ebp, [eax + ecx*4]
cmp eax, ebp
mov dword [esp + 0x14], eax
mov ebx, eax
je 0x5863be
lea ebx, [ebx]
mov eax, ebp
sub eax, ebx
sar eax, 2
cdq
sub eax, edx
mov edx, dword [esi]
mov edx, dword [edx]
sar eax, 1
lea edi, [ebx + eax*4]
mov eax, dword [edi]
push eax
mov ecx, esi
call edx
mov ecx, dword [esp + 0x1c]
mov dl, byte [ecx]
test dl, dl
je 0x5863a5
cmp dl, byte [eax]
jne 0x5863a5
mov dl, byte [ecx + 1]
add ecx, 1
add eax, 1
test dl, dl
jne 0x586394
movzx edx, byte [eax]
movzx eax, byte [ecx]
sub eax, edx
je 0x5863ca
test eax, eax
jle 0x5863b8
lea ebx, [edi + 4]
jmp 0x5863ba
mov ebp, edi
cmp ebx, ebp
jne 0x586370
pop ebp
pop edi
pop esi
xor al, al
pop ebx
add esp, 8
ret 8
mov ebx, dword [esp + 0x10]
mov ecx, dword [ebx + 0x24]
mov eax, dword [esi]
mov edx, dword [eax]
push ecx
mov ecx, esi
call edx
sub edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
sar edi, 2
mov ax, word [eax + edi*2]
add ax, word [ebx + 0x10]
pop ebp
pop edi
pop esi
mov word [ecx], ax
mov al, 1
pop ebx
add esp, 8
ret 8
Function at 0x5862fa
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 8
push ebx
mov ebx, dword [esp + 0x14]
test ebx, ebx
push esi
mov esi, ecx
jne 0x586309
pop esi
xor al, al
pop ebx
add esp, 8
ret 8
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 0x3c]
mov edx, dword [esi]
mov edx, dword [edx]
add eax, ecx
mov eax, dword [eax + 0x78]
push edi
push eax
mov ecx, esi
call edx
mov edi, eax
test edi, edi
mov dword [esp + 0xc], edi
jne 0x586333
pop edi
pop esi
xor al, al
pop ebx
add esp, 8
ret 8
mov eax, dword [esp + 0x18]
cmp eax, 0xffff
push ebp
ja 0x58634e
pop ebp
pop edi
mov word [ebx], ax
pop esi
mov al, 1
pop ebx
add esp, 8
ret 8
mov ecx, dword [edi + 0x20]
mov eax, dword [esi]
mov edx, dword [eax]
push ecx
mov ecx, esi
call edx
mov ecx, dword [edi + 0x18]
lea ebp, [eax + ecx*4]
cmp eax, ebp
mov dword [esp + 0x14], eax
mov ebx, eax
je 0x5863be
lea ebx, [ebx]
mov eax, ebp
sub eax, ebx
sar eax, 2
cdq
sub eax, edx
mov edx, dword [esi]
mov edx, dword [edx]
sar eax, 1
lea edi, [ebx + eax*4]
mov eax, dword [edi]
push eax
mov ecx, esi
call edx
mov ecx, dword [esp + 0x1c]
mov dl, byte [ecx]
test dl, dl
je 0x5863a5
cmp dl, byte [eax]
jne 0x5863a5
mov dl, byte [ecx + 1]
add ecx, 1
add eax, 1
test dl, dl
jne 0x586394
movzx edx, byte [eax]
movzx eax, byte [ecx]
sub eax, edx
je 0x5863ca
test eax, eax
jle 0x5863b8
lea ebx, [edi + 4]
jmp 0x5863ba
mov ebp, edi
cmp ebx, ebp
jne 0x586370
pop ebp
pop edi
pop esi
xor al, al
pop ebx
add esp, 8
ret 8
mov ebx, dword [esp + 0x10]
mov ecx, dword [ebx + 0x24]
mov eax, dword [esi]
mov edx, dword [eax]
push ecx
mov ecx, esi
call edx
sub edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
sar edi, 2
mov ax, word [eax + edi*2]
add ax, word [ebx + 0x10]
pop ebp
pop edi
pop esi
mov word [ecx], ax
mov al, 1
pop ebx
add esp, 8
ret 8
Function at 0x5868c0
Capabilities:
Query environment variable

Disassembly:
sub esp, 0x40
push ebx
push ebp
push edi
mov edi, dword [esp + 0x50]
test edi, edi
mov dword [esp + 0xc], edi
jne 0x5868d8
mov dword [esp + 0x10], edi
jmp 0x5868ef
mov eax, edi
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x5868e0
sub eax, edx
mov dword [esp + 0x10], eax
lea eax, [esp + 0xc]
push eax
lea ecx, [esp + 0x18]
push ecx
call fcn.00550e40
add esp, 8
cmp dword [eax + 0x18], 8
jb 0x58690c
mov eax, dword [eax + 4]
jmp 0x58690f
add eax, 4
mov ebx, dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
push 0
push 0
push eax
call ebx
lea ecx, [esp + 0x14]
mov ebp, eax
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
test ebp, ebp
jne 0x586937
pop edi
pop ebp
xor al, al
pop ebx
add esp, 0x40
ret 8
cmp dword [esp + 0x54], 0
je 0x5869f7
xor ecx, ecx
mov eax, ebp
mov edx, 2
mul edx
seto cl
push esi
neg ecx
or ecx, eax
push ecx
call fcn.0058432a
add esp, 4
test edi, edi
mov esi, eax
mov dword [esp + 0x10], edi
jne 0x58696e
mov dword [esp + 0x14], edi
jmp 0x586982
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x586973
sub eax, edx
mov dword [esp + 0x14], eax
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x1c]
push ecx
call fcn.00550e40
add esp, 8
cmp dword [eax + 0x18], 8
jb 0x58699f
mov eax, dword [eax + 4]
jmp 0x5869a2
add eax, 4
push ebp
push esi
push eax
call ebx
lea ecx, [esp + 0x18]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
push esi
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x38]
push eax
call fcn.00550dd0
mov ecx, dword [esp + 0x60]
add esp, 8
push eax
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
lea ecx, [esp + 0x34]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x18]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
push esi
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
pop esi
pop edi
pop ebp
mov al, 1
pop ebx
add esp, 0x40
ret 8
Function at 0x401020
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x790
add byte [ecx + 0x42d120], ah
xor eax, ebp

Function at 0x401028
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x790
add byte [ecx + 0x42d120], ah
xor eax, ebp

Function at 0x401078
Capabilities:
Get common file path

Disassembly:
push 0x80
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
adc dword [edx], eax
mov eax, 0x42e3a0

Function at 0x4010e4
Capabilities:
Get common file path

Disassembly:
call esi
add esp, 0x10
push 0x4000
add byte [eax], al
lea eax, [ebp - 0x78c]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_OpenFile]
cmp eax, 0xffffffff
je 0x40118f
push 0x42e3a0
push 0x80
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov eax, 0x42e3a0
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x401120
sub eax, edx
dec eax
push eax
push 0x42e3a0
call fcn.0040e87e
push 0x421374
push eax
call fcn.0040e634
add esp, 0x10
test eax, eax
je 0x401162
mov edi, 0x42e3a0
dec edi
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x401150
mov cx, word [0x421374]
mov word [edi], cx
mov edx, dword [ebp - 0x790]
push edx
push 0x42e3a0
push str._s_s
push ebx
call esi
add esp, 0x10
call fcn.0040d260
test eax, eax
jne 0x401258

Function at 0x4010ec
Capabilities:
Get common file path

Disassembly:
call esi
add esp, 0x10
push 0x4000
add byte [eax], al
lea eax, [ebp - 0x78c]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_OpenFile]
cmp eax, 0xffffffff
je 0x40118f
push 0x42e3a0
push 0x80
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov eax, 0x42e3a0
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x401120
sub eax, edx
dec eax
push eax
push 0x42e3a0
call fcn.0040e87e
push 0x421374
push eax
call fcn.0040e634
add esp, 0x10
test eax, eax
je 0x401162
mov edi, 0x42e3a0
dec edi
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x401150
mov cx, word [0x421374]
mov word [edi], cx
mov edx, dword [ebp - 0x790]
push edx
push 0x42e3a0
push str._s_s
push ebx
call esi
add esp, 0x10
call fcn.0040d260
test eax, eax
jne 0x401258