joyce8/EMBER2024-capa huggingface dataset:
Function at 0x467dc4
Capabilities:
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4a853d
mov eax, dword fs:[0]
push eax
mov eax, 0x201c
call fcn.00476f10
mov eax, dword [0x5025d4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebp + 8]
xor ebx, ebx
mov eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
mov esi, dword [ebp + 0x14]
mov dword [ebp - 0x201c], edi
mov dword [ebp - 0x2024], eax
cmp dword [ecx + 0x58], ebx
je 0x467ef5
push ebx
push edx
call fcn.00467f42
mov ebx, eax
test ebx, ebx
jne 0x467e2c
push esi
jmp 0x467f1d
lea ecx, [ebp - 0x2014]
call fcn.0042d8d0
xor ecx, ecx
lea eax, [ebp - 0x2018]
push eax
push ecx
lea eax, [ebp - 0x2020]
mov dword [ebp - 4], ecx
push eax
push ecx
push dword [ebp - 0x2024]
mov dword [ebp - 0x2020], ecx
push ebx
mov dword [ebp - 0x2018], ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov dword [ebp - 0x201c], eax
test eax, eax
jne 0x467eb4
mov eax, dword [ebp - 0x2018]
lea ecx, [ebp - 0x2014]
shr eax, 1
push eax
call fcn.0042d550
lea ecx, [ebp - 0x2018]
push ecx
push eax
lea eax, [ebp - 0x2020]
push eax
push 0
push dword [ebp - 0x2024]
push ebx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push 0xffffffffffffffff
lea ecx, [ebp - 0x2014]
mov dword [ebp - 0x201c], eax
call fcn.00440e40
push ebx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 0x201c], 0
jne 0x467ee2
mov esi, dword [ebp - 0x2014]
add esi, 0xfffffff0
push esi
call fcn.00441180
pop ecx
add eax, 0x10
mov ecx, esi
mov dword [edi], eax
call fcn.0042d8b0
jmp 0x467f24
push esi
mov ecx, edi
call fcn.0042d780
mov ecx, dword [ebp - 0x2014]
lea ecx, [ecx - 0x10]
jmp 0x467edb
test esi, esi
jne 0x467efe
mov esi, 0x4b5248
push dword [ecx + 0x6c]
lea ecx, [ebp - 0x2010]
push 0x1000
push ecx
push esi
push eax
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x2010]
push eax
mov ecx, edi
call fcn.0042d780
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004765d5
leave
ret 0x10

Function at 0x468fa5
Capabilities:
Get graphical window text

Disassembly:
push ebp
mov ebp, esp
push esi
mov esi, dword [ebp + 8]
mov ecx, esi
push edi
push dword [ebp + 0xc]
call fcn.0046904e
cmp dword [esi], 0
mov edi, eax
mov dword [esi + 0xc], 1
je 0x468fed
push edi
call dword [sym.imp.USER32.dll_GetWindowTextLengthW]
lea ecx, [eax + 1]
push ecx
mov ecx, dword [ebp + 0x10]
push eax
call fcn.00440df0
push eax
push edi
call dword [sym.imp.USER32.dll_GetWindowTextW]
mov ecx, dword [ebp + 0x10]
push 0xffffffffffffffff
call fcn.00440e40
jmp 0x468ff8
mov eax, dword [ebp + 0x10]
push dword [eax]
push edi
call fcn.0046d2d4
pop edi
pop esi
pop ebp
ret 0xc
Function at 0x46cb39
Capabilities:
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
xor ebx, ebx
xor eax, eax
mov dword [ebp - 8], ecx
inc eax
inc ebx
mov dword [ebp - 4], eax
cmp dword [edi + 8], ebx
jle 0x46cbb0
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x46cb76
mov eax, dword [ecx + 0x10]
cmp dword [eax + ebx*8 + 4], edx
je 0x46cb76
mov eax, dword [edi + 0xc]
cmp dword [eax + ebx*4], 0
je 0x46cba3
xor eax, eax
mov dword [ebp - 4], eax
jmp 0x46cba6
mov eax, dword [edi + 0xc]
mov eax, dword [eax + ebx*4]
mov dword [ebp - 0xc], eax
test eax, eax
je 0x46cb9c
mov eax, dword [eax]
push 1
mov esi, dword [eax]
mov ecx, esi
call dword [0x4ab540]
mov ecx, dword [ebp - 0xc]
call esi
mov ecx, dword [ebp - 8]
mov edx, dword [ebp + 0xc]
mov eax, dword [edi + 0xc]
and dword [eax + ebx*4], 0
mov eax, dword [ebp - 4]
inc ebx
cmp ebx, dword [edi + 8]
jl 0x46cb59
test eax, eax
je 0x46cbf7
lea esi, [ecx + 0x1c]
mov ebx, edi
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [ebp - 8]
push edi
add ecx, 0x14
call fcn.0046ce28
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push dword [ebx + 0xc]
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov eax, dword [edi]
push 1
mov esi, dword [eax]
mov ecx, esi
call dword [0x4ab540]
mov ecx, edi
call esi
mov eax, dword [ebp - 8]
push 0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
pop edi
pop esi
pop ebx
leave
ret 8
Function at 0x46ce7b
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push 0x10
mov eax, 0x4a89d6
call fcn.00476d6d
mov ebx, ecx
mov dword [ebp - 0x18], ebx
lea eax, [ebx + 0x1c]
push eax
mov dword [ebp - 0x14], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edi, dword [ebp + 8]
test edi, edi
jle 0x46cf72
cmp edi, dword [ebx + 0xc]
jge 0x46cf72
push dword [ebx]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
test esi, esi
je 0x46ced2
cmp edi, dword [esi + 8]
jl 0x46cf60
cmp dword [ebp + 0xc], 0
je 0x46cf60
xor edi, edi
jmp 0x46cf04
xor edi, edi
push 0x10
mov dword [ebp - 4], edi
call fcn.0046c938
mov esi, eax
test esi, esi
je 0x46ceec
mov dword [esi], vtable.CThreadData.0
jmp 0x46ceee
mov esi, edi
or dword [ebp - 4], 0xffffffff
mov dword [esi + 8], edi
mov dword [esi + 0xc], edi
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x14]
mov dword [esi + eax], ecx
mov dword [ebx + 0x14], esi
push 4
push dword [ebx + 0xc]
call fcn.0045b51f
cmp dword [esi + 0xc], 0
pop ecx
pop ecx
jne 0x46cf20
push eax
push edi
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
jmp 0x46cf2c
push 2
push eax
push dword [esi + 0xc]
call dword [sym.imp.KERNEL32.dll_LocalReAlloc]
mov edx, eax
test edx, edx
je 0x46cf99
mov ecx, dword [esi + 8]
mov dword [esi + 0xc], edx
mov eax, dword [ebx + 0xc]
sub eax, ecx
shl eax, 2
push eax
lea eax, [edx + ecx*4]
push edi
push eax
call fcn.00478aa0
mov eax, dword [ebx + 0xc]
add esp, 0xc
mov dword [esi + 8], eax
push esi
push dword [ebx]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov edi, dword [ebp + 8]
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x46cf72
cmp edi, dword [esi + 8]
jge 0x46cf72
mov eax, dword [ebp + 0xc]
mov dword [ecx + edi*4], eax
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.00476cd2
ret 8
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.0045b9ac
int3
Function at 0x4773c0
Capabilities:
Parse pe header

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

Function at 0x48d649
Capabilities:
Set environment variable

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
pop ebp
jmp fcn.0048d2c6

Function at 0x493d50
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
mov ecx, 0x5a4d
cmp word [eax], cx
jne 0x493d7d
mov ecx, dword [eax + 0x3c]
add ecx, eax
cmp dword [ecx], 0x4550
jne 0x493d7d
mov edx, 0x10b
xor eax, eax
cmp word [ecx + 0x18], dx
sete al
pop ebp
ret
xor eax, eax
pop ebp
ret
Function at 0x40610d
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x50
pushal
call 0x40611c
pop dword [ebp - 0x40]
mov eax, 0xf3575122
add eax, 0xce90ffa
sub dword [ebp - 0x40], eax
mov dword [ebp - 0x50], 0x124a63ab
add dword [ebp - 0x50], 0x3c07e1a0
mov dword [ebp - 0x4c], 0x3760d40d
sub dword [ebp - 0x4c], 0x52d87c8
mov dword [ebp - 0x48], 0x485b36e4
sub dword [ebp - 0x48], 0xfc0ef2b6
mov dword [ebp - 0x44], 0xd3be9318
sub dword [ebp - 0x44], 0xd3be9318
lea eax, [ebp - 0x50]
push eax
mov eax, 0x8813ec6f
add eax, 0x782c83f1
add eax, dword [ebp - 0x40]
call dword [eax]
mov dword [ebp - 0x50], 0xdaf3dc3f
sub dword [ebp - 0x50], 0x668172e9
mov dword [ebp - 0x4c], 0x6f469c9b
sub dword [ebp - 0x4c], 0x2dda3b26
mov dword [ebp - 0x48], 0x33f58c02
sub dword [ebp - 0x48], 0xd0861f96
mov dword [ebp - 0x44], 0xe2b94deb
add dword [ebp - 0x44], 0x1d46b215
lea ebx, [ebp - 0x50]
push ebx
push eax
mov eax, 0x410ff635
add eax, 0xbf307acb
add eax, dword [ebp - 0x40]
call dword [eax]
push 0x40
push 0x1000
push 0x39153
push 0
call eax
mov ecx, 0xc8591fdc
sub ecx, 0xc858cdf6
mov edi, eax
mov esi, 0xf9611e3d
sub esi, 0xf9201e3d
add esi, dword [ebp - 0x40]
mov ebx, 0xf1a70d66
sub ebx, 0xe5619e6
mov dword [ebp - 0x3c], 0x2e07bec0
mov edx, dword [esi]
add dword [ebp - 0x18], ebx
add edx, ebx
mov dword [ebp - 0x30], 0xaa453f88
mov dword [edi], edx
xor dword [ebp - 0x2c], 0xb0c1113
add edi, 0x8cd4b307
add edi, 0x732b4cfd
add esi, 0xe213f6a9
add esi, 0x1dec095b
loop 0x40623e
add eax, 0x560afc38
sub eax, 0x5609c1cd
xor ebx, ebx
add ebx, eax
add eax, 5
mov ecx, 0xc3f21f0c
add ecx, 0x3c4de0f4
add ecx, dword [ebp - 0x40]
call ebx
leave
ret

Function at 0x4065b0
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [0x40c17c]
jne 0x4065ba
repz ret
jmp fcn.00406941
Function at 0x401280
Capabilities:
Check if file exists
Create directory
Get common file path
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x432dff
mov eax, dword fs:[0]
push eax
sub esp, 0x218
mov eax, dword [0x4430a4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebp + 8]
lea ecx, [ebp - 0x21c]
mov dword [ebp - 0x224], edi
mov dword [ebp - 0x220], 0
call dword [sym.imp.mfc140u.dll_Ordinal_296]
mov ecx, edi
mov dword [ebp - 4], 1
call dword [sym.imp.mfc140u.dll_Ordinal_296]
push 0
lea eax, [ebp - 0x218]
mov dword [ebp - 0x220], 1
push eax
push 0x104
call fcn.0042c020
add esp, 0xc
test eax, eax
lea eax, [ebp - 0x218]
jne 0x401343
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
lea ecx, [ebp - 0x21c]
test eax, eax
jne 0x401323
push 0x437700
jmp 0x40134a
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_wchar_t_1_::operator]
push 0x437708
lea ecx, [ebp - 0x21c]
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_wchar_t_1_::Append]
jmp 0x401350
push eax
lea ecx, [ebp - 0x21c]
call dword [sym.imp.mfc140u.dll_ATL::CSimpleStringT_wchar_t_1_::operator]
mov esi, 1
lea ecx, [ebp - 0x21c]
push esi
call dword [sym.imp.mfc140u.dll_Ordinal_1663]
push eax
push str._sNPSCN_d
push edi
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__2]
add esp, 0x10
mov ecx, edi
call dword [sym.imp.mfc140u.dll_Ordinal_1663]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4013d1
mov ebx, dword [sym.imp.SHLWAPI.dll_PathIsDirectoryEmptyW]
nop dword [eax]
mov ecx, edi
call dword [sym.imp.mfc140u.dll_Ordinal_1663]
push eax
call ebx
test eax, eax
jne 0x4013d1
inc esi
lea ecx, [ebp - 0x21c]
push esi
call dword [sym.imp.mfc140u.dll_Ordinal_1663]
push eax
push str._sNPSCN_d
push edi
call dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__2]
add esp, 0x10
mov ecx, edi
call dword [sym.imp.mfc140u.dll_Ordinal_1663]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x401390
push 0
mov ecx, edi
call dword [sym.imp.mfc140u.dll_Ordinal_1663]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
lea ecx, [ebp - 0x21c]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0042d3e0
mov esp, ebp
pop ebp
ret
Function at 0x402fb0
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x43317c
mov eax, dword fs:[0]
push eax
sub esp, 0x1c
push ebx
push esi
push edi
mov eax, dword [0x4430a4]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
lea eax, [ebp - 0x28]
mov dword [ebp - 0x28], 8
push eax
mov dword [ebp - 0x24], 0xff
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
mov ecx, ebx
call sub.mfc140u.dll_CWinApp::InitInstance
push 0
call sub.mfc140u.dll_AfxEnableControlContainer
push 0xc
call fcn.0042d3a2
add esp, 8
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 0
test eax, eax
je 0x403023
mov ecx, eax
call sub.mfc140u.dll_CShellManager::CShellManager
mov edi, eax
jmp 0x403025
xor edi, edi
push str.Local_AppWizard_Generated_Applications
mov ecx, ebx
mov dword [ebp - 4], 0xffffffff
call sub.mfc140u.dll_CWinApp::SetRegistryKey
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
lea ecx, [ebp - 0x14]
push ecx
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov esi, eax
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x18], esi
call dword [sym.imp.mfc140u.dll_Ordinal_296]
lea ecx, [ebp - 0x1c]
mov dword [ebp - 4], 1
call dword [sym.imp.mfc140u.dll_Ordinal_296]
cmp dword [ebp - 0x14], 3
mov byte [ebp - 4], 2
jl 0x40311f
push dword [esi + 8]
call dword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll__wtoi]
add esp, 4
mov dword [ebp - 0x10], eax
test eax, eax
je 0x40311f
mov ecx, dword [esi + 4]
mov esi, str._getScannerList
mov edx, ecx
mov ax, word [edx]
cmp ax, word [esi]
jne 0x4030bc
test ax, ax
je 0x4030b8
mov ax, word [edx + 2]
cmp ax, word [esi + 2]
jne 0x4030bc
add edx, 4
add esi, 4
test ax, ax
jne 0x403096
xor eax, eax
jmp 0x4030c1
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4030d1
push dword [ebp - 0x10]
mov ecx, ebx
call fcn.00402f30
jmp 0x403112
mov eax, str._doScan
mov dx, word [ecx]
cmp dx, word [eax]
jne 0x4030fc
test dx, dx
je 0x4030f8
mov dx, word [ecx + 2]
cmp dx, word [eax + 2]
jne 0x4030fc
add ecx, 4
add eax, 4
test dx, dx
jne 0x4030d6
xor eax, eax
jmp 0x403101
sbb eax, eax
or eax, 1
test eax, eax
jne 0x403112
push dword [ebp - 0x18]
mov ecx, ebx
push dword [ebp - 0x10]
call fcn.00402d40
test edi, edi
je 0x40311f
mov eax, dword [edi]
mov ecx, edi
push 1
call dword [eax + 4]
lea ecx, [ebp - 0x1c]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
lea ecx, [ebp - 0x20]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x4078a0
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x432e30
mov eax, dword fs:[0]
push eax
push ebx
push esi
push edi
mov eax, dword [0x4430a4]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov edx, dword [ebp + 0xc]
mov ebx, dword [edx + 8]
movzx eax, bl
xor eax, 0x811c9dc5
imul esi, eax, 0x1000193
mov eax, ebx
shr eax, 8
movzx eax, al
xor esi, eax
mov eax, ebx
imul ecx, esi, 0x1000193
shr eax, 0x10
movzx eax, al
shr ebx, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
mov ecx, dword [edi + 0x18]
xor eax, ebx
imul eax, eax, 0x1000193
and ecx, eax
lea esi, [ecx*8]
mov ecx, dword [edi + 0xc]
add ecx, esi
cmp dword [ecx + 4], edx
jne 0x407939
cmp dword [ecx], edx
jne 0x407931
mov eax, dword [edi + 4]
mov dword [ecx], eax
mov ecx, dword [edi + 0xc]
mov eax, dword [edi + 4]
mov dword [ecx + esi + 4], eax
jmp 0x407941
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
jmp 0x407941
cmp dword [ecx], edx
jne 0x407941
mov eax, dword [edx]
mov dword [ecx], eax
mov eax, dword [edx + 4]
mov esi, dword [edx]
mov dword [eax], esi
mov ecx, dword [edx]
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
dec dword [edi + 8]
push 0x10
push edx
call fcn.0042d3d2
mov eax, dword [ebp + 8]
add esp, 8
mov dword [eax], esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
Function at 0x41cd80
Capabilities:
Check if file exists
Create directory
Get file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push esi
push edi
mov edi, ecx
mov edx, dword [edi]
mov esi, dword [edx]
lea eax, [esi + 1]
mov dword [edx], eax
test esi, esi
jne 0x41cdb9
mov eax, dword [ebp + 8]
movzx eax, word [eax]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_iswalpha]
add esp, 4
test eax, eax
je 0x41cdb9
mov eax, dword [ebp + 8]
cmp word [eax + 2], 0x3a
je 0x41cec3
mov eax, dword [ebp + 0xc]
xor ecx, ecx
mov word [eax], cx
mov eax, dword [edi + 4]
mov eax, dword [eax]
cmp cx, word [eax]
je 0x41cecd
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x41cde3
test al, 0x10
jne 0x41ceb8
mov eax, dword [edi + 4]
xor ecx, ecx
mov eax, dword [eax]
cmp cx, word [eax]
je 0x41cee8
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push 0x446e4c
push 0x4068e0
push 0x446e48
mov esi, eax
call sub.MSVCP140.dll_int___cdecl_std::_Execute_once_struct_std::once_flag___int____stdcall___void___void___void_____void__
add esp, 0xc
test esi, esi
je 0x41ce25
mov dword [ebp - 8], 0
test eax, eax
je 0x41ce29
jmp 0x41ce38
test eax, eax
jne 0x41ce2f
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_terminate]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 8], eax
lea eax, [ebp - 8]
mov dword [ebp - 4], 0x446e4c
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x10], eax
test ecx, ecx
je 0x41ceb8
push 0x446e40
push 0x4068c0
push 0x446e3c
mov dword [ebp - 8], 0
mov dword [ebp - 4], 0
call sub.MSVCP140.dll_int___cdecl_std::_Execute_once_struct_std::once_flag___int____stdcall___void___void___void_____void__
add esp, 0xc
test eax, eax
jne 0x41ce80
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_terminate]
mov ecx, dword [ebp - 0x10]
lea edx, [ebp - 8]
mov dword [ebp - 8], 0x11
mov dword [ebp - 4], 0x446e40
push edx
mov eax, dword [ecx]
push dword [ebp - 0x14]
mov eax, dword [eax + 0x14]
call eax
test al, al
jne 0x41ceb8
mov ecx, dword [ebp - 4]
lea edx, [ebp - 0x14]
push dword [ebp - 8]
push edx
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
test al, al
je 0x41cf03
mov eax, dword [ebp + 0xc]
mov ecx, 0x5c
mov word [eax], cx
pop edi
mov al, 1
pop esi
mov esp, ebp
pop ebp
ret 8
push str.DirectoryExists:_empty_path
lea ecx, [ebp - 0x18]
call fcn.0041aa00
push 0x43fb94
lea eax, [ebp - 0x18]
push eax
call sub.VCRUNTIME140.dll__CxxThrowException
push str.DirectoryCreate:_empty_path
lea ecx, [ebp - 0xc]
call fcn.0041aa00
push 0x43fb94
lea eax, [ebp - 0xc]
push eax
call sub.VCRUNTIME140.dll__CxxThrowException
push str.DirectoryCreateRecursively:_cannot_create_directory
lea ecx, [ebp - 0x24]
call fcn.0041aa00
push 0x43fb94
lea eax, [ebp - 0x24]
push eax
call sub.VCRUNTIME140.dll__CxxThrowException
int3
Function at 0x41dec0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x614
mov eax, dword [0x4430a4]
xor eax, ebp
mov dword [ebp - 4], eax
push edi
mov edi, dword [ebp + 8]
mov eax, edi
cmp dword [edi + 0x14], 8
jb 0x41dee1
mov eax, dword [edi]
xor ecx, ecx
mov dword [edi + 0x10], 0
push 0x408
mov word [eax], cx
lea eax, [ebp - 0x614]
push ecx
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea eax, [ebp - 0x614]
push eax
push 0
push 0
push 0x1a
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
jns 0x41df2c
xor al, al
pop edi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0042d3e0
mov esp, ebp
pop ebp
ret
push esi
mov esi, dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x614]
push str.Nitro
push eax
call esi
push 0x438970
lea eax, [ebp - 0x614]
push eax
call esi
push 0x438978
lea eax, [ebp - 0x614]
push eax
call esi
lea ecx, [ebp - 0x614]
lea edx, [ecx + 2]
pop esi
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41df67
sub ecx, edx
lea eax, [ebp - 0x614]
sar ecx, 1
push ecx
push eax
mov ecx, edi
call fcn.00420080
cmp dword [edi + 0x14], 8
mov eax, edi
jb 0x41df8f
mov eax, dword [edi]
push dword [edi + 0x10]
push eax
call fcn.0041db60
push 0x208
lea eax, [ebp - 0x20c]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0x14
mov eax, edi
cmp dword [edi + 0x14], 8
jb 0x41dfb8
mov eax, dword [edi]
push 0x104
lea ecx, [ebp - 0x20c]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetShortPathNameW]
test eax, eax
je 0x41dffe
cmp eax, 0x104
jae 0x41dffe
lea edx, [ebp - 0x20c]
lea ecx, [edx + 2]
nop
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x41dfe0
sub edx, ecx
lea eax, [ebp - 0x20c]
sar edx, 1
mov ecx, edi
push edx
push eax
call fcn.00420080
mov ecx, dword [ebp - 4]
mov al, 1
xor ecx, ebp
pop edi
call fcn.0042d3e0
mov esp, ebp
pop ebp
ret
Function at 0x421730
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [ebp + 0xc]
cmp dword [eax + 0x1c], 0x10
push ebx
mov ebx, dword [eax + 0x18]
push esi
lea esi, [eax + 8]
mov dword [ebp - 4], ecx
push edi
jb 0x42174b
mov esi, dword [esi]
xor edx, edx
mov edi, 0x811c9dc5
test ebx, ebx
je 0x421767
movzx ecx, byte [edx + esi]
inc edx
xor ecx, edi
imul edi, ecx, 0x1000193
cmp edx, ebx
jb 0x421756
mov edx, dword [ebp - 4]
mov ecx, dword [edx + 0x18]
and ecx, edi
lea edi, [ecx*8]
mov ecx, dword [edx + 0xc]
add ecx, edi
mov esi, dword [ecx]
cmp dword [ecx + 4], eax
jne 0x42179f
cmp esi, eax
jne 0x421797
mov eax, dword [edx + 4]
mov dword [ecx], eax
mov ecx, dword [edx + 0xc]
mov eax, dword [edx + 4]
mov dword [edi + ecx + 4], eax
jmp 0x4217a7
mov eax, dword [eax + 4]
mov dword [ecx + 4], eax
jmp 0x4217a7
cmp esi, eax
jne 0x4217aa
mov eax, dword [eax]
mov dword [ecx], eax
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
lea ecx, [edx + 4]
push eax
push esi
call fcn.004217d0
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8

Function at 0x421ce0
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, dword [ebp + 0xc]
push esi
push edi
mov dword [ebp - 4], ecx
mov esi, ebx
cmp dword [ebx + 0x14], 0x10
mov edi, dword [ebx + 0x10]
jb 0x421cfa
mov esi, dword [ebx]
xor ecx, ecx
mov edx, 0x811c9dc5
test edi, edi
je 0x421d16
movzx eax, byte [ecx + esi]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, edi
jb 0x421d05
mov edi, dword [ebp - 4]
mov eax, dword [edi + 0x18]
mov ecx, dword [edi + 0xc]
and eax, edx
mov edi, dword [edi + 4]
mov edx, dword [ecx + eax*8]
lea eax, [eax*8 + 4]
add eax, ecx
mov dword [ebp + 0xc], edx
mov esi, edx
mov dword [ebp - 4], eax
cmp edx, edi
jne 0x421d40
mov eax, edi
jmp 0x421d44
mov eax, dword [eax]
mov eax, dword [eax]
cmp esi, eax
je 0x421d75
lea eax, [esi + 8]
push ebx
push eax
call fcn.00403500
add esp, 8
test al, al
jne 0x421d63
mov esi, dword [esi]
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 4]
jmp 0x421d38
lea eax, [esi + 8]
push eax
push ebx
call fcn.00403500
add esp, 8
test al, al
cmovne edi, esi
mov eax, dword [ebp + 8]
mov dword [eax], edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
Function at 0x421d90
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0xc]
push ebx
push esi
mov esi, ecx
mov ebx, dword [eax]
movzx eax, bl
xor eax, 0x811c9dc5
imul edx, eax, 0x1000193
mov eax, ebx
shr eax, 8
movzx eax, al
push edi
mov edi, dword [ebp + 8]
xor edx, eax
mov eax, ebx
imul ecx, edx, 0x1000193
mov edx, dword [esi + 0xc]
shr eax, 0x10
movzx eax, al
xor ecx, eax
mov eax, ebx
imul ecx, ecx, 0x1000193
shr eax, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
mov ecx, dword [esi + 0x18]
mov esi, dword [esi + 4]
and ecx, eax
lea eax, [ecx*8]
mov ecx, dword [eax + edx]
add edx, 4
add eax, edx
mov edx, ecx
mov dword [ebp + 0xc], eax
nop word [eax + eax]
cmp edx, esi
jne 0x421e08
mov eax, esi
jmp 0x421e0c
mov eax, dword [eax]
mov eax, dword [eax]
cmp ecx, eax
je 0x421e27
cmp dword [ecx + 8], ebx
je 0x421e1c
mov ecx, dword [ecx]
mov eax, dword [ebp + 0xc]
jmp 0x421e00
mov dword [edi], ecx
mov eax, edi
pop edi
pop esi
pop ebx
pop ebp
ret 8
mov dword [edi], esi
mov eax, edi
pop edi
pop esi
pop ebx
pop ebp
ret 8