joyce8/EMBER2024-capa huggingface dataset:
Function at 0x40be00
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebx
mov ebx, dword [esp + 8]
push edi
mov edi, dword [esp + 0x10]
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
jne 0x40be19
pop edi
pop ebx
ret
push esi
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
test esi, esi
je 0x40be54
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov ecx, dword [esp + 0x18]
add eax, esi
and ecx, 0xf
jbe 0x40be50
lea ebx, [ebx]
cmp esi, eax
jae 0x40be54
sub ecx, 1
movzx edx, word [esi]
lea esi, [esi + edx*2 + 2]
jne 0x40be40
cmp esi, eax
jb 0x40be5a
pop esi
pop edi
xor eax, eax
pop ebx
ret
movzx eax, word [esi]
neg eax
sbb eax, eax
and eax, esi
pop esi
pop edi
pop ebx
ret

Function at 0x40bef0
Capabilities:
Get file size
Read file on windows

Disassembly:
push ecx
mov eax, dword [esp + 8]
push edi
push 0
push 0x80
push 3
push 0
push 1
push 0x80000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
cmp edi, 0xffffffff
je 0x40bf77
push esi
push 0
push edi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
cmp esi, 0xffffffff
je 0x40bf76
xor ecx, ecx
lea eax, [esi + 1]
mov edx, 2
mul edx
seto cl
mov dword [esp + 8], 0
neg ecx
or ecx, eax
push ecx
call fcn.0044037f
add esp, 4
mov dword [0x49daf0], eax
test eax, eax
je 0x40bf6f
push 0
lea ecx, [esp + 0xc]
push ecx
push esi
push eax
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov eax, dword [0x49daf0]
xor edx, edx
mov word [eax + esi*2], dx
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop esi
pop edi
pop ecx
ret

Function at 0x40c7a0
Capabilities:
Set registry value

Disassembly:
mov edx, dword [esp + 4]
push 4
lea eax, [esp + 0xc]
push eax
mov eax, dword [ecx]
push 4
push 0
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
ret 8

Function at 0x40c7c0
Capabilities:
Set registry value

Disassembly:
push esi
mov esi, dword [esp + 0xc]
push edi
mov edi, ecx
test esi, esi
jne 0x40c7d4
pop edi
lea eax, [esi + 0xd]
pop esi
ret 0xc
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0xc]
lea eax, [eax + eax + 2]
push eax
mov eax, dword [edi]
push esi
push ecx
push 0
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
pop edi
pop esi
ret 0xc

Function at 0x40c800
Capabilities:
Set registry value

Disassembly:
push ecx
push ebp
mov ebp, dword [esp + 0x10]
mov dword [esp + 4], ecx
test ebp, ebp
jne 0x40c816
lea eax, [ebp + 0xd]
pop ebp
pop ecx
ret 8
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenW]
push esi
push edi
xor edi, edi
mov esi, ebp
push esi
call ebx
inc eax
lea ecx, [eax + eax]
add esi, ecx
add edi, ecx
cmp eax, 1
jne 0x40c823
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx]
push edi
push ebp
push 7
push 0
push eax
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
pop edi
pop esi
pop ebx
pop ebp
pop ecx
ret 8
Function at 0x40cea0
Capabilities:
Query or enumerate registry key

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x224
mov eax, dword [0x49c23c]
xor eax, esp
mov dword [esp + 0x220], eax
mov edx, dword [ebp + 8]
push ebx
push esi
push edi
mov ebx, ecx
mov eax, dword [ebx + 4]
mov ecx, dword [ebx]
lea esi, [esp + 0x14]
push esi
xor edi, edi
or eax, 0x2001f
push eax
push edi
push edx
push ecx
mov dword [esp + 0x30], edx
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov ecx, dword [esp + 0xc]
mov esi, eax
cmp esi, edi
jne 0x40cf16
xor eax, eax
cmp ecx, edi
je 0x40cf04
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x10], edi
mov esi, eax
mov dword [esp + 0xc], ecx
cmp eax, edi
je 0x40cf24
cmp ecx, edi
je 0x40cfc2
push ecx
jmp 0x40cfbc
mov esi, dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
lea eax, [esp + 0x20]
push eax
push edi
push edi
push edi
lea edx, [esp + 0x28]
push edx
lea eax, [esp + 0x3c]
push eax
push edi
push ecx
mov dword [esp + 0x38], pe_nt_image_headers32
call esi
test eax, eax
jne 0x40cf8c
lea esp, [esp]
lea ecx, [esp + 0x28]
push ecx
lea ecx, [esp + 0x10]
call fcn.0040cea0
mov dword [esp + 0x14], eax
cmp eax, edi
jne 0x40cfdb
lea edx, [esp + 0x20]
push edx
mov edx, dword [esp + 0x10]
push edi
push edi
push edi
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x3c]
push ecx
push edi
push edx
mov dword [esp + 0x38], pe_nt_image_headers32
call esi
test eax, eax
je 0x40cf50
mov eax, dword [esp + 0xc]
cmp eax, edi
je 0x40cf9f
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [esp + 0xc], edi
mov eax, dword [esp + 0x1c]
mov ecx, dword [ebx]
push eax
push ecx
mov dword [esp + 0x18], edi
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
mov esi, eax
mov eax, dword [esp + 0xc]
cmp eax, edi
je 0x40cfc2
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x220]
xor ecx, esp
call fcn.004404e6
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [esp + 0xc]
cmp ecx, edi
je 0x40cfc4
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [esp + 0x22c]
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004404e6
mov esp, ebp
pop ebp
ret 4
Function at 0x40eb00
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
lea ebp, [esp - 0x408]
sub esp, 0x408
push 0xffffffffffffffff
push 0x45a3d0
mov eax, dword fs:[0]
push eax
sub esp, 0x1c
mov eax, dword [0x49c23c]
xor eax, ebp
mov dword [ebp + 0x404], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov eax, dword [ebp + 0x410]
mov edi, dword [ebp + 0x414]
mov ebx, dword [ebp + 0x418]
xor edx, edx
mov dword [ebp - 0x20], edx
mov dword [ebp - 4], edx
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x28], edx
mov dword [ebp], edx
push 2
push edx
push eax
mov byte [ebp - 4], 1
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov esi, eax
mov dword [ebp - 0x1c], esi
test esi, esi
jne 0x40eb82
call fcn.0040c610
mov edi, eax
jmp 0x40ec64
push ebx
push edi
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov edi, eax
test edi, edi
jne 0x40eb9b
call fcn.0040c610
jmp 0x40ec5b
push edi
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov ebx, eax
mov dword [ebp - 0x14], ebx
test ebx, ebx
jne 0x40ebb6
call fcn.0040c610
jmp 0x40ec5b
push edi
push esi
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov edi, eax
lea eax, [edi + 1]
mov dword [ebp - 0x18], edi
cmp eax, edi
jae 0x40ebec
lea eax, [ebp + 4]
cmp dword [ebp], eax
je 0x40ebda
lea ecx, [ebp]
call fcn.0040ce40
lea ecx, [ebp - 0x20]
call fcn.0040cde0
mov eax, 0x8007000e
jmp 0x40ec76
push eax
lea ecx, [ebp]
mov byte [ebp - 4], 2
call fcn.0040d760
mov dword [ebp - 4], 1
jmp 0x40ec18
mov eax, dword [ebp]
test eax, eax
jne 0x40ec26
mov edi, 0x8007000e
jmp 0x40ec5d
push edi
push eax
push edi
push ebx
push 0
push 3
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
jne 0x40ec3f
call fcn.0040c610
jmp 0x40ec5b
mov edx, dword [ebp]
xor ecx, ecx
mov word [edx + eax*2], cx
mov eax, dword [ebp + 0x41c]
mov ecx, dword [ebp]
push eax
push ecx
lea ecx, [ebp - 0x28]
call fcn.0040e6a0
mov edi, eax
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea edx, [ebp + 4]
cmp dword [ebp], edx
je 0x40ec74
lea ecx, [ebp]
call fcn.0040ce40
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 + 0x404]
xor ecx, ebp
call fcn.004404e6
add ebp, 0x408
mov esp, ebp
pop ebp
ret 0x10

Function at 0x40fdf0
Capabilities:
Check if file exists
Create directory
Get common file path

Disassembly:
push ecx
xor eax, eax
mov dword [esp], 0
cmp ax, word [0x49db38]
jne 0x40fe56
push 1
push 0x23
push 0x49db38
push eax
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
jne 0x40fe27
push 0x104
push 0x49db38
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
push 7
push str.360SD_
push 0x49db38
call fcn.00442266
add esp, 0xc
push 0x49db38
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40fe56
push eax
push 0x49db38
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push esi
mov esi, dword [esp + 0xc]
push 0x49db38
mov ecx, esi
call fcn.0040fd40
mov eax, esi
pop esi
pop ecx
ret
Function at 0x40fe70
Capabilities:
Query or enumerate registry value

Disassembly:
sub esp, 0x218
mov eax, dword [0x49c23c]
xor eax, esp
mov dword [esp + 0x214], eax
push edi
mov edi, dword [esp + 0x220]
xor eax, eax
push 0x206
push eax
lea ecx, [esp + 0x1a]
mov dword [esp + 0x14], 0
push ecx
mov word [esp + 0x1c], ax
call fcn.00440500
add esp, 0xc
lea edx, [esp + 4]
push edx
push 0x20019
push 0
push str.SOFTWAREMicrosoftWindowsCurrentVersionApp_Paths360sd.exe
push 0x80000002
mov dword [esp + 0x20], 1
mov dword [esp + 0x1c], 0x206
mov dword [esp + 0x18], 0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x40ff4c
lea eax, [esp + 8]
push eax
mov eax, dword [esp + 8]
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x14]
push edx
push 0
push str.Path
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov ecx, dword [esp + 4]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [esp + 0x10]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40ff20
sub eax, edx
sar eax, 1
mov dword [esp + 8], eax
cmp eax, 3
jbe 0x40ff4c
lea eax, [esp + eax*2 + 0x10]
mov edx, 0x5c
cmp dx, word [eax - 2]
je 0x40ff4c
mov ecx, edx
mov word [eax], cx
lea edx, [esp + 0x10]
push edx
mov ecx, edi
call fcn.0040fd40
mov ecx, dword [esp + 0x218]
mov eax, edi
pop edi
xor ecx, esp
call fcn.004404e6
add esp, 0x218
ret
Function at 0x40ff70
Capabilities:
Check if file exists

Disassembly:
push 0xffffffffffffffff
push 0x45a4f0
mov eax, dword fs:[0]
push eax
sub esp, 0x10
push ebx
push esi
mov eax, dword [0x49c23c]
xor eax, esp
push eax
lea eax, [esp + 0x1c]
mov dword fs:[0], eax
xor ebx, ebx
xor eax, eax
mov dword [esp + 0x18], ebx
cmp ax, word [0x49dd40]
jne 0x41013a
mov esi, dword [esp + 0x30]
push 0x104
push 0x49dd40
push esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push 0x5c
push 0x49dd40
call fcn.00441d2f
add esp, 8
test eax, eax
je 0x40ffd8
xor ecx, ecx
mov word [eax + 2], cx
push 0x462dd4
lea ecx, [esp + 0x18]
call fcn.0040fd40
test esi, esi
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
mov dword [esp + 0x24], 0
jne 0x410021
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x14]
push 0x49dd40
push eax
call fcn.0040f6d0
mov eax, dword [eax]
add esp, 0xc
push eax
mov ebx, 1
call esi
mov byte [esp + 0xf], bl
test eax, eax
je 0x410026
mov byte [esp + 0xf], 0
test bl, 1
je 0x41004e
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
and ebx, 0xfffffffe
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41004e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [esp + 0xf], 0
je 0x410112
lea ecx, [esp + 0x10]
push ecx
call fcn.0040fe70
add esp, 4
mov edx, dword [esp + 0x10]
mov eax, dword [edx - 0xc]
mov byte [esp + 0x24], 1
test eax, eax
jle 0x4100a5
cmp eax, 0x104
jge 0x4100a5
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.0040f520
mov eax, dword [eax]
add esp, 0xc
push eax
or ebx, 2
call esi
mov byte [esp + 0xf], 1
test eax, eax
jne 0x4100aa
mov byte [esp + 0xf], 0
test bl, 2
je 0x4100cf
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4100cf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [esp + 0xf], 0
je 0x4100ed
mov ecx, dword [esp + 0x10]
push 0x103
push ecx
push 0x49dd40
call fcn.004412b5
add esp, 0xc
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
mov byte [esp + 0x24], 0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x410112
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x24], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41013a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [esp + 0x2c]
push 0x49dd40
mov ecx, esi
call fcn.0040fd40
mov eax, esi
mov ecx, dword [esp + 0x1c]
mov dword fs:[0], ecx
pop ecx
pop esi
pop ebx
add esp, 0x1c
ret
Function at 0x410460
Capabilities:
Delete file

Disassembly:
push 0xffffffffffffffff
push 0x45a858
mov eax, dword fs:[0]
push eax
sub esp, 8
push esi
mov eax, dword [0x49c23c]
xor eax, esp
push eax
lea eax, [esp + 0x10]
mov dword fs:[0], eax
mov eax, dword [0x4755e0]
cmp eax, 1
je 0x410540
test eax, eax
je 0x410540
lea eax, [esp + 0xc]
push 0
push eax
call fcn.0040ff70
push 0x462e84
push eax
lea ecx, [esp + 0x18]
push ecx
mov dword [esp + 0x2c], 0
call fcn.0040f5f0
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
add esp, 0x14
mov dword [esp + 0x18], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4104e9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 8]
push ecx
push 0x462e80
push str.test
push str.test
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
mov edx, dword [esp + 8]
neg eax
sbb eax, eax
inc eax
push edx
mov dword [0x4755e0], eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov eax, dword [esp + 8]
mov esi, dword [0x4755e0]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41053e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, esi
mov ecx, dword [esp + 0x10]
mov dword fs:[0], ecx
pop ecx
pop esi
add esp, 0x14
ret
Function at 0x413130
Capabilities:
Get file version info

Disassembly:
sub esp, 0xc
push ebx
mov ebx, dword [esp + 0x14]
push ebp
push edi
lea eax, [esp + 0x10]
push eax
push ebx
xor ebp, ebp
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov edi, eax
test edi, edi
jne 0x413154
pop edi
pop ebp
pop ebx
add esp, 0xc
ret
push esi
push edi
call fcn.0044066b
mov esi, eax
add esp, 4
test esi, esi
jne 0x41316c
pop esi
pop edi
pop ebp
pop ebx
add esp, 0xc
ret
push esi
push edi
push 0
push ebx
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
je 0x4131a7
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x14]
push edx
push 0x463624
push esi
call sub.VERSION.dll_VerQueryValueW
mov edx, dword [esp + 0x24]
mov ebp, eax
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 8]
mov dword [edx], ecx
mov eax, dword [eax + 0xc]
mov ecx, dword [esp + 0x28]
mov dword [ecx], eax
push esi
call fcn.00440dee
add esp, 4
pop esi
pop edi
mov eax, ebp
pop ebp
pop ebx
add esp, 0xc
ret

Function at 0x4131c0
Capabilities:
Check if file exists
Query or enumerate registry value

Disassembly:
sub esp, 8
push ebp
push esi
push edi
push 0x49eb18
xor ebp, ebp
push 0x20a
mov dword [esp + 0x14], ebp
call fcn.00442528
mov esi, eax
add esp, 8
cmp esi, ebp
je 0x4131f5
push 0x20a
push ebp
push esi
call fcn.00440500
add esp, 0xc
jmp 0x4131f7
xor esi, esi
push 0x49eb18
push 0x20a
call fcn.00442528
mov edi, eax
add esp, 8
cmp edi, ebp
je 0x413220
push 0x20a
push ebp
push edi
call fcn.00440500
add esp, 0xc
jmp 0x413222
xor edi, edi
lea eax, [esp + 0xc]
push eax
push 0x201
push ebp
push str.SOFTWAREMicrosoftWindowsCurrentVersionApp_Paths360safe.exe
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, ebp
jne 0x41329d
mov edx, dword [esp + 0xc]
push ebx
lea ecx, [esp + 0x14]
push ecx
push esi
push ebp
push ebp
push str.Path
push edx
mov dword [esp + 0x2c], 0x20a
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov ebx, eax
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test ebx, ebx
pop ebx
jne 0x41329d
push str.safemon360Cactus.tpi
push esi
push 0x463628
push 0x105
push edi
call fcn.0044250a
add esp, 0x14
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x41329d
mov ebp, 1
pop edi
pop esi
mov eax, ebp
pop ebp
add esp, 8
ret
Function at 0x4132b0
Capabilities:
Query or enumerate registry value

Disassembly:
sub esp, 0xc
lea eax, [esp]
push eax
push 0x20019
push 0
push str.SOFTWAREMicrosoftWindowsCurrentVersionApp_Paths360Safe.exe
push 0x80000002
mov dword [esp + 0x14], 0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x413346
mov ecx, dword [esp + 0x10]
lea eax, [esp + 4]
push eax
lea edx, [ecx + ecx]
push esi
lea ecx, [esp + 0x10]
push ecx
push 0
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
push str.Path
push edx
mov dword [esp + 0x20], 1
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov eax, dword [esp]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, esi
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x413320
sub eax, edx
sar eax, 1
je 0x413348
cmp word [esi + eax*2 - 2], 0x5c
je 0x413348
mov ecx, 0x5c
mov word [esi + eax*2], cx
add esp, 0xc
ret
xor eax, eax
add esp, 0xc
ret

Function at 0x413350
Capabilities:
Query or enumerate registry value

Disassembly:
sub esp, 0xc
lea eax, [esp]
push eax
push 0x20019
push 0
push str.SOFTWAREMicrosoftWindowsCurrentVersionApp_Paths360sd.exe
push 0x80000002
mov dword [esp + 0x14], 0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4133e6
mov ecx, dword [esp + 0x10]
lea eax, [esp + 4]
push eax
lea edx, [ecx + ecx]
push esi
lea ecx, [esp + 0x10]
push ecx
push 0
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
push str.Path
push edx
mov dword [esp + 0x20], 1
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov eax, dword [esp]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, esi
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4133c0
sub eax, edx
sar eax, 1
je 0x4133e8
cmp word [esi + eax*2 - 2], 0x5c
je 0x4133e8
mov ecx, 0x5c
mov word [esi + eax*2], cx
add esp, 0xc
ret
xor eax, eax
add esp, 0xc
ret
Function at 0x4138a0
Capabilities:
Enumerate files on windows

Disassembly:
sub esp, 0x86c
mov eax, dword [0x49c23c]
xor eax, esp
mov dword [esp + 0x868], eax
push 0x208
lea eax, [esp + 0x664]
push 0
push eax
call fcn.00440500
push 0x208
lea ecx, [esp + 0x260]
push 0
push ecx
call fcn.00440500
push 0x208
lea edx, [esp + 0x474]
push 0
push edx
call fcn.00440500
push 0x250
lea eax, [esp + 0x28]
push 0
push eax
call fcn.00440500
add esp, 0x30
push 0x104
lea ecx, [esp + 0x254]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea edx, [esp + 0x250]
push edx
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
xor eax, eax
lea esp, [esp]
movzx ecx, word [esp + eax + 0x250]
mov word [eax + 0x49e190], cx
add eax, 2
test cx, cx
jne 0x413930
push esi
push edi
push 0x49e190
call fcn.00441582
mov esi, dword [sym.imp.USER32.dll_wsprintfW]
lea eax, [esp + 0x25c]
push eax
lea ecx, [esp + 0x670]
push str._s.dll
push ecx
call esi
add esp, 0x10
lea edx, [esp + 8]
push edx
lea eax, [esp + 0x66c]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov edi, eax
cmp edi, 0xffffffff
je 0x413a05
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_FindNextFileW]
test dword [esp + 0xc], 0xffffffef
je 0x4139f1
push 0x208
lea ecx, [esp + 0x468]
push 0
push ecx
call fcn.00440500
lea edx, [esp + 0x44]
push edx
lea eax, [esp + 0x26c]
push eax
lea ecx, [esp + 0x478]
push 0x463628
push ecx
call esi
lea edx, [esp + 0x480]
push edx
call fcn.0043bbf0
add esp, 0x20
test al, al
je 0x4139f1
lea eax, [esp + 0x38]
push eax
mov ecx, 0x49e5a4
call fcn.004148e0
lea ecx, [esp + 0xc]
push ecx
push edi
call ebx
test eax, eax
jne 0x413994
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
pop ebx
mov ecx, dword [esp + 0x870]
pop edi
pop esi
xor ecx, esp
call fcn.004404e6
add esp, 0x86c
ret

Function at 0x413a20
Capabilities:
Get common file path

Disassembly:
push esi
xor esi, esi
call fcn.004138a0
push 0x104
push 0x49df88
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
push str.ntdll.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
je 0x413a70
push str.NtOpenFile
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x49e5a0], eax
test eax, eax
je 0x413a70
push 0x413570
push 0x49e5a0
call fcn.0042aa70
add esp, 8
pop esi
ret
mov eax, esi
pop esi
ret
Function at 0x413cb0
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x21c
mov eax, dword [0x49c23c]
xor eax, esp
mov dword [esp + 0x218], eax
push ebx
mov ebx, dword [ebp + 0x14]
push esi
push edi
push 0x15c
lea eax, [esp + 0xc8]
push 0
mov ecx, 0x2b
mov esi, str.SOFTWAREMicrosoftWindows_NTCurrentVersionImage_File_Execution_Options360tray.exe
lea edi, [esp + 0x20]
push eax
rep movsd dword es:[edi], dword [esi]
call fcn.00440500
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x14]
push edx
push 0
push 0x2001f
push 0
push 0
push 0
lea eax, [esp + 0x34]
push eax
push 0x80000002
mov dword [esp + 0x34], 0
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x413dba
mov eax, dword [ebp + 0xc]
mov esi, dword [esp + 0x10]
mov edi, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
test eax, eax
je 0x413d56
push 4
lea ecx, [esp + 0x10]
push ecx
push 4
push 0
push str.GlobalFlag
push esi
mov dword [esp + 0x24], eax
call edi
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x413d74
push 4
lea edx, [esp + 0x10]
push edx
push 4
push 0
push str.PageHeapFlags
push esi
mov dword [esp + 0x24], eax
call edi
mov eax, dword [ebp + 8]
test eax, eax
je 0x413d92
push 4
mov dword [esp + 0x10], eax
lea eax, [esp + 0x10]
push eax
push 4
push 0
push str.VerifierFlags
push esi
call edi
test ebx, ebx
je 0x413daf
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea ecx, [eax + eax + 2]
push ecx
push ebx
push 1
push 0
push str.PageHeapTargetDlls
push esi
call edi
test esi, esi
je 0x413dba
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [esp + 0x224]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004404e6
mov esp, ebp
pop ebp
ret