joyce8/EMBER2024-capa huggingface dataset:
Function at 0x492f30
Capabilities:
Check if file exists
Create directory
Get file attributes

Disassembly:
sub esp, 0x208
push ebx
mov ebx, dword [esp + 0x210]
test ebx, ebx
push ebp
je 0x492f58
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x492f58
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov ebp, dword [esp + 0x218]
mov cl, byte [ebp]
test cl, cl
je 0x493032
mov eax, ebp
mov edx, ebp
cmp cl, 0x2f
je 0x492f78
cmp cl, 0x5c
jne 0x492f7a
mov eax, edx
mov cl, byte [edx + 1]
inc edx
test cl, cl
jne 0x492f6e
push esi
cmp eax, ebp
push edi
je 0x492fbc
sub eax, ebp
mov esi, ebp
mov ecx, eax
lea edi, [esp + 0x114]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov byte [esp + eax + 0x114], 0
lea eax, [esp + 0x114]
push eax
push ebx
call fcn.00492f30
add esp, 8
test ebx, ebx
mov byte [esp + 0x10], 0
je 0x492fe8
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x10]
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 + 0x10]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
pop edi
cmp eax, 0xffffffff
pop esi
jne 0x493032
lea ecx, [esp + 8]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
pop ebp
pop ebx
add esp, 0x208
ret

Function at 0x4a2d76
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebx
push esi
push edi
xor edi, edi
cmp dword [esp + 0x10], edi
mov ebx, ecx
je 0x4a2db8
call fcn.004a60cd
mov esi, dword [eax + 0xc]
push 0xf0
push dword [esp + 0x14]
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceA]
cmp eax, edi
je 0x4a2db8
push eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
cmp eax, edi
jne 0x4a2daf
xor eax, eax
jmp 0x4a2dc0
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov edi, eax
push edi
mov ecx, ebx
call fcn.004a2dc6
pop edi
pop esi
pop ebx
ret 4
Function at 0x4a3d54
Capabilities:
Extract resource via kernel32 functions

Disassembly:
mov eax, 0x4a79ac
call fcn.00495e20
sub esp, 0x18
push ebx
push esi
mov esi, ecx
push edi
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x1c], esi
mov eax, dword [esi + 0x48]
mov edi, dword [esi + 0x44]
mov dword [ebp - 0x18], eax
call fcn.004a60cd
cmp dword [esi + 0x40], 0
mov ebx, dword [eax + 0xc]
je 0x4a3d93
call fcn.004a60cd
mov ebx, dword [eax + 0xc]
push 5
push dword [esi + 0x40]
push ebx
call dword [sym.imp.KERNEL32.dll_FindResourceA]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov edi, eax
test edi, edi
je 0x4a3da1
push edi
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
jne 0x4a3daf
or eax, 0xffffffff
jmp 0x4a3e97
mov ecx, esi
call fcn.004a3cca
mov dword [ebp - 0x14], eax
call fcn.004a13be
xor edi, edi
cmp dword [ebp - 0x14], edi
mov dword [ebp - 0x20], edi
je 0x4a3de6
push dword [ebp - 0x14]
call dword [sym.imp.USER32.dll_IsWindowEnabled]
test eax, eax
je 0x4a3de6
push edi
push dword [ebp - 0x14]
call dword [sym.imp.USER32.dll_EnableWindow]
mov dword [ebp - 0x20], 1
push esi
mov dword [ebp - 4], edi
call fcn.004a1372
push dword [ebp - 0x14]
call fcn.004a0ea3
push ebx
push eax
push dword [ebp - 0x18]
mov ecx, esi
call fcn.004a3a62
cmp eax, edi
je 0x4a3e59
test byte [esi + 0x24], 0x10
je 0x4a3e27
push 4
mov ecx, esi
pop ebx
call fcn.004a08a3
test ah, 1
je 0x4a3e1f
push 5
pop ebx
push ebx
mov ecx, esi
call fcn.004a2ec8
cmp dword [esi + 0x1c], edi
je 0x4a3e59
push 0x97
push edi
push edi
push edi
push edi
push edi
mov ecx, esi
call fcn.004a08d7
jmp 0x4a3e59
or dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x20], edi
je 0x4a3e6d
push 1
push dword [ebp - 0x14]
call dword [sym.imp.USER32.dll_EnableWindow]
cmp dword [ebp - 0x14], edi
je 0x4a3e86
call dword [sym.imp.USER32.dll_GetActiveWindow]
cmp eax, dword [esi + 0x1c]
jne 0x4a3e86
push dword [ebp - 0x14]
call dword [sym.imp.USER32.dll_SetActiveWindow]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x58]
mov ecx, esi
call fcn.004a3d04
mov eax, dword [esi + 0x2c]
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret

Function at 0x4a5c3f
Capabilities:
Get thread local storage value

Disassembly:
push ebx
push esi
mov esi, ecx
lea ebx, [esi + 0x1c]
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esp + 0x10], 0
jne 0x4a5c6d
push dword [esi]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x4a5c8b
push dword [esp + 0xc]
mov ecx, esi
push eax
call fcn.004a5ba5
jmp 0x4a5c8b
mov eax, dword [esi + 0x14]
test eax, eax
je 0x4a5c8b
push edi
push dword [esp + 0x10]
mov edi, dword [eax + 4]
mov ecx, esi
push eax
call fcn.004a5ba5
test edi, edi
mov eax, edi
jne 0x4a5c75
pop edi
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop esi
pop ebx
ret 8
Function at 0x40b044
Capabilities:
Get geographical location
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffec
push ebx
xor ecx, ecx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x10], ecx
mov ebx, edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.00407b04
xor eax, eax
push ebp
push 0x40b104
push dword fs:[eax]
mov dword fs:[eax], esp
push 4
lea eax, [ebp - 0xc]
push eax
push 3
call sub.kernel32.dll_GetUserDefaultUILanguage
movzx eax, ax
push eax
call sub.kernel32.dll_GetLocaleInfoW
lea eax, [ebp - 0x10]
lea edx, [ebp - 0xc]
mov ecx, 4
call fcn.0040858c
mov ecx, dword [ebp - 0x10]
mov eax, ebx
mov edx, dword [ebp - 4]
call fcn.0040873c
mov eax, dword [ebx]
call fcn.0040aef4
test al, al
jne 0x40b0e1
mov word [ebp - 8], 0
lea eax, [ebp - 0x14]
lea edx, [ebp - 0xc]
mov ecx, 4
call fcn.0040858c
mov ecx, dword [ebp - 0x14]
mov eax, ebx
mov edx, dword [ebp - 4]
call fcn.0040873c
mov eax, dword [ebx]
call fcn.0040aef4
test al, al
jne 0x40b0e1
mov eax, ebx
call fcn.00407a20
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40b10b
lea eax, [ebp - 0x14]
mov edx, 2
call fcn.00407a80
lea eax, [ebp - 4]
call fcn.00407a20
ret

Function at 0x40caa4
Capabilities:
Get system information on windows

Disassembly:
add esp, 0xffffffdc
push esp
call sub.kernel32.dll_GetSystemInfo
mov eax, dword [esp + 0x14]
add esp, 0x24
ret

Function at 0x40e538
Capabilities:
Get common file path

Disassembly:
push ebx
add esp, 0xfffffdf8
mov ebx, eax
push 0x104
lea eax, [esp + 4]
push eax
call sub.kernel32.dll_GetSystemDirectoryW
mov edx, ebx
mov eax, esp
call fcn.0040e524
add esp, 0x208
pop ebx
ret

Function at 0x419680
Capabilities:
Encrypt data using rc4 prga

Disassembly:
cmp eax, edx
je 0x4196d9
test eax, edx
je 0x4196dc
movzx ecx, word [edx]
cmp cx, word [eax]
je 0x419697
movzx eax, word [eax]
sub eax, ecx
jmp 0x4196be
push ebx
mov ebx, dword [eax - 4]
xor ecx, ecx
sub ebx, dword [edx - 4]
push ebx
adc ecx, 0xffffffff
and ecx, ebx
sub ecx, dword [eax - 4]
shl ecx, 1
sub eax, ecx
sub edx, ecx
mov ebx, dword [ecx + eax]
xor ebx, dword [ecx + edx]
jne 0x4196bf
add ecx, 4
js 0x4196af
pop eax
pop ebx
ret
bsf ebx, ebx
shr ebx, 4
add ebx, ebx
add ecx, ebx
jns 0x4196bc
movzx eax, word [ecx + eax]
movzx edx, word [ecx + edx]
sub eax, edx
pop ebx
pop ebx
jmp 0x4196be
xor eax, eax
ret
test eax, eax
je 0x4196e8
test edx, edx
jne 0x419688
mov eax, dword [eax - 4]
ret
sub eax, dword [edx - 4]
ret

Function at 0x41e04c
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffe00
push ebx
push esi
mov esi, ecx
mov ebx, dword [ebp + 8]
push pe_nt_image_headers32
lea ecx, [ebp - 0x200]
push ecx
push edx
push eax
call sub.kernel32.dll_GetLocaleInfoW
test eax, eax
jle 0x41e085
mov ecx, eax
dec ecx
lea edx, [ebp - 0x200]
mov eax, ebx
call fcn.00407ba8
jmp 0x41e08e
mov eax, ebx
mov edx, esi
call fcn.00407e00
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
Function at 0x41e098
Capabilities:
Get geographical location

Disassembly:
push ebx
push esi
push edi
push ecx
mov edi, ecx
mov esi, edx
mov ebx, eax
push 2
lea eax, [esp + 4]
push eax
push esi
push ebx
call sub.kernel32.dll_GetLocaleInfoW
test eax, eax
jle 0x41e0ba
movzx eax, word [esp]
jmp 0x41e0bc
mov eax, edi
pop edx
pop edi
pop esi
pop ebx
ret

Function at 0x41f10c
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffff778
push ebx
push esi
xor ecx, ecx
mov dword [ebp - 4], ecx
xor ecx, ecx
push ebp
push 0x41f231
push dword fs:[ecx]
mov dword fs:[ecx], esp
push 0x400
lea ecx, [ebp - 0x888]
call fcn.0041ef14
mov esi, eax
mov eax, dword [0x4ba6c0]
cmp byte [eax], 0
je 0x41f1d9
mov eax, dword [0x4ba524]
call fcn.00405820
call fcn.00405564
push 0
push 0
push 0
push 0
push esi
lea eax, [ebp - 0x888]
push eax
push 0
push 1
call sub.kernel32.dll_WideCharToMultiByte
mov ebx, eax
push ebx
lea eax, [ebp - 4]
mov ecx, 1
mov edx, dword [0x41f0dc]
call fcn.00409c00
add esp, 4
push 0
push 0
push ebx
mov eax, dword [ebp - 4]
push eax
push esi
lea eax, [ebp - 0x888]
push eax
push 0
push 1
call sub.kernel32.dll_WideCharToMultiByte
push 0
lea eax, [ebp - 8]
push eax
push ebx
mov eax, dword [ebp - 4]
push eax
push 0xfffffffffffffff4
call sub.kernel32.dll_GetStdHandle
push eax
call sub.kernel32.dll_WriteFile
push 0
lea eax, [ebp - 8]
push eax
push 2
push 0x41f24c
push 0xfffffffffffffff4
call sub.kernel32.dll_GetStdHandle
push eax
call sub.kernel32.dll_WriteFile
jmp 0x41f215
push 0x40
lea eax, [ebp - 0x88]
push eax
mov eax, dword [0x4ba4f8]
mov eax, dword [eax + 4]
push eax
mov eax, dword [0x4be634]
call fcn.00409ff0
push eax
call sub.user32.dll_LoadStringW
push 0x2010
lea eax, [ebp - 0x88]
push eax
lea eax, [ebp - 0x888]
push eax
push 0
call sub.user32.dll_MessageBoxW
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x41f238
lea eax, [ebp - 4]
mov edx, dword [0x41f0dc]
call fcn.00409d24
ret
Function at 0x41ffac
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe8
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 4], ebx
mov edi, ecx
mov esi, edx
mov ebx, eax
xor eax, eax
push ebp
push 0x4200ac
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 5], 0
lea eax, [ebp - 4]
mov edx, ebx
call fcn.00407e48
lea eax, [ebp - 4]
call fcn.00407fb0
lea eax, [ebp - 0xc]
push eax
mov eax, dword [ebp - 4]
call fcn.004084ec
push eax
call sub.version.dll_GetFileVersionInfoSizeW
mov ebx, eax
test ebx, ebx
je 0x420096
mov eax, ebx
call fcn.004053f0
mov dword [ebp - 0x10], eax
xor edx, edx
push ebp
push 0x42008f
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 0x10]
push eax
push ebx
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 4]
call fcn.004084ec
push eax
call sub.version.dll_GetFileVersionInfoW
test eax, eax
je 0x420079
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x14]
push eax
push 0x4200c0
mov eax, dword [ebp - 0x10]
push eax
call sub.version.dll_VerQueryValueW
test eax, eax
je 0x420079
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x10]
shr eax, 0x10
movzx eax, ax
mov dword [esi], eax
mov eax, dword [ebp - 0x14]
movzx eax, word [eax + 0x10]
mov dword [edi], eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x14]
shr eax, 0x10
movzx eax, ax
mov edx, dword [ebp + 8]
mov dword [edx], eax
mov byte [ebp - 5], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x420096
mov eax, dword [ebp - 0x10]
call fcn.0040540c
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4200b3
lea eax, [ebp - 4]
call fcn.00407a20
ret

Function at 0x422a44
Capabilities:
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push 0
push ebx
mov ebx, eax
xor eax, eax
push ebp
push 0x422a8a
push dword fs:[eax]
mov dword fs:[eax], esp
lea edx, [ebp - 4]
mov eax, ebx
call fcn.004229d8
mov eax, dword [ebp - 4]
call fcn.004084ec
push eax
call sub.kernel32.dll_GetFileAttributesW
mov ebx, eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x422a91
lea eax, [ebp - 4]
call fcn.00407a20
ret

Function at 0x422ca0
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffdf4
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 4], ecx
mov edi, edx
mov esi, eax
xor eax, eax
push ebp
push 0x422d35
push dword fs:[eax]
mov dword fs:[eax], esp
test esi, esi
jne 0x422ceb
push 0x104
lea eax, [ebp - 0x20c]
push eax
push 0
call sub.kernel32.dll_GetModuleFileNameW
mov ecx, eax
lea edx, [ebp - 0x20c]
mov eax, edi
call fcn.00407ba8
jmp 0x422d1f
call sub.kernel32.dll_GetCommandLineW
mov ebx, eax
cmp word [ebx], 0
jne 0x422d02
lea eax, [ebp - 4]
call fcn.00407a20
jmp 0x422d15
lea edx, [ebp - 4]
mov eax, ebx
call fcn.00422b60
mov ebx, eax
test esi, esi
je 0x422d15
dec esi
jmp 0x422cf2
mov eax, edi
mov edx, dword [ebp - 4]
call fcn.00407e00
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x422d3c
lea eax, [ebp - 4]
call fcn.00407a20
ret
Function at 0x422d44
Capabilities:
Get common file path

Disassembly:
push ebx
add esp, 0xfffffdf8
mov ebx, eax
push 0x104
lea eax, [esp + 4]
push eax
call sub.kernel32.dll_GetWindowsDirectoryW
mov edx, ebx
mov eax, esp
call fcn.0041a77c
add esp, 0x208
pop ebx
ret

Function at 0x422da4
Capabilities:
Get common file path

Disassembly:
push ebx
add esp, 0xfffffdf8
mov ebx, eax
push 0x104
lea eax, [esp + 4]
push eax
call sub.kernel32.dll_GetSystemDirectoryW
mov edx, ebx
mov eax, esp
call fcn.0041a77c
add esp, 0x208
pop ebx
ret

Function at 0x422f00
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffec
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov edi, eax
xor eax, eax
push ebp
push 0x423036
push dword fs:[eax]
mov dword fs:[eax], esp
xor ebx, ebx
xor eax, eax
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x14]
push eax
push 0
lea eax, [ebp - 0x10]
push eax
push 0
mov eax, dword [ebp - 8]
push eax
push edi
call sub.advapi32.dll_RegQueryValueExW
test eax, eax
jne 0x423020
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp + 0xc]
je 0x422f5d
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp + 8]
jne 0x423020
cmp dword [ebp - 0x14], 0
jne 0x422f72
mov eax, dword [ebp - 0xc]
call fcn.00407a20
mov bl, 1
jmp 0x423020
cmp dword [ebp - 0x14], 0x70000000
jb 0x422f80
call fcn.0041f270
mov esi, dword [ebp - 0x14]
inc esi
shr esi, 1
lea eax, [ebp - 4]
mov ecx, esi
xor edx, edx
call fcn.00407ba8
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 4]
call fcn.00407fa0
push eax
lea eax, [ebp - 0x10]
push eax
push 0
mov eax, dword [ebp - 8]
push eax
push edi
call sub.advapi32.dll_RegQueryValueExW
cmp eax, 0xea
je 0x422f26
test eax, eax
jne 0x423020
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp + 0xc]
je 0x422fce
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp + 8]
jne 0x423020
mov esi, dword [ebp - 0x14]
shr esi, 1
jmp 0x422fd6
dec esi
test esi, esi
je 0x422fe5
mov eax, dword [ebp - 4]
cmp word [eax + esi*2 - 2], 0
je 0x422fd5
cmp dword [ebp - 0x10], 7
jne 0x422ff0
test esi, esi
je 0x422ff0
inc esi
lea eax, [ebp - 4]
mov edx, esi
call fcn.00408664
cmp dword [ebp - 0x10], 7
jne 0x423013
test esi, esi
je 0x423013
lea eax, [ebp - 4]
call fcn.00407fa0
mov word [eax + esi*2 - 2], 0
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 4]
call fcn.00407e00
mov bl, 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x42303d
lea eax, [ebp - 4]
call fcn.00407a20
ret

Function at 0x4246e4
Capabilities:
Hash data with crc32

Disassembly:
push esi
xor esi, esi
mov ecx, 0x4c090c
mov eax, esi
mov edx, 8
test al, 1
je 0x424700
shr eax, 1
xor eax, 0xedb88320
jmp 0x424702
shr eax, 1
dec edx
jne 0x4246f3
mov dword [ecx], eax
inc esi
add ecx, 4
cmp esi, 0x100
jne 0x4246ec
pop esi
ret
Function at 0x424718
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
push edi
push ecx
mov esi, ecx
mov edi, edx
mov ebx, eax
cmp dword [0x4c0908], 0
jne 0x424742
call fcn.004246e4
mov dword [esp], 0x4c0908
mov edx, dword [esp]
mov eax, 1
lock xchg dword [edx], eax
mov eax, edi
test esi, esi
je 0x42476c
mov edx, 0xff
and edx, ebx
movzx ecx, byte [eax]
xor dx, cx
movzx edx, dx
mov edx, dword [edx*4 + 0x4c090c]
shr ebx, 8
xor edx, ebx
mov ebx, edx
dec esi
inc eax
test esi, esi
jne 0x424748
mov eax, ebx
pop edx
pop edi
pop esi
pop ebx
ret

Function at 0x42729c
Capabilities:
Delete file

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
push esi
mov esi, edx
mov ebx, eax
lea edx, [ebp - 0xc]
mov eax, ebx
call fcn.00427250
test al, al
jne 0x4272bd
xor eax, eax
mov dword [ebp - 4], eax
jmp 0x427309
xor eax, eax
push ebp
push 0x4272f9
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, esi
call fcn.004084ec
push eax
call sub.kernel32.dll_DeleteFileW
mov dword [ebp - 4], eax
call sub.kernel32.dll_GetLastError
mov dword [ebp - 0x10], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x427300
lea eax, [ebp - 0xc]
call fcn.0042728c
ret
mov eax, dword [ebp - 4]
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x467584
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
mov dl, 0xb5
mov ebx, eax
xor eax, eax
mov ecx, eax
mov esi, ebx
shr esi, cl
mov ecx, esi
and cl, 0xff
xor dl, cl
inc eax
cmp eax, 4
jne 0x46758c
mov eax, edx
pop esi
pop ebx
ret

Function at 0x497a9c
Capabilities:
Suspend thread

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
push esi
push edi
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
movzx eax, byte [eax + 0xf]
mov byte [ebp - 5], al
xor eax, eax
push ebp
push 0x497aea
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov byte [eax + 0xf], 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
push eax
call sub.kernel32.dll_SuspendThread
test eax, eax
setge dl
mov eax, dword [ebp - 4]
call fcn.00497560
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x497b03
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
ret

Function at 0x4aefa0
Capabilities:
Create directory

Disassembly:
push ebp
mov ebp, esp
mov ecx, 6
push 0
push 0
dec ecx
jne 0x4aefa8
push ebx
push esi
mov esi, edx
mov ebx, eax
xor eax, eax
push ebp
push 0x4af10b
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x24]
mov edx, ebx
call fcn.00408550
mov eax, dword [ebp - 0x24]
lea edx, [ebp - 0x20]
call fcn.004228bc
mov eax, dword [ebp - 0x20]
lea edx, [ebp - 0x1c]
call fcn.004229b8
mov eax, dword [ebp - 0x1c]
push eax
lea eax, [ebp - 0x30]
call fcn.00422d78
mov eax, dword [ebp - 0x30]
lea edx, [ebp - 0x2c]
call fcn.00422678
lea eax, [ebp - 0x2c]
mov edx, 0x4af128
call fcn.004086e4
mov eax, dword [ebp - 0x2c]
lea edx, [ebp - 0x28]
call fcn.004229b8
mov eax, dword [ebp - 0x28]
mov ecx, 1
pop edx
call fcn.00408abc
dec eax
je 0x4af047
push 0
push ebx
call sub.kernel32.dll_CreateDirectoryW
cmp eax, 1
sbb eax, eax
inc eax
mov ebx, eax
test bl, bl
jne 0x4af0e3
call sub.kernel32.dll_GetLastError
mov dword [esi], eax
jmp 0x4af0e3
lea eax, [ebp - 4]
call fcn.0042307c
cmp dword [ebp - 4], 0
jne 0x4af062
lea eax, [ebp - 4]
mov edx, 0x4af140
call fcn.00407e48
push 0x4af154
push dword [ebp - 4]
push 0x4af194
push 0x4af1a4
push 0x4af1e4
lea eax, [ebp - 8]
mov edx, 5
call fcn.004087c4
push 0
lea eax, [ebp - 0xc]
push eax
push 1
mov eax, dword [ebp - 8]
call fcn.004084ec
push eax
call sub.advapi32.dll_ConvertStringSecurityDescriptorToSecurityDescriptorW
test eax, eax
jne 0x4af0ab
call sub.kernel32.dll_GetLastError
mov dword [esi], eax
xor ebx, ebx
jmp 0x4af0e3
mov dword [ebp - 0x18], 0xc
xor eax, eax
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x18]
push eax
push ebx
call sub.kernel32.dll_CreateDirectoryW
cmp eax, 1
sbb eax, eax
inc eax
mov ebx, eax
test bl, bl
jne 0x4af0da
call sub.kernel32.dll_GetLastError
mov dword [esi], eax
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_LocalFree
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4af112
lea eax, [ebp - 0x30]
mov edx, 6
call fcn.00407a80
lea eax, [ebp - 8]
mov edx, 2
call fcn.00407a80
ret
Function at 0x4af4d8
Capabilities:
Shutdown system

Disassembly:
add esp, 0xffffffec
call fcn.0041ff44
cmp eax, 2
jne 0x4af540
push esp
push 0x28
call sub.kernel32.dll_GetCurrentProcess
push eax
call sub.advapi32.dll_OpenProcessToken
test eax, eax
jne 0x4af4fb
xor eax, eax
jmp 0x4af54f
lea eax, [esp + 8]
push eax
push 0x4af554
push 0
call sub.advapi32.dll_LookupPrivilegeValueW
mov dword [esp + 4], 1
mov dword [esp + 0x10], 2
push 0
push 0
push 0
lea eax, [esp + 0x10]
push eax
push 0
mov eax, dword [esp + 0x14]
push eax
call sub.advapi32.dll_AdjustTokenPrivileges
call sub.kernel32.dll_GetLastError
test eax, eax
je 0x4af540
xor eax, eax
jmp 0x4af54f
push 0
push 2
call sub.user32.dll_ExitWindowsEx
cmp eax, 1
sbb eax, eax
inc eax
add esp, 0x14
ret

Function at 0x4af57c
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov dword [ebp - 4], edx
mov ebx, eax
mov esi, ecx
dec esi
test esi, esi
jl 0x4af5d6
inc esi
xor edi, edi
cmp edi, 1
jne 0x4af5a2
mov eax, dword [ebp + 0xc]
push eax
call sub.kernel32.dll_Sleep
jmp 0x4af5b0
cmp edi, 1
jle 0x4af5b0
mov eax, dword [ebp + 8]
push eax
call sub.kernel32.dll_Sleep
mov edx, dword [ebp - 4]
mov eax, ebx
call fcn.0042729c
test eax, eax
jne 0x4af5d6
call sub.kernel32.dll_GetLastError
cmp eax, 2
je 0x4af5d6
call sub.kernel32.dll_GetLastError
cmp eax, 3
je 0x4af5d6
inc edi
dec esi
jne 0x4af592
pop edi
pop esi
pop ebx
pop ecx
pop ebp
ret 8

Function at 0x4af5e0
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, eax
push 2
lea eax, [ebp - 4]
push eax
push 0x20001004
movzx eax, bx
push eax
call sub.kernel32.dll_GetLocaleInfoW
test eax, eax
jle 0x4af604
mov eax, dword [ebp - 4]
jmp 0x4af607
or eax, 0xffffffff
pop ebx
pop ecx
pop ebp
ret