joyce8/EMBER2024-capa huggingface dataset:
Function at 0x37925
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
push edi
mov eax, dword [ebp + 0xc]
mov word [eax + 6], 0xffff
mov eax, dword [ebp + 0xc]
push eax
call fcn.000378ad
push 0
lea eax, [ebp - 0xc]
push eax
mov eax, dword [ebp + 0xc]
mov ax, word [eax + 2]
and eax, 0xffff
push eax
mov eax, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
push eax
call sub.KERNEL32.dll_ReadFile
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0xc]
push eax
call fcn.00037866
cmp dword [ebp - 8], 1
je 0x379db
call sub.KERNEL32.dll_GetLastError
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0x10], eax
jmp 0x379ba
mov eax, dword [ebp + 0xc]
mov word [eax + 6], 0x202
jmp 0x379d6
mov eax, dword [ebp + 0xc]
mov word [eax + 6], 0x20f
jmp 0x379d6
mov eax, dword [ebp + 0xc]
mov word [eax + 6], 0x21a
jmp 0x379d6
cmp dword [ebp - 0x10], 0x7a
je 0x37999
cmp dword [ebp - 0x10], 0x6f8
je 0x3798b
jmp 0x379a7
jmp 0x37a2b
mov eax, dword [ebp + 0xc]
mov ax, word [eax + 6]
and eax, 0xffff
cmp eax, 0xffff
jne 0x37a00
mov eax, dword [ebp + 0xc]
mov word [eax + 6], 0x20d
jmp 0x37a2b
mov eax, dword [ebp + 0xc]
mov ax, word [eax + 2]
and eax, 0xffff
cmp eax, dword [ebp - 0xc]
je 0x37a2b
mov eax, dword [ebp + 0xc]
cmp byte [eax + 6], 0
jne 0x37a2b
mov eax, dword [ebp + 0xc]
mov word [eax + 6], 0x21a
mov eax, dword [ebp + 0xc]
mov ax, word [eax + 6]
jmp 0x37a37
pop edi
pop esi
pop ebx
leave
ret 8

Function at 0x37a3e
Capabilities:
Contain obfuscated stackstrings

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
push edi
mov byte [ebp - 0x14], 0x5c
mov byte [ebp - 0x13], 0x5c
mov byte [ebp - 0x12], 0x2e
mov byte [ebp - 0x11], 0x5c
mov byte [ebp - 0x10], 0x52
mov byte [ebp - 0xf], 0x4e
mov byte [ebp - 0xe], 0x42
mov byte [ebp - 0xd], 0x4f
mov byte [ebp - 0xc], 0x44
mov byte [ebp - 0xb], 0x52
mov byte [ebp - 0xa], 0x56
movsx eax, byte [ebp + 0xc]
add eax, 0x30
mov byte [ebp - 9], al
mov byte [ebp - 8], 0
push 0
push pe_nt_image_headers32
push 3
push 0
push 3
push 0xc0000000
lea eax, [ebp - 0x14]
push eax
call sub.KERNEL32.dll_CreateFileA
mov ecx, dword [ebp + 8]
mov dword [ecx], eax
mov eax, dword [ebp + 8]
cmp dword [eax], 0xffffffff
jne 0x37b07
call sub.KERNEL32.dll_GetLastError
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0x18], eax
jmp 0x37aee
mov ax, 0x20c
jmp 0x37b10
mov eax, dword [ebp + 8]
cmp dword [eax], 0
je 0x37ae0
mov eax, dword [ebp + 8]
mov eax, dword [eax]
push eax
call sub.KERNEL32.dll_CloseHandle
mov ax, 0x20b
jmp 0x37b10
cmp dword [ebp - 0x18], 2
jb 0x37ac9
cmp dword [ebp - 0x18], 3
jbe 0x37ac0
jmp 0x37ac9
mov ax, 0x200
jmp 0x37b10
pop edi
pop esi
pop ebx
leave
ret 8
Function at 0x45bf0
Capabilities:
Accept command line arguments
Query environment variable

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x74
push ebx
push esi
push edi
mov dword [ebp - 0xc], esp
mov dword [ebp - 0x20], ebp
mov dword [ebp - 0x24], 0xffffffff
mov dword [ebp - 0x28], reloc.SHELL32.dll_DragFinish
mov dword [ebp - 0x2c], 0x48524
mov eax, dword fs:[0]
mov dword [ebp - 0x30], eax
lea eax, [ebp - 0x30]
mov dword fs:[0], eax
call sub.KERNEL32.dll_GetCommandLineA
mov dword [0x1a0ee0], eax
call sub.KERNEL32.dll_GetEnvironmentStrings
mov dword [0x1a0bd4], eax
call sub.KERNEL32.dll_GetVersion
mov dword [0x1b1f18], eax
mov al, ah
and eax, 0xff
mov dword [0x1b1f24], eax
mov eax, dword [0x1b1f18]
and eax, 0xff
mov dword [0x1b1f20], eax
shl eax, 8
add eax, dword [0x1b1f24]
mov dword [0x1b1f1c], eax
shr dword [0x1b1f18], 0x10
call fcn.00048c00
call fcn.00048b10
call fcn.00048900
call fcn.00048830
call fcn.00046b10
mov dword [ebp - 0x24], 0
mov esi, dword [0x1a0ee0]
mov al, byte [esi]
cmp al, 0x22
jne 0x45cb6
mov al, byte [ebp - 0x14]
inc esi
mov al, byte [esi]
or al, al
je 0x45cae
cmp al, 0x22
jne 0x45ca3
cmp byte [esi], 0x22
jne 0x45cc0
inc esi
jmp 0x45cc0
cmp al, 0x20
jbe 0x45cc0
inc esi
cmp byte [esi], 0x20
ja 0x45cba
cmp byte [esi], 0
je 0x45cd0
cmp byte [esi], 0x20
ja 0x45cd0
inc esi
cmp byte [esi], 0
jne 0x45cc5
mov dword [ebp - 0x48], 0
lea eax, [ebp - 0x74]
push eax
call sub.KERNEL32.dll_GetStartupInfoA
test byte [ebp - 0x48], 1
mov eax, 0xa
je 0x45cf3
mov eax, dword [ebp - 0x44]
and eax, 0xffff
push eax
push esi
push 0
push 0
call sub.KERNEL32.dll_GetModuleHandleA
push eax
call fcn.00057b6f
push eax
call fcn.00046b40
jmp 0x45d3c
add esp, 4
mov dword [ebp - 0x24], 0xffffffff
mov eax, dword [ebp - 0x30]
mov dword fs:[0], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret

Function at 0x45eb0
Capabilities:
Delete file

Disassembly:
mov eax, dword [esp + 4]
push eax
call sub.KERNEL32.dll_DeleteFileA
or eax, eax
mov eax, 0
jne 0x45ec8
call sub.KERNEL32.dll_GetLastError
or eax, eax
je 0x45edb
push eax
call fcn.000497b0
add esp, 4
mov eax, 0xffffffff
ret
sub eax, eax
ret

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

Disassembly:
mov eax, dword [esp + 4]
push eax
call sub.KERNEL32.dll_GetFileAttributesA
cmp eax, 0xffffffff
jne 0x471e3
call sub.KERNEL32.dll_GetLastError
push eax
call fcn.000497b0
add esp, 4
mov eax, 0xffffffff
ret
test al, 1
je 0x47208
test byte [esp + 8], 2
je 0x47208
mov dword [0x1b1f0c], 0xd
mov dword [0x1b1f10], 5
mov eax, 0xffffffff
ret
sub eax, eax
ret

Function at 0x48d20
Capabilities:
Write file on windows

Disassembly:
sub esp, 4
push edi
sub eax, eax
mov ecx, 0x1b3a40
mov edx, dword [esp + 0xc]
nop
cmp dword [ecx], edx
je 0x48d40
add ecx, 8
inc eax
cmp ecx, 0x1b3ab8
jb 0x48d30
shl eax, 3
cmp dword [eax + 0x1b3a40], edx
jne 0x48d73
mov edx, dword [eax + 0x1b3a44]
lea eax, [esp + 4]
push 0
push eax
mov edi, edx
mov ecx, 0xffffffff
sub eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
mov eax, dword [0x1b3330]
push eax
call sub.KERNEL32.dll_WriteFile
pop edi
add esp, 4
ret
Function at 0x4a5f0
Capabilities:
Write file on windows

Disassembly:
sub esp, 0x410
push ebx
push esi
push edi
push ebp
mov eax, dword [esp + 0x424]
cmp eax, dword [0x1b3220]
jb 0x4a630
mov dword [0x1b1f0c], 9
mov dword [0x1b1f10], 0
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x410
ret
mov dword [esp + 0x14], 0
sub ebx, ebx
mov ebp, dword [esp + 0x42c]
cmp ebp, ebx
jne 0x4a652
sub eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x410
ret
mov eax, dword [esp + 0x424]
test byte [eax + 0x1b3228], 0x20
je 0x4a66f
push 2
push 0
push eax
call fcn.0004a570
add esp, 0xc
mov eax, dword [esp + 0x424]
test byte [eax + 0x1b3228], 0x80
je 0x4a711
mov esi, dword [esp + 0x428]
mov dword [esp + 0x18], 0
mov eax, esi
sub eax, dword [esp + 0x428]
cmp eax, ebp
jae 0x4a759
lea edi, [esp + 0x1c]
mov eax, esi
sub eax, dword [esp + 0x428]
cmp eax, ebp
jae 0x4a6d2
mov al, byte [esi]
inc esi
cmp al, 0xa
jne 0x4a6c0
inc ebx
mov byte [edi], 0xd
inc edi
mov byte [edi], al
inc edi
mov eax, edi
lea ecx, [esp + 0x1c]
sub eax, ecx
cmp eax, 0x400
jl 0x4a6a7
lea eax, [esp + 0x1c]
sub edi, eax
lea eax, [esp + 0x10]
push 0
push eax
lea eax, [esp + 0x24]
push edi
push eax
mov eax, dword [esp + 0x434]
mov eax, dword [eax*4 + 0x1b3328]
push eax
call sub.KERNEL32.dll_WriteFile
or eax, eax
je 0x4a750
mov eax, dword [esp + 0x14]
add eax, dword [esp + 0x10]
mov dword [esp + 0x14], eax
cmp dword [esp + 0x10], edi
jge 0x4a692
jmp 0x4a759
lea eax, [esp + 0x10]
push 0
push eax
mov eax, dword [esp + 0x430]
push ebp
push eax
mov eax, dword [esp + 0x434]
mov eax, dword [eax*4 + 0x1b3328]
push eax
call sub.KERNEL32.dll_WriteFile
or eax, eax
je 0x4a750
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x10]
mov dword [esp + 0x14], eax
jmp 0x4a759
call sub.KERNEL32.dll_GetLastError
mov dword [esp + 0x18], eax
cmp dword [esp + 0x14], 0
jne 0x4a804
cmp dword [esp + 0x18], 0
je 0x4a7b2
cmp dword [esp + 0x18], 5
jne 0x4a795
mov dword [0x1b1f0c], 9
mov eax, dword [esp + 0x18]
mov dword [0x1b1f10], eax
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x410
ret
mov eax, dword [esp + 0x18]
push eax
call fcn.000497b0
add esp, 4
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x410
ret
mov eax, dword [esp + 0x424]
test byte [eax + 0x1b3228], 0x40
je 0x4a7e0
mov eax, dword [esp + 0x428]
cmp byte [eax], 0x1a
jne 0x4a7e0
sub eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x410
ret
mov dword [0x1b1f0c], 0x1c
mov dword [0x1b1f10], 0
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x410
ret
mov eax, dword [esp + 0x14]
sub eax, ebx
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x410
ret
Function at 0x4c410
Capabilities:
Clear file content

Disassembly:
mov eax, 0x1004
call fcn.000468d0
push ebx
push esi
push edi
push ebp
sub ebx, ebx
mov esi, dword [esp + 0x1018]
cmp dword [0x1b3220], esi
ja 0x4c449
mov dword [0x1b1f0c], 9
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x1004
ret
push 1
push 0
push esi
call fcn.0004a570
mov dword [esp + 0x1c], eax
add esp, 0xc
cmp eax, 0xffffffff
je 0x4c549
push 2
push 0
push esi
call fcn.0004a570
add esp, 0xc
cmp eax, 0xffffffff
je 0x4c549
mov ecx, dword [esp + 0x101c]
mov ebp, ecx
sub ebp, eax
or ebp, ebp
jle 0x4c4f1
lea edi, [esp + 0x14]
sub eax, eax
mov ecx, 0x400
rep stosd dword es:[edi], eax
push 0x8000
push esi
call fcn.0004e0a0
add esp, 8
mov edi, eax
mov eax, ebp
cmp eax, 0x1000
jl 0x4c4b3
mov eax, 0x1000
push eax
lea eax, [esp + 0x18]
push eax
push esi
call fcn.0004a5f0
add esp, 0xc
cmp eax, 0xffffffff
je 0x4c4d0
sub ebp, eax
or ebp, ebp
jg 0x4c4a5
jmp 0x4c4e5
cmp dword [0x1b1f10], 5
jne 0x4c4e3
mov dword [0x1b1f0c], 0xd
mov ebx, eax
push edi
push esi
call fcn.0004e0a0
add esp, 8
jmp 0x4c52c
jge 0x4c52c
push 0
push ecx
push esi
call fcn.0004a570
add esp, 0xc
push esi
call fcn.0004c330
add esp, 4
push eax
call sub.KERNEL32.dll_SetEndOfFile
cmp eax, 1
sbb ebx, ebx
cmp ebx, 0xffffffff
jne 0x4c52c
mov dword [0x1b1f0c], 0xd
call sub.KERNEL32.dll_GetLastError
mov dword [0x1b1f10], eax
mov eax, dword [esp + 0x10]
push 0
push eax
push esi
call fcn.0004a570
add esp, 0xc
mov eax, ebx
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x1004
ret
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x1004
ret
Function at 0x50000
Capabilities:
Create process on windows

Disassembly:
sub esp, 0x64
push ebx
push esi
push edi
push ebp
mov dword [esp + 0x18], 0
sub bl, bl
mov ebp, dword [esp + 0x78]
or ebp, ebp
je 0x50052
cmp ebp, 1
je 0x50052
cmp ebp, 2
jl 0x5002d
cmp ebp, 3
jle 0x50052
cmp ebp, 4
je 0x50050
mov dword [0x1b1f0c], 0x16
mov dword [0x1b1f10], 0
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x64
ret
mov bl, 1
mov eax, dword [esp + 0x80]
mov dword [esp + 0x1c], eax
mov cl, byte [eax]
or cl, cl
je 0x50078
inc eax
cmp byte [eax], 0
jne 0x50063
lea ecx, [eax + 1]
cmp byte [ecx], 0
je 0x5005d
mov byte [eax], 0x20
mov eax, ecx
jmp 0x5005d
lea edi, [esp + 0x30]
sub eax, eax
mov ecx, 0x11
rep stosd dword es:[edi], eax
mov dword [esp + 0x30], 0x44
mov eax, dword [0x1b3220]
mov dword [esp + 0x10], eax
or eax, eax
je 0x500b2
sub ecx, ecx
lea esp, [esp]
mov eax, dword [esp + 0x10]
cmp byte [eax + 0x1b3227], cl
jne 0x500b2
dec dword [esp + 0x10]
jne 0x500a0
mov eax, dword [esp + 0x10]
imul ax, ax, 5
add ax, 4
mov word [esp + 0x62], ax
push 1
xor eax, eax
mov ax, word [esp + 0x66]
push eax
call fcn.000475f0
mov dword [esp + 0x6c], eax
mov ecx, dword [esp + 0x18]
add esp, 8
mov dword [eax], ecx
mov eax, dword [esp + 0x10]
mov esi, 0x1b3228
mov edi, dword [esp + 0x64]
add edi, 4
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x10]
lea ecx, [eax*4]
mov esi, 0x1b3328
mov edx, dword [esp + 0x64]
lea edi, [eax + edx + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
or bl, bl
je 0x50158
sub eax, eax
sub edx, edx
mov ecx, dword [esp + 0x64]
mov byte [eax + ecx + 4], dl
inc eax
cmp eax, 2
jle 0x50122
sub eax, eax
mov ecx, 0xffffffff
lea edx, [eax*4]
add edx, dword [esp + 0x10]
mov esi, dword [esp + 0x64]
mov dword [edx + esi + 4], ecx
inc eax
cmp eax, 2
jle 0x50137
mov dword [esp + 0x18], 8
mov dword [0x1b1f0c], 0
lea eax, [esp + 0x20]
push eax
mov dword [0x1b1f10], 0
lea eax, [esp + 0x34]
push eax
mov eax, dword [esp + 0x8c]
push 0
push eax
mov eax, dword [esp + 0x28]
push eax
push 1
push 0
mov eax, dword [esp + 0x38]
push 0
push eax
mov eax, dword [esp + 0xa0]
push eax
call sub.KERNEL32.dll_CreateProcessA
mov esi, eax
call sub.KERNEL32.dll_GetLastError
mov edi, eax
mov eax, dword [esp + 0x64]
push eax
call fcn.00046df0
add esp, 4
or esi, esi
jne 0x501d0
push edi
call fcn.000497b0
add esp, 4
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x64
ret
cmp ebp, 2
jne 0x501e1
push 0
call fcn.00046b60
add esp, 4
jmp 0x50234
or ebp, ebp
jne 0x50210
mov eax, dword [esp + 0x20]
push 0xffffffffffffffff
push eax
call sub.KERNEL32.dll_WaitForSingleObject
lea eax, [esp + 0x14]
push eax
mov eax, dword [esp + 0x24]
push eax
call sub.KERNEL32.dll_GetExitCodeProcess
mov eax, dword [esp + 0x20]
push eax
call sub.KERNEL32.dll_CloseHandle
jmp 0x50234
cmp ebp, 4
mov eax, dword [esp + 0x20]
jne 0x50230
push eax
call sub.KERNEL32.dll_CloseHandle
mov dword [esp + 0x14], 0
jmp 0x50234
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
push eax
call sub.KERNEL32.dll_CloseHandle
mov eax, dword [esp + 0x14]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x64
ret
Function at 0x53329
Capabilities:
Get graphical window text

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x200
push esi
push edi
mov esi, ecx
push 0x100
lea eax, [ebp - 0x100]
push eax
push dword [esi + 4]
call sub.USER32.dll_GetWindowTextA
lea eax, [ebp - 0x100]
push eax
lea eax, [ebp - 0x200]
push eax
call sub.KERNEL32.dll_lstrcpyA
push 0x2d
lea eax, [ebp - 0x100]
push eax
call fcn.000472f0
add esp, 8
mov edi, eax
or edi, edi
je 0x5338f
push edi
lea eax, [ebp - 0x100]
push eax
call sub.USER32.dll_CharPrevA
cmp byte [eax], 0x20
jne 0x53388
mov edi, eax
or edi, edi
je 0x5338f
mov byte [edi], 0
mov edi, dword [ebp + 8]
or edi, edi
je 0x533dd
push 0x1b06bc
lea eax, [ebp - 0x100]
push eax
call sub.KERNEL32.dll_lstrcatA
push edi
lea eax, [ebp - 0x100]
push eax
call sub.KERNEL32.dll_lstrcatA
mov eax, dword [esi + 0xc]
or eax, eax
jle 0x533dd
push eax
push 0x1b06b8
lea eax, [ebp - 0x100]
push eax
call sub.KERNEL32.dll_lstrlenA
lea eax, [ebp + eax - 0x100]
push eax
call sub.USER32.dll_wsprintfA
add esp, 0xc
lea eax, [ebp - 0x200]
push eax
lea eax, [ebp - 0x100]
push eax
call sub.KERNEL32.dll_lstrcmpA
or eax, eax
je 0x53403
lea eax, [ebp - 0x100]
push eax
push dword [esi + 4]
call sub.USER32.dll_SetWindowTextA
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4

Function at 0x538bb
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push esi
push edi
lea eax, [ebp - 0xc]
push eax
mov esi, dword [ebp + 8]
push esi
push 0x104
mov edi, dword [ebp + 0xc]
push edi
call sub.KERNEL32.dll_GetFullPathNameA
or eax, eax
jne 0x538e8
push edi
push esi
call sub.KERNEL32.dll_lstrcpyA
sub eax, eax
jmp 0x53931
mov al, byte [esi]
mov byte [ebp - 4], al
mov al, byte [esi + 1]
mov byte [ebp - 3], al
mov al, byte [esi + 2]
mov byte [ebp - 2], al
lea eax, [ebp - 8]
mov byte [ebp - 1], 0
push 0
push 0
push eax
lea eax, [ebp - 0x10]
push eax
push 0
push 0
push 0
lea eax, [ebp - 4]
push eax
call sub.KERNEL32.dll_GetVolumeInformationA
or eax, eax
jne 0x53920
sub eax, eax
jmp 0x53931
test byte [ebp - 8], 2
jne 0x5392c
push esi
call sub.USER32.dll_CharUpperA
mov eax, 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8

Function at 0x539c4
Capabilities:
Get graphical window text

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
push ebx
push esi
push edi
mov esi, dword [ebp + 0xc]
push esi
call sub.KERNEL32.dll_lstrlenA
mov edi, eax
cmp edi, 0x40
ja 0x53a00
push 0x40
lea eax, [ebp - 0x40]
push eax
mov ebx, dword [ebp + 8]
push ebx
call sub.USER32.dll_GetWindowTextA
cmp eax, edi
jne 0x53a03
push esi
lea eax, [ebp - 0x40]
push eax
call sub.KERNEL32.dll_lstrcmpA
or eax, eax
je 0x53a0a
jmp 0x53a03
mov ebx, dword [ebp + 8]
push esi
push ebx
call sub.USER32.dll_SetWindowTextA
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
Function at 0x54a88
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
cmp dword [eax + 4], 0x100
jne 0x54ad1
cmp dword [eax + 8], 0x70
jne 0x54ad1
mov eax, dword [eax + 0xc]
shr eax, 0x10
test ah, 0x40
jne 0x54ad1
push 0x10
call sub.USER32.dll_GetKeyState
or ax, ax
jl 0x54ad1
push 0x11
call sub.USER32.dll_GetKeyState
or ax, ax
jl 0x54ad1
push 0x12
call sub.USER32.dll_GetKeyState
or ax, ax
mov eax, 1
jge 0x54ad3
sub eax, eax
pop ebp
ret 4

Function at 0x56750
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
push edi
mov esi, ecx
mov edi, 1
mov eax, dword [ebp + 8]
or eax, eax
je 0x56805
push 0xf0
push eax
push dword [0x1afc44]
call sub.KERNEL32.dll_FindResourceA
or eax, eax
je 0x56805
push eax
push dword [0x1afc44]
call sub.KERNEL32.dll_LoadResource
mov dword [ebp - 8], eax
or eax, eax
je 0x56805
push eax
call sub.KERNEL32.dll_LockResource
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
mov cx, word [eax]
or cx, cx
je 0x567fd
add dword [ebp - 4], 2
mov eax, dword [ebp - 4]
mov dx, word [eax]
add dword [ebp - 4], 2
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
add dword [ebp - 4], 4
cmp dx, 0x401
jne 0x567cf
mov dx, 0x180
jmp 0x567da
cmp dx, 0x403
jne 0x567da
mov dx, 0x143
movzx edx, dx
movzx eax, cx
push dword [ebp - 4]
push 0
push edx
push eax
push dword [esi + 4]
call sub.USER32.dll_SendDlgItemMessageA
cmp eax, 0xffffffff
jne 0x567f6
sub edi, edi
add dword [ebp - 4], ebx
or edi, edi
jne 0x567a0
push dword [ebp - 8]
call sub.KERNEL32.dll_FreeResource
or edi, edi
je 0x5681b
push 0
push 0
push 0
push 0x364
mov ecx, esi
call fcn.00056414
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
Function at 0x4079d7
Capabilities:
Identify system language via api

Disassembly:
push ebx
xor eax, eax
push eax
call fcn.00453120
push dword [esp + 0xc]
call fcn.00418690
push edx
call fcn.00453030
pop edx
push eax
push edx
call fcn.00453030
pop edx
push eax
call sub.KERNEL32.dll_GetUserDefaultLangID
cdq
push edx
push eax
call fcn.00450de0
lea eax, [esp + 4]
push eax
call fcn.004530b0
push dword [esp]
call fcn.00450e70
mov ebx, eax
cmp ebx, 3
jne 0x407a46
push edx
call fcn.00453030
pop edx
push eax
mov edx, 0x52641c
push edx
call fcn.00453060
mov edx, dword [esp + 4]
push edx
call fcn.00453060
lea eax, [esp + 4]
push eax
call fcn.004530b0
mov edx, dword [esp]
push edx
call fcn.00453030
pop edx
push eax
push edx
call fcn.00453060
pop eax
push eax
call fcn.00418660
pop edx
add eax, edx
jmp 0x407a6d
push dword [esp]
call fcn.004531b0
add esp, 4
pop ebx
ret
Function at 0x41c9f7
Capabilities:
Parse pe header

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

Function at 0x41f4bd
Capabilities:
Allocate thread local storage

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push str.FlsAlloc
push 0x506ca0
push str.FlsAlloc
push 0x1f
call fcn.0041f18f
mov esi, eax
add esp, 0x10
test esi, esi
je 0x41f4f1
push dword [ebp + 8]
mov ecx, esi
call dword [section..00cfg]
call esi
jmp 0x41f4f7
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
pop esi
pop ebp
ret 4

Function at 0x41f53b
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push str.FlsGetValue
push 0x506cc4
push str.FlsGetValue
push 0x21
call fcn.0041f18f
mov esi, eax
add esp, 0x10
test esi, esi
je 0x41f572
push dword [ebp + 8]
mov ecx, esi
call dword [section..00cfg]
call esi
pop esi
pop ebp
ret 4
pop esi
pop ebp
jmp dword [sym.imp.KERNEL32.dll_TlsGetValue]

Function at 0x41f57a
Capabilities:
Set thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push esi
push str.FlsSetValue
push 0x506cd8
push str.FlsSetValue
push 0x22
call fcn.0041f18f
mov esi, eax
add esp, 0x10
test esi, esi
je 0x41f5b4
push dword [ebp + 0xc]
mov ecx, esi
push dword [ebp + 8]
call dword [section..00cfg]
call esi
pop esi
pop ebp
ret 8
pop esi
pop ebp
jmp dword [sym.imp.KERNEL32.dll_TlsSetValue]

Function at 0x41fd73
Capabilities:
Print debug messages

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
pop ebp
jmp fcn.0041fcea
Function at 0x421a2b
Capabilities:
Enumerate files on windows

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x264
mov eax, dword [0x626364]
xor eax, ebp
mov dword [ebp - 4], eax
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 0x25c], ecx
cmp edx, edi
je 0x421a76
movzx eax, word [edx]
lea ecx, [ebp - 0x255]
push eax
call fcn.00421c87
test al, al
jne 0x421a70
sub edx, 2
cmp edx, edi
jne 0x421a56
mov ecx, dword [ebp - 0x25c]
movzx esi, word [edx]
cmp esi, 0x3a
jne 0x421a98
lea eax, [edi + 2]
cmp edx, eax
je 0x421a98
push ecx
xor ebx, ebx
push ebx
push ebx
push edi
call fcn.004216f2
add esp, 0x10
jmp 0x421b92
push esi
lea ecx, [ebp - 0x255]
call fcn.00421c87
sub edx, edi
movzx eax, al
sar edx, 1
inc edx
neg eax
sbb eax, eax
xor ebx, ebx
push ebx
push ebx
and eax, edx
push ebx
mov dword [ebp - 0x260], eax
lea eax, [ebp - 0x254]
push eax
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_FindFirstFileExW]
mov esi, eax
cmp esi, 0xffffffff
jne 0x421adb
push dword [ebp - 0x25c]
jmp 0x421a88
mov ebx, dword [ebp - 0x25c]
push 0x2e
mov eax, dword [ebx + 4]
sub eax, dword [ebx]
sar eax, 2
mov dword [ebp - 0x25c], eax
pop eax
cmp word [ebp - 0x228], ax
jne 0x421b18
cmp word [ebp - 0x226], 0
je 0x421b39
cmp word [ebp - 0x226], ax
jne 0x421b18
cmp word [ebp - 0x224], 0
je 0x421b39
push ebx
push dword [ebp - 0x260]
lea eax, [ebp - 0x228]
push edi
push eax
call fcn.004216f2
add esp, 0x10
mov dword [ebp - 0x264], eax
test eax, eax
jne 0x421b85
lea eax, [ebp - 0x254]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
push 0x2e
test eax, eax
pop eax
jne 0x421af2
mov eax, dword [ebx + 4]
mov edx, dword [ebx]
sub eax, edx
mov ecx, dword [ebp - 0x25c]
sar eax, 2
cmp ecx, eax
jne 0x421b6d
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
xor eax, eax
jmp 0x421b92
push 0x421142
sub eax, ecx
push 4
push eax
lea eax, [edx + ecx*4]
push eax
call fcn.00429150
add esp, 0x10
jmp 0x421b62
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, dword [ebp - 0x264]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0041948f
leave
ret

Function at 0x424895
Capabilities:
Get geographical location

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push ecx
push esi
push edi
call fcn.0041dd6b
mov esi, dword [ebp + 8]
mov edi, eax
push 2
lea eax, [ebp - 4]
mov ecx, esi
push eax
and ecx, 0x3ff
push 0x20000001
or ecx, 0x400
push ecx
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
test eax, eax
je 0x424904
cmp esi, dword [ebp - 4]
je 0x4248ff
cmp dword [ebp + 0xc], 0
je 0x4248ff
mov esi, dword [edi + 0x50]
lea ecx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x4248dc
push dword [edi + 0x50]
sub esi, ecx
sar esi, 1
call fcn.004243e7
pop ecx
xor ecx, ecx
cmp eax, esi
setne cl
mov eax, ecx
jmp 0x424906
xor eax, eax
inc eax
jmp 0x424906
xor eax, eax
pop edi
pop esi
leave
ret