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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x410
push esi
mov esi, dword [ebp + 8]
push edi
shl esi, 3
mov edi, dword [esi + 0x40a070]
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
test eax, eax
jne 0x405a93
push 0x208
lea eax, [ebp - 0x208]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
push edi
lea eax, [ebp - 0x208]
push eax
lea eax, [ebp - 0x410]
push str._s_s
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea eax, [ebp - 0x410]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
je 0x405aa0
push dword [esi + 0x40a074]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
pop edi
pop esi
leave
ret 4

Function at 0x405b2d
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push esi
push edi
push dword [esp + 0xc]
mov esi, 0x59fdb0
push esi
call fcn.0040594e
push esi
call fcn.0040570e
mov edi, eax
test edi, edi
jne 0x405b4e
xor eax, eax
jmp 0x405ba6
push edi
call fcn.00405970
test byte [0x5a3948], 0x80
je 0x405b67
mov al, byte [edi]
test al, al
je 0x405b4a
cmp al, 0x5c
je 0x405b4a
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
sub edi, esi
jmp 0x405b87
push esi
call fcn.00405a0a
test eax, eax
je 0x405b81
test byte [eax], 0x10
je 0x405bab
push esi
call fcn.00405b06
push esi
call ebx
cmp eax, edi
jg 0x405b72
push esi
call fcn.00405ad9
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
xor ecx, ecx
cmp eax, 0xffffffff
setne cl
mov eax, ecx
pop ebx
pop edi
pop esi
ret 4
xor eax, eax
jmp 0x405ba5
Function at 0x405e5b
Capabilities:
Get file size
Read file on windows
Write file on windows

Disassembly:
push ebx
push ebp
push esi
push edi
push 1
call fcn.00405a31
test eax, eax
mov esi, dword [esp + 0x18]
je 0x405e7f
push 5
push esi
push dword [esp + 0x1c]
call eax
test eax, eax
jne 0x405fb8
test esi, esi
mov ebx, dword [sym.imp.KERNEL32.dll_GetShortPathNameA]
mov dword [0x5a01b0], 0x4c554e
mov edi, 0x400
mov ebp, 0x5a01b0
je 0x405ec3
push 1
push 0
push esi
call fcn.0040579f
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push edi
push ebp
push esi
call ebx
test eax, eax
je 0x405fbe
cmp eax, edi
jg 0x405fbe
push edi
mov esi, 0x5a0af0
push esi
push dword [esp + 0x1c]
call ebx
test eax, eax
je 0x405fbe
cmp eax, edi
jg 0x405fbe
push esi
push ebp
push str._s_s_r_n
push 0x5a05b0
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
mov ebx, eax
mov eax, dword [0x5a38ec]
push dword [eax + 0x128]
push esi
call fcn.00405c05
push 4
push 0xc0000000
push esi
call fcn.0040579f
mov ebp, eax
cmp ebp, 0xffffffff
mov dword [esp + 0x14], ebp
je 0x405fb8
push 0
push ebp
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov edi, eax
lea eax, [edi + ebx + 0xa]
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov esi, eax
test esi, esi
je 0x405fb1
push 0
lea eax, [esp + 0x1c]
push eax
push edi
push esi
push ebp
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x405fb1
cmp edi, dword [esp + 0x18]
jne 0x405fb1
push str._Rename__r_n
push esi
call fcn.00405baf
test eax, eax
jne 0x405fc5
push str._Rename__r_n
lea eax, [esi + edi]
push eax
call fcn.0040594e
add edi, 0xa
mov eax, edi
push ebx
push 0x5a05b0
add eax, esi
push eax
call fcn.0040575b
xor eax, eax
push eax
push eax
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 0
lea eax, [esp + 0x1c]
push eax
add edi, ebx
push edi
push esi
push ebp
call dword [sym.imp.KERNEL32.dll_WriteFile]
push esi
call dword [sym.imp.KERNEL32.dll_GlobalFree]
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
inc dword [0x5a39b0]
pop edi
pop esi
pop ebp
pop ebx
ret 8
push 0x408690
add eax, 0xa
push eax
call fcn.00405baf
test eax, eax
je 0x405f7c
inc eax
lea ecx, [esi + edi]
cmp eax, ecx
mov ebp, eax
jae 0x405fec
mov dl, byte [ebp]
mov byte [ebx + ebp], dl
inc ebp
cmp ebp, ecx
jb 0x405fe1
mov ebp, dword [esp + 0x14]
sub eax, esi
jmp 0x405f7e
Function at 0x405ff4
Capabilities:
Delete directory
Delete file
Enumerate files on windows
Enumerate files recursively

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x148
push ebx
mov ebx, dword [ebp + 8]
push ebx
call fcn.00405b2d
mov ecx, dword [ebp + 0xc]
test cl, 8
mov dword [ebp - 8], eax
je 0x406029
push ebx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
neg eax
sbb eax, eax
inc eax
add dword [0x5a39a8], eax
jmp 0x4061bb
mov dword [ebp + 8], ecx
and dword [ebp + 8], 1
push esi
je 0x406044
test eax, eax
je 0x406166
test cl, 2
je 0x406166
push edi
push ebx
mov esi, 0x5a0ef0
push esi
call fcn.0040594e
cmp dword [ebp + 8], 0
mov edi, dword [sym.imp.KERNEL32.dll_lstrcatA]
je 0x406067
push str..
push esi
call edi
jmp 0x40606d
push ebx
call fcn.00405b06
cmp byte [ebx], 0
jne 0x40607b
cmp byte [0x5a0ef0], 0x5c
jne 0x406083
push 0x408298
push ebx
call edi
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
lea eax, [ebp - 0x148]
push eax
push esi
add edi, ebx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
mov dword [ebp - 4], eax
je 0x40615b
lea esi, [ebp - 0x11c]
push 0x3f
mov eax, esi
push eax
call fcn.004056cd
cmp byte [eax], 0
je 0x4060c6
cmp byte [ebp - 0x18], 0
je 0x4060c6
lea esi, [ebp - 0x18]
cmp byte [esi], 0x2e
jne 0x4060dc
mov al, byte [esi + 1]
test al, al
je 0x40613a
cmp al, 0x2e
jne 0x4060dc
cmp byte [esi + 2], 0
je 0x40613a
push esi
push edi
call fcn.0040594e
test byte [ebp - 0x148], 0x10
je 0x406101
mov eax, dword [ebp + 0xc]
and eax, 3
cmp al, 3
jne 0x40613a
push dword [ebp + 0xc]
push ebx
call fcn.00405ff4
jmp 0x40613a
push ebx
call fcn.0040577f
push ebx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
test eax, eax
jne 0x406132
test byte [ebp + 0xc], 4
je 0x40612a
push ebx
push 0xfffffffffffffff1
call fcn.004048f2
push 0
push ebx
call fcn.00405e5b
jmp 0x40613a
inc dword [0x5a39a8]
jmp 0x40613a
push ebx
push 0xfffffffffffffff2
call fcn.004048f2
lea eax, [ebp - 0x148]
push eax
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x4060a8
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp dword [ebp + 8], 0
je 0x406165
mov byte [edi - 1], 0
pop edi
xor esi, esi
cmp dword [ebp + 8], esi
je 0x4061ba
cmp dword [ebp - 8], esi
je 0x4061aa
push ebx
call fcn.00405a0a
test eax, eax
je 0x4061ba
push ebx
call fcn.00405ad9
push ebx
call fcn.0040577f
push ebx
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
test eax, eax
jne 0x4061b2
test byte [ebp + 0xc], 4
je 0x4061aa
push ebx
push 0xfffffffffffffff1
call fcn.004048f2
push esi
push ebx
call fcn.00405e5b
jmp 0x4061ba
inc dword [0x5a39a8]
jmp 0x4061ba
push ebx
push 0xffffffffffffffe5
call fcn.004048f2
pop esi
pop ebx
leave
ret 8
Function at 0x4061c0
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
cmp dword [0x5a12f4], 0
jne 0x4061fb
xor ecx, ecx
push esi
push 8
mov eax, ecx
pop esi
mov edx, eax
and dl, 1
neg dl
sbb edx, edx
and edx, 0xedb88320
shr eax, 1
xor eax, edx
dec esi
jne 0x4061d4
mov dword [ecx*4 + 0x5a12f0], eax
inc ecx
cmp ecx, 0x100
jl 0x4061cf
pop esi
cmp dword [ebp + 0x10], 0
mov eax, dword [ebp + 8]
not eax
jbe 0x406228
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx]
dec dword [ebp + 0x10]
xor edx, eax
and edx, 0xff
shr eax, 8
xor eax, dword [edx*4 + 0x5a12f0]
inc ecx
cmp dword [ebp + 0x10], 0
ja 0x406209
not eax
pop ebp
ret 0xc
Function at 0x402380
Capabilities:
Create new key via cryptacquirecontext
Hash data via wincrypt
Initialize hashing via wincrypt

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x495545
mov eax, dword fs:[0]
push eax
sub esp, 0x10
push ebx
push esi
push edi
mov eax, dword [0x4da064]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 0x1c], 0x4b96a4
mov dword [ebp - 0x18], 0
mov dword [ebp - 4], 0
mov dword [ebp - 0x14], 0x4b96ac
mov dword [ebp - 0x10], 0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
call dword [eax + 4]
push 0xf0000000
push 0x18
push str.Microsoft_Enhanced_RSA_and_AES_Cryptographic_Provider
push 0
lea eax, [ebp - 0x18]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x40241f
mov eax, dword [ebp - 0x14]
lea ecx, [ebp - 0x14]
call dword [eax + 4]
lea eax, [ebp - 0x10]
push eax
push 0
push 0
push 0x800c
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x402427
call edi
mov esi, eax
test esi, esi
jne 0x402440
push 0
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [ebp - 0x10]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x402445
call edi
mov esi, eax
mov dword [ebx + 0xc], esi
jmp 0x402451
push dword [ebp - 0x10]
mov ecx, ebx
call fcn.004028a0
mov esi, eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], 0x4b96ac
test eax, eax
je 0x40246a
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov dword [ebp - 0x10], 0
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x1c], 0x4b96a4
test eax, eax
je 0x40248f
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, esi
mov dword [ebp - 0x18], 0
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 0x4036b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x4c
mov edi, dword [esp + 0x64]
mov edi, dword [edi + 0xb4]
cmp dword [eax + edx - 8], edi
je 0x4036d4
mov eax, 0
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x20], edx
mov esi, eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x64]
lea edx, [eax + 0xf0]
mov ecx, 4
lea eax, [esp + 0x38]
call fcn.0040368f
mov eax, dword [esp + 0x64]
lea edx, [eax + 0xf8]
mov ecx, 4
lea eax, [esp + 0x3c]
call fcn.0040368f
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov edi, 0
mov dword [esp + 0x14], 0
jmp 0x403760
test edi, edi
je 0x403760
mov eax, dword [esp + 0x14]
add eax, ebx
mov dword [esp + 0x18], eax
cmp eax, dword [esp + 0x24]
ja 0x4037f8
mov eax, dword [esp + 0x14]
add eax, edi
mov ecx, ebx
mov edx, ebp
call fcn.0040368f
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x1c]
sub eax, esi
mov ebx, dword [esp + 0x20]
lea edx, [eax + ebx - 8]
lea eax, [esi + 1]
mov dword [esp], 8
lea ecx, [esp + 0x38]
call fcn.004035fb
mov esi, eax
test eax, eax
je 0x40380b
lea ebp, [eax + 8]
mov eax, dword [eax]
mov ecx, eax
shl ecx, 0x18
mov edx, eax
shr edx, 0x18
add ecx, edx
movzx ebx, ah
shl ebx, 0x10
lea edx, [ecx + ebx]
shr eax, 8
and eax, 0xff00
lea ebx, [eax + edx]
mov eax, dword [esp + 0x64]
mov eax, dword [eax + 0x104]
cmp dword [esi + 8], eax
jne 0x403731
test edi, edi
jne 0x403731
mov eax, dword [esi + 0x10]
add eax, 0x10
mov dword [esp + 0x24], eax
mov edx, eax
mov eax, dword [esp + 0x60]
call fcn.004035bf
mov edi, eax
mov ecx, ebx
mov edx, ebp
call fcn.0040368f
add dword [esp + 0x14], ebx
mov dword [esp + 0x28], ebp
jmp 0x403760
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
sub ecx, eax
add eax, edi
mov edx, ebp
call fcn.0040368f
mov eax, 0
test edi, edi
je 0x4036cc
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
test dl, 3
je 0x40382f
sub edx, 1
test dl, 3
jne 0x403827
test edx, edx
je 0x403843
mov eax, 0
xor dword [edi + eax + 0x10], ecx
add eax, 4
cmp eax, edx
jb 0x403838
mov eax, dword [esp + 0x2c]
mov dword [eax], edi
cmp dword [esp + 0x14], 0
setne al
jmp 0x4036cc
Function at 0x403af2
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x224
mov ebx, dword [eax + 0x3c]
mov edi, eax
add edi, dword [eax + ebx + 0x78]
mov ebx, edi
mov edi, dword [edi + 0x1c]
mov dword [esp + 0xc], edi
mov edi, dword [ebx + 0x24]
and al, 0x89
jl 0x403b38
adc byte [ecx + 0x206b03c5], cl
mov esi, eax
add esi, dword [ebp]
cmp byte [esi], 0
je 0x403b9c
mov dword [esp + 4], ecx
mov dword [esp], edx
mov edi, eax
mov ebx, 0
mov dword [esp + 8], ebx
mov edx, 0x208
lea eax, [esp + 0x1c]
call fcn.004039b0
lea edx, [esp + 0x1c]
mov eax, esi
call fcn.00403acb
mov edx, dword [esp + 4]
lea eax, [esp + 0x1c]
call fcn.00403875
cmp eax, dword [esp]
je 0x403b76
add ebx, 1
mov esi, edi
add esi, dword [ebp + ebx*4]
cmp byte [esi], 0
jne 0x403b32
mov eax, 0
jmp 0x403b91
mov eax, dword [esp + 8]
lea eax, [edi + eax*2]
mov ecx, dword [esp + 0x10]
movzx eax, word [eax + ecx]
lea eax, [edi + eax*4]
mov ecx, dword [esp + 0xc]
add edi, dword [eax + ecx]
mov eax, edi
add esp, 0x224
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, 0
jmp 0x403b91

Function at 0x404670
Capabilities:
Resolve function by parsing pe exports

Disassembly:
cmp eax, dword [ebx + 0xe4]
je 0x4046a1
cmp eax, dword [ebx + 0xb8]
je 0x4046ae
cmp eax, dword [ebx + 0x88]
je 0x4046bb
cmp eax, dword [ebx + 0x80]
jne 0x4045fa
mov eax, dword [esp + 0x24]
mov byte [eax + 8], 1
jmp 0x4045fa
mov eax, dword [esp + 0x24]
mov byte [eax + 5], 1
jmp 0x4045fa
mov eax, dword [esp + 0x24]
mov byte [eax + 6], 1
jmp 0x4045fa
mov eax, dword [esp + 0x24]
mov byte [eax + 7], 1
jmp 0x4045fa
Function at 0x4051f0
Capabilities:
Get common file path

Disassembly:
push ebp
lea ebp, [esp - 0x23c]
sub esp, 0x23c
push 0xffffffffffffffff
push 0x495bb6
mov eax, dword fs:[0]
push eax
sub esp, 0x10
mov eax, dword [0x4da064]
xor eax, ebp
mov dword [ebp + 0x238], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x10], 0
mov eax, dword fs:[0x2c]
mov ecx, dword [eax]
mov eax, dword [0x4dc3f0]
cmp eax, dword [ecx + 4]
jle 0x4052b8
push 0x4dc3f0
call fcn.004762c5
add esp, 4
cmp dword [0x4dc3f0], 0xffffffff
jne 0x4052b8
mov dword [ebp - 4], 1
xor eax, eax
mov dword [0x4dc404], 0
mov dword [0x4dc408], 0
mov dword [0x4dc404], 0
mov dword [0x4dc408], 7
mov word [0x4dc3f4], ax
mov byte [ebp - 4], 1
push 0x4aaa80
call fcn.004765d7
mov byte [ebp - 4], 0
push 0x4dc3f0
call fcn.0047627b
add esp, 8
cmp dword [0x4dc404], 0
jne 0x4053a5
lea eax, [ebp + 0x30]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
je 0x4053a5
add eax, eax
cmp eax, 0x208
jae 0x4053e3
xor ecx, ecx
mov dword [ebp + 0x28], ecx
mov word [ebp + eax + 0x30], cx
xor eax, eax
mov dword [ebp + 0x2c], ecx
mov dword [ebp + 0x28], ecx
lea ecx, [ebp + 0x30]
mov dword [ebp + 0x2c], 7
lea edx, [ecx + 2]
mov word [ebp + 0x18], ax
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x405310
sub ecx, edx
lea eax, [ebp + 0x30]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp + 0x18]
call fcn.004034e0
mov dword [ebp - 4], 4
lea eax, [ebp + 0x18]
push 1
sub esp, 0x18
mov dword [ebp - 0x14], esp
mov esi, esp
sub esp, 0x18
mov ecx, esp
mov dword [ebp - 0x1c], esp
push eax
call fcn.00404500
mov byte [ebp - 4], 5
mov byte [ebp - 4], 4
mov ecx, esi
call fcn.0041f240
add esp, 0x18
mov byte [ebp - 4], 6
mov byte [ebp - 4], 4
lea ecx, [ebp]
call fcn.0041f520
mov byte [ebp - 4], 8
lea eax, [ebp]
cmp dword [ebp + 0x14], 8
mov ecx, 0x4dc3f4
push dword [ebp + 0x10]
cmovae eax, dword [ebp]
push eax
call fcn.004034e0
mov byte [ebp - 4], 4
lea ecx, [ebp]
call fcn.00403630
mov byte [ebp - 4], 0
lea ecx, [ebp + 0x18]
call fcn.00403630
push 0x4dc3f4
mov ecx, edi
call fcn.00404500
mov dword [ebp - 4], 0
mov dword [ebp - 0x10], 1
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp + 0x238]
xor ecx, ebp
call fcn.0047615e
lea esp, [ebp + 0x23c]
pop ebp
ret
call fcn.00476759
int3
Function at 0x4054c0
Capabilities:
Create directory
Delete file
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x495d29
mov eax, dword fs:[0]
push eax
sub esp, 0x234
mov eax, dword [0x4da064]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x238], edi
mov eax, dword [ebp + 8]
mov dword [ebp - 0x23c], edi
mov dword [ebp - 0x234], 0
cmp dword [edx + 0x14], 8
jb 0x405510
mov edx, dword [edx]
lea ecx, [ebp - 0x218]
push ecx
push 0
push eax
push edx
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
test eax, eax
jne 0x40554f
xorps xmm0, xmm0
movups xmmword [edi], xmm0
movq qword [edi + 0x10], xmm0
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], 7
mov word [edi], ax
mov dword [ebp - 4], eax
mov dword [ebp - 0x234], 1
jmp 0x405630
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push 0
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
xor eax, eax
mov dword [ebp - 0x220], 0
lea ecx, [ebp - 0x218]
mov dword [ebp - 0x21c], 0
mov dword [ebp - 0x220], 0
lea edx, [ecx + 2]
mov dword [ebp - 0x21c], 7
mov word [ebp - 0x230], ax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4055a5
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x230]
call fcn.004034e0
mov dword [ebp - 4], 3
lea eax, [ebp - 0x230]
push 1
sub esp, 0x18
mov dword [ebp - 0x238], esp
mov esi, esp
sub esp, 0x18
mov ecx, esp
mov dword [ebp - 0x240], esp
push eax
call fcn.00404500
mov byte [ebp - 4], 4
mov byte [ebp - 4], 3
mov ecx, esi
call fcn.0041f240
add esp, 0x18
mov byte [ebp - 4], 5
mov byte [ebp - 4], 3
mov ecx, edi
call fcn.0041f520
mov byte [ebp - 4], 3
mov dword [ebp - 0x234], 1
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x230]
call fcn.00403630
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0047615e
mov esp, ebp
pop ebp
ret
Function at 0x407600
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x49644d
mov eax, dword fs:[0]
push eax
push ecx
push ebx
push esi
push edi
mov eax, dword [0x4da064]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov eax, dword [edi + 4]
test eax, eax
je 0x4076f8
mov ebx, dword [ebp + 8]
lea ecx, [ebp - 0x10]
push ecx
push 0
push 0
push 0
push dword [ebx]
mov dword [ebp - 0x10], 0
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x4076f8
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x4076f8
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0047662f
mov esi, eax
add esp, 4
mov dword [ebp + 8], esi
mov dword [ebp - 4], 0
lea eax, [ebp - 0x10]
push eax
push esi
push 0
push 0
push dword [ebx]
push dword [edi + 4]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
je 0x4076a4
xor bl, bl
jmp 0x4076cb
mov eax, esi
lea edx, [eax + 2]
nop dword [eax]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4076b0
mov ecx, dword [ebp + 0xc]
sub eax, edx
sar eax, 1
push eax
push esi
call fcn.00407090
mov bl, 1
mov dword [ebp - 4], 0xffffffff
push esi
call fcn.0047662a
add esp, 4
mov dword [ebp + 8], 0
mov al, bl
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
xor al, al
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 0x40a5e0
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x496bf5
mov eax, dword fs:[0]
push eax
sub esp, 8
push ebx
push esi
push edi
mov eax, dword [0x4da064]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push 0
push 0
movzx ebx, cx
push 0x1004
push ebx
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
mov edi, eax
test edi, edi
jne 0x40a635
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0047662f
mov esi, eax
add esp, 4
mov dword [ebp - 0x14], esi
mov dword [ebp - 4], 0
push edi
push esi
push 0x1004
push ebx
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
mov edi, eax
test edi, edi
jne 0x40a672
xor bl, bl
jmp 0x40a6b6
call fcn.004039e0
push eax
lea eax, [edi - 1]
push eax
push esi
lea ecx, [ebp - 0x10]
call fcn.00407300
mov byte [ebp - 4], 2
lea eax, [ebp - 0x10]
mov ecx, dword [ebp + 8]
push eax
call fcn.00407fe0
mov byte [ebp - 4], 0
or eax, 0xffffffff
mov edx, dword [ebp - 0x10]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40a6b4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov bl, 1
mov dword [ebp - 4], 0xffffffff
push esi
call fcn.0047662a
add esp, 4
mov dword [ebp - 0x14], 0
mov al, bl
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 0x40cb00
Capabilities:
Get common file path

Disassembly:
push ebp
lea ebp, [esp - 0x20c]
sub esp, 0x20c
push 0xffffffffffffffff
push 0x49711e
mov eax, dword fs:[0]
push eax
sub esp, 0xc
mov eax, dword [0x4da064]
xor eax, ebp
mov dword [ebp + 0x208], eax
push esi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x14], esi
lea eax, [ebp]
mov dword [ebp - 0x18], esi
push eax
push 0x104
mov dword [ebp - 0x10], 0
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
jne 0x40cba3
call fcn.004039e0
test eax, eax
je 0x40cc1c
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esi], eax
mov dword [ebp - 4], 0
mov dword [ebp - 0x10], 1
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov ecx, dword [ebp + 0x208]
xor ecx, ebp
call fcn.0047615e
lea esp, [ebp + 0x20c]
pop ebp
ret
cmp word [ebp + eax*2 - 2], 0x5c
je 0x40cbb6
mov ecx, 0x5c
mov word [ebp + eax*2], cx
inc eax
add eax, eax
cmp eax, 0x208
jae 0x40cc17
xor ecx, ecx
mov word [ebp + eax], cx
call fcn.004039e0
mov ecx, eax
test ecx, ecx
je 0x40cc1c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [esi], eax
mov dword [ebp - 4], 2
lea eax, [ebp]
push eax
mov ecx, esi
call fcn.00406f20
test al, al
jne 0x40cb72
lea ecx, [ebp]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40cbf7
sub ecx, edx
lea eax, [ebp]
sar ecx, 1
push ecx
push eax
mov ecx, esi
call fcn.00407090
jmp 0x40cb72
call fcn.00476759
push 0x80004005
call fcn.00402150
int3