joyce8/EMBER2024-capa huggingface dataset:
Function at 0x402b20
Capabilities:
Accept command line arguments

Disassembly:
push ebx
push esi
push edi
add esp, 0xfffffef8
mov ebx, edx
mov esi, eax
mov eax, ebx
call fcn.00404308
test esi, esi
jne 0x402b56
push 0x105
lea eax, [esp + 4]
push eax
push 0
call sub.kernel32.dll_GetModuleFileNameA
mov ecx, eax
mov edx, esp
mov eax, ebx
call fcn.004043f8
jmp 0x402b74
call sub.kernel32.dll_GetCommandLineA
mov edi, eax
mov edx, ebx
mov eax, edi
call fcn.004029d4
mov edi, eax
test esi, esi
je 0x402b74
cmp dword [ebx], 0
je 0x402b74
dec esi
jmp 0x402b5d
add esp, 0x108
pop edi
pop esi
pop ebx
ret

Function at 0x402df4
Capabilities:
Generate random numbers using the delphi lcg

Disassembly:
push ebx
xor ebx, ebx
imul edx, dword [ebx + 0x485008], 0x8088405
inc edx
mov dword [ebx + 0x485008], edx
mul edx
mov eax, edx
pop ebx
ret

Function at 0x403258
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
movzx eax, word [0x485024]
mov dword [ebp - 8], eax
lea eax, [ebp - 4]
push eax
push 1
push 0
push 0x4032f0
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
jne 0x4032d0
xor eax, eax
push ebp
push 0x4032c9
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 0xc], 4
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 8]
push eax
push 0
push 0
push 0x40330c
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegQueryValueExA
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4032d0
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegCloseKey
ret
mov ax, word [0x485024]
and ax, 0xffc0
mov dx, word [ebp - 8]
and dx, 0x3f
or ax, dx
mov word [0x485024], ax
mov esp, ebp
pop ebp
ret

Function at 0x404108
Capabilities:
Write file on windows

Disassembly:
push ecx
cmp byte [0x48704c], 0
je 0x404169
cmp word [0x487220], 0xd7b2
jne 0x404131
cmp dword [0x487228], 0
jbe 0x404131
mov eax, 0x48721c
call dword [0x487238]
push 0
lea eax, [esp + 4]
push eax
push 0x1e
push 0x485070
push 0xfffffffffffffff5
call sub.kernel32.dll_GetStdHandle
push eax
call sub.kernel32.dll_WriteFile
push 0
lea eax, [esp + 4]
push eax
push 2
push 0x404190
push 0xfffffffffffffff5
call sub.kernel32.dll_GetStdHandle
push eax
call sub.kernel32.dll_WriteFile
pop edx
ret
cmp byte [0x485034], 0
jne 0x404185
push 0
push 0x485068
push 0x485070
push 0
call sub.user32.dll_MessageBoxA
pop edx
ret

Function at 0x4042bc
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
mov ebx, eax
mov eax, 8
call fcn.00402798
mov dword [eax], edi
mov edx, dword [ebp + 0x10]
mov dword [eax + 4], edx
mov byte [0x48704d], 1
mov edx, dword [ebp + 8]
push edx
mov edx, dword [ebp + 0xc]
push edx
push eax
mov eax, 0x404284
push eax
push esi
push ebx
call sub.kernel32.dll_CreateThread
pop edi
pop esi
pop ebx
pop ebp
ret 0xc
Function at 0x406388
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
xor edx, edx
mov dword [ebp - 0x10], edx
xor edx, edx
push ebp
push 0x4063ee
push dword fs:[edx]
mov dword fs:[edx], esp
push 7
lea edx, [ebp - 0xb]
push edx
push 0x1004
push eax
call sub.kernel32.dll_GetLocaleInfoA
lea eax, [ebp - 0x10]
lea edx, [ebp - 0xb]
mov ecx, 7
call fcn.00404578
mov eax, dword [ebp - 0x10]
lea edx, [ebp - 4]
call fcn.00402e10
mov ebx, eax
cmp dword [ebp - 4], 0
je 0x4063d8
xor ebx, ebx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4063f5
lea eax, [ebp - 0x10]
call fcn.00404308
ret

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

Disassembly:
push ebx
mov ebx, eax
mov eax, ebx
call fcn.004047c8
push eax
call sub.kernel32.dll_GetFileAttributesA
cmp eax, 0xffffffff
je 0x408f25
test al, 0x10
jne 0x408f29
xor eax, eax
pop ebx
ret
mov al, 1
pop ebx
ret

Function at 0x40be08
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff00
push ebx
push esi
mov esi, ecx
mov ebx, dword [ebp + 8]
push pe_nt_image_headers32
lea ecx, [ebp - 0x100]
push ecx
push edx
push eax
call sub.kernel32.dll_GetLocaleInfoA_1
test eax, eax
jle 0x40be41
mov ecx, eax
dec ecx
lea edx, [ebp - 0x100]
mov eax, ebx
call fcn.004043f8
jmp 0x40be4a
mov eax, ebx
mov edx, esi
call fcn.0040435c
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4

Function at 0x40be54
Capabilities:
Get geographical location

Disassembly:
push ebx
push esi
push edi
push ecx
mov ebx, ecx
mov esi, edx
mov edi, eax
push 2
lea eax, [esp + 4]
push eax
push esi
push edi
call sub.kernel32.dll_GetLocaleInfoA_1
test eax, eax
jle 0x40be75
mov al, byte [esp]
jmp 0x40be77
mov eax, ebx
pop edx
pop edi
pop esi
pop ebx
ret

Function at 0x40c4fc
Capabilities:
Write file on windows

Disassembly:
add esp, 0xfffffbbc
push 0x400
lea ecx, [esp + 0x48]
call 0x40c374
mov eax, dword [0x486710]
cmp byte [eax], 0
je 0x40c578
mov eax, dword [0x4864c0]
call fcn.00402c60
call fcn.00402900
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x48]
push eax
call sub.user32.dll_CharToOemA
push 0
lea eax, [esp + 4]
push eax
lea eax, [esp + 0x4c]
call fcn.004093f0
push eax
lea eax, [esp + 0x50]
push eax
push 0xfffffffffffffff4
call sub.kernel32.dll_GetStdHandle_1
push eax
call sub.kernel32.dll_WriteFile_1
push 0
lea eax, [esp + 4]
push eax
push 2
push 0x40c5c0
push 0xfffffffffffffff4
call sub.kernel32.dll_GetStdHandle_1
push eax
call sub.kernel32.dll_WriteFile_1
jmp 0x40c5ae
push 0x40
lea eax, [esp + 8]
push eax
mov eax, dword [0x486450]
mov eax, dword [eax + 4]
push eax
mov eax, dword [0x487668]
call fcn.00405830
push eax
call sub.user32.dll_LoadStringA_1
push 0x2010
lea eax, [esp + 8]
push eax
lea eax, [esp + 0x4c]
push eax
push 0
call sub.user32.dll_MessageBoxA_1
add esp, 0x444
ret
Function at 0x422214
Capabilities:
Allocate or change rwx memory

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov edi, 0x487890
cmp dword [edi], 0
jne 0x422290
push 0x40
push 0x1000
push 0x1000
push 0
call sub.kernel32.dll_VirtualAlloc_1
mov esi, eax
mov eax, dword [0x48788c]
mov dword [esi], eax
lea edx, [esi + 4]
mov eax, 0x4855b0
mov ecx, 2
call fcn.00402994
mov edx, 0x4221ec
lea eax, [esi + 5]
call fcn.0042220c
mov dword [esi + 6], eax
lea ebx, [esi + 0xa]
mov byte [ebx], 0xe8
lea edx, [esi + 4]
mov eax, ebx
call fcn.0042220c
mov dword [ebx + 1], eax
mov eax, dword [edi]
mov dword [ebx + 5], eax
mov dword [edi], ebx
add ebx, 0xd
mov eax, ebx
sub eax, esi
cmp eax, 0xffc
jl 0x422265
mov dword [0x48788c], esi
mov eax, dword [edi]
mov ebx, dword [edi]
mov edx, dword [ebx + 5]
mov dword [edi], edx
mov edx, dword [ebp + 8]
mov dword [ebx + 5], edx
mov edx, dword [ebp + 0xc]
mov dword [ebx + 9], edx
pop edi
pop esi
pop ebx
pop ebp
ret 8

Function at 0x424d50
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
push esi
push edi
mov esi, ecx
mov edi, edx
mov ebx, eax
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 4]
push eax
push 0
push 0x2001f
push 0
push 0x424de4
push 0
mov eax, ebx
call fcn.004047c8
push eax
mov eax, dword [ebp + 8]
push eax
call sub.advapi32.dll_RegCreateKeyExA
mov ebx, eax
test ebx, ebx
jne 0x424dbf
mov eax, esi
call fcn.004045c8
inc eax
push eax
mov eax, esi
call fcn.004047c8
push eax
push 1
push 0
mov eax, edi
call fcn.004047c8
push eax
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegSetValueExA
mov ebx, eax
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegCloseKey_1
test ebx, ebx
je 0x424dda
mov ecx, dword [0x4864d8]
mov dl, 1
mov eax, dword [0x423a68]
call fcn.0040c68c
call fcn.00403c38
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
ret 4
Function at 0x424e38
Capabilities:
Get hostname

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffb8
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x48], ebx
mov edi, ecx
mov esi, edx
mov ebx, eax
lea eax, [ebp - 0x10]
mov edx, dword [0x417460]
call fcn.00404d0c
xor eax, eax
push ebp
push 0x424f7c
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [0x4855e4], 0
jne 0x424e8b
mov ecx, dword [0x486380]
mov dl, 1
mov eax, dword [0x4078ec]
call fcn.0040c68c
call fcn.00403c38
lea eax, [ebp - 0x20]
xor ecx, ecx
mov edx, 0x10
call fcn.00402dd4
mov eax, ebx
call fcn.00404b7c
mov dword [ebp - 0x1c], eax
push esi
push edi
mov esi, 0x424f8c
lea edi, [ebp - 0x30]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop edi
pop esi
lea eax, [ebp - 0x30]
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0xc]
call fcn.00405e00
xor eax, eax
mov dword [ebp - 8], eax
mov eax, ebx
call fcn.00404b8c
test eax, eax
jle 0x424f23
mov dword [ebp - 4], 0x10
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x40]
push eax
call sub.kernel32.dll_GetComputerNameA
test eax, eax
je 0x424f1c
lea eax, [ebp - 0x44]
mov edx, ebx
call fcn.00404590
mov eax, dword [ebp - 0x44]
push eax
lea eax, [ebp - 0x48]
lea edx, [ebp - 0x40]
mov ecx, 0x10
call fcn.00404578
mov eax, dword [ebp - 0x48]
pop edx
call fcn.004086e8
test eax, eax
jne 0x424f1c
mov ebx, 0x15
jmp 0x424f28
mov ebx, 0x10
jmp 0x424f28
mov ebx, 0x15
lea eax, [ebp - 0x10]
push eax
push 1
lea eax, [ebp - 0x20]
push eax
push ebx
push 0
push esi
call dword [0x4855e4]
call fcn.00424c84
mov eax, dword [ebp - 8]
call fcn.00424c84
mov eax, edi
mov edx, dword [ebp - 0xc]
call fcn.00405e18
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x424f83
lea eax, [ebp - 0x48]
mov edx, 2
call fcn.0040432c
lea eax, [ebp - 0x10]
mov edx, dword [0x417460]
call fcn.00404ddc
ret
Function at 0x426f2f
Capabilities:
Delete registry key

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffc4
push ebx
xor ecx, ecx
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x14], ecx
mov ebx, edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x426f71
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x10]
mov edx, ebx
call fcn.004043a0
mov eax, dword [ebp - 0x10]
call fcn.00426b34
mov byte [ebp - 9], al
cmp byte [ebp - 9], 0
jne 0x426e5a
lea eax, [ebp - 0x10]
mov ecx, 1
mov edx, 1
call fcn.00404868
mov eax, dword [ebp - 4]
mov eax, dword [eax + 4]
mov dword [ebp - 0x18], eax
mov edx, ebx
mov eax, dword [ebp - 4]
call fcn.00427234
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
je 0x426f2f
xor eax, eax
push ebp
push 0x426f28
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 4]
call fcn.00426ce0
lea edx, [ebp - 0x38]
mov eax, dword [ebp - 4]
call fcn.00426f80
test al, al
je 0x426f06
mov ecx, dword [ebp - 0x34]
inc ecx
lea eax, [ebp - 0x14]
xor edx, edx
call fcn.004043f8
mov ebx, dword [ebp - 0x38]
dec ebx
cmp ebx, 0
jl 0x426f06
mov eax, dword [ebp - 0x34]
inc eax
mov dword [ebp - 8], eax
push 0
push 0
push 0
push 0
lea eax, [ebp - 8]
push eax
mov eax, dword [ebp - 0x14]
call fcn.004047c8
push eax
push ebx
mov eax, dword [ebp - 0x1c]
push eax
call sub.advapi32.dll_RegEnumKeyExA
test eax, eax
jne 0x426f00
mov eax, dword [ebp - 0x14]
call fcn.004047c8
mov edx, eax
lea eax, [ebp - 0x3c]
call fcn.00404500
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 4]
call fcn.00426e08
dec ebx
cmp ebx, 0xffffffff
jne 0x426eb9
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x426f2f
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 4]
call fcn.00426ce0
mov eax, dword [ebp - 0x1c]
push eax
call sub.advapi32.dll_RegCloseKey_1
ret
mov eax, dword [ebp - 0x10]
call fcn.004047c8
push eax
mov dl, byte [ebp - 9]
mov eax, dword [ebp - 4]
call fcn.00426ccc
push eax
call sub.advapi32.dll_RegDeleteKeyA
test eax, eax
sete bl
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x426f78
lea eax, [ebp - 0x3c]
call fcn.00404308
lea eax, [ebp - 0x14]
mov edx, 2
call fcn.0040432c
ret

Function at 0x426f80
Capabilities:
Query or enumerate registry key

Disassembly:
push ebx
push esi
mov ebx, edx
mov esi, eax
mov eax, ebx
xor ecx, ecx
mov edx, 0x1c
call fcn.00402dd4
lea eax, [ebx + 0x14]
push eax
push 0
lea eax, [ebx + 0x10]
push eax
lea eax, [ebx + 0xc]
push eax
lea eax, [ebx + 8]
push eax
push 0
lea eax, [ebx + 4]
push eax
push ebx
push 0
push 0
push 0
mov eax, dword [esi + 4]
push eax
call sub.advapi32.dll_RegQueryInfoKeyA
test eax, eax
sete al
mov edx, dword [0x486850]
cmp byte [edx + 0xc], 0
je 0x426fe4
mov edx, dword [0x486848]
cmp dword [edx], 2
jne 0x426fe4
mov edx, dword [ebx + 4]
add dword [ebx + 4], edx
mov edx, dword [ebx + 0xc]
add dword [ebx + 0xc], edx
pop esi
pop ebx
ret
Function at 0x427148
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
push ebx
push esi
push edi
mov dword [ebp - 4], ecx
mov edi, edx
mov ebx, eax
mov al, byte [ebp + 8]
call fcn.00426b48
mov esi, eax
mov eax, dword [ebp + 0xc]
push eax
mov eax, dword [ebp - 4]
push eax
push esi
push 0
mov eax, edi
call fcn.004047c8
push eax
mov eax, dword [ebx + 4]
push eax
call sub.advapi32.dll_RegSetValueExA
test eax, eax
je 0x4271a6
mov dword [ebp - 0xc], edi
mov byte [ebp - 8], 0xb
lea eax, [ebp - 0xc]
push eax
push 0
mov ecx, dword [0x486608]
mov dl, 1
mov eax, dword [0x426a40]
call fcn.0040c6c8
call fcn.00403c38
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8

Function at 0x4271b0
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
mov ebx, eax
xor eax, eax
mov dword [ebp - 4], eax
lea eax, [ebp + 0xc]
push eax
push edi
lea eax, [ebp - 4]
push eax
push 0
mov eax, esi
call fcn.004047c8
push eax
mov eax, dword [ebx + 4]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
je 0x427208
mov dword [ebp - 0xc], esi
mov byte [ebp - 8], 0xb
lea eax, [ebp - 0xc]
push eax
push 0
mov ecx, dword [0x486864]
mov dl, 1
mov eax, dword [0x426a40]
call fcn.0040c6c8
call fcn.00403c38
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp - 4]
call fcn.00426b78
mov edx, dword [ebp + 8]
mov byte [edx], al
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8

Function at 0x42806c
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xfffffff8
mov dword [esp], ecx
mov esi, edx
mov ebx, eax
mov eax, 0x10000
call fcn.00402798
mov dword [ebx + 0x2e8], eax
mov edi, esi
mov ebp, dword [esp]
test ebp, ebp
jle 0x4280b1
mov esi, 1
mov eax, dword [esp]
dec eax
call fcn.00402df4
inc eax
mov edx, dword [ebx + 0x2e8]
mov word [edx + esi*2 - 2], ax
inc esi
dec ebp
jne 0x428098
mov ebp, dword [esp]
test ebp, ebp
jle 0x428104
mov esi, 1
mov al, byte [ebx + 0x43]
xor al, byte [ebx + 0x42]
xor al, byte [ebx + 0x41]
xor al, byte [ebx + 0x40]
mov byte [esp + 4], al
mov eax, 0xff
call fcn.00402df4
mov dl, byte [edi + esi - 1]
xor dl, byte [esp + 4]
xor al, dl
mov byte [edi + esi - 1], al
xor eax, eax
mov al, byte [edi + esi - 1]
add eax, dword [ebx + 0x40]
add eax, dword [ebx + 0x3c]
imul dword [ebx + 0x2f8]
add eax, dword [ebx + 0x2fc]
mov dword [ebx + 0x40], eax
inc esi
dec ebp
jne 0x4280bd
mov ebp, dword [esp]
test ebp, ebp
jle 0x428153
mov esi, 1
mov eax, dword [ebx + 0x2e8]
movzx eax, word [eax + esi*2 - 2]
mov al, byte [edi + eax - 1]
cmp al, byte [edi + esi - 1]
je 0x42814f
xor byte [edi + esi - 1], al
mov eax, dword [ebx + 0x2e8]
movzx eax, word [eax + esi*2 - 2]
mov dl, byte [edi + esi - 1]
xor byte [edi + eax - 1], dl
mov eax, dword [ebx + 0x2e8]
movzx eax, word [eax + esi*2 - 2]
mov al, byte [edi + eax - 1]
xor byte [edi + esi - 1], al
inc esi
dec ebp
jne 0x428110
mov edx, 0x10000
mov eax, dword [ebx + 0x2e8]
call fcn.004027b8
pop ecx
pop edx
pop ebp
pop edi
pop esi
pop ebx
ret
Function at 0x4350a8
Capabilities:
Open clipboard
Write clipboard data

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
push esi
push edi
mov dword [ebp - 4], edx
mov eax, dword [ebp - 4]
call fcn.004047b8
xor eax, eax
push ebp
push 0x4351d6
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
call sub.user32.dll_OpenClipboard
test eax, eax
je 0x4351a9
xor eax, eax
push ebp
push 0x4351a2
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
call fcn.004045c8
inc eax
push eax
push 0x2002
call sub.kernel32.dll_GlobalAlloc
mov dword [ebp - 8], eax
xor eax, eax
push ebp
push 0x435177
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_GlobalLock
mov ebx, eax
xor eax, eax
push ebp
push 0x435166
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
call fcn.004045c8
inc eax
push eax
mov eax, dword [ebp - 4]
call fcn.004047c8
mov edx, ebx
pop ecx
call fcn.00402994
call sub.user32.dll_EmptyClipboard
mov eax, dword [ebp - 8]
push eax
push 1
call sub.user32.dll_SetClipboardData
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x43516d
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_GlobalUnlock
ret
mov ecx, dword [0x4863e4]
mov dl, 1
mov eax, dword [0x4078ec]
call fcn.0040c68c
call fcn.00403c38
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4351dd
lea eax, [ebp - 4]
call fcn.00404308
ret
Function at 0x44c294
Capabilities:
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
test dl, dl
je 0x44c2a6
add esp, 0xfffffff0
call fcn.0040370c
mov byte [ebp - 1], dl
mov ebx, eax
xor edx, edx
mov eax, ebx
call fcn.00421184
mov eax, dword [0x486458]
mov dword [eax + 4], ebx
mov dword [eax], 0x44c638
mov eax, dword [0x486464]
mov dword [eax + 4], ebx
mov dword [eax], 0x44c644
mov eax, ebx
call fcn.0044c650
push 0
call sub.user32.dll_GetKeyboardLayout
mov dword [ebx + 0x3c], eax
mov dl, 1
mov eax, dword [0x417f60]
call fcn.004033b8
mov dword [ebx + 0x4c], eax
mov dl, 1
mov eax, dword [0x417f60]
call fcn.004033b8
mov dword [ebx + 0x50], eax
mov dl, 1
mov eax, dword [0x417f60]
call fcn.004033b8
mov dword [ebx + 0x54], eax
mov dl, 1
mov eax, dword [0x417f60]
call fcn.004033b8
mov dword [ebx + 0x58], eax
mov dl, 1
mov eax, dword [0x417f60]
call fcn.004033b8
mov dword [ebx + 0x7c], eax
push 0
call sub.user32.dll_GetDC
mov esi, eax
push 0x5a
push esi
call sub.gdi32.dll_GetDeviceCaps
mov dword [ebx + 0x40], eax
push esi
push 0
call sub.user32.dll_ReleaseDC
mov eax, dword [ebx + 0x58]
push eax
mov eax, 0x448a6c
push eax
push 0
push 0
mov eax, dword [0x4865fc]
mov eax, dword [eax]
call eax
mov dl, 1
mov eax, dword [0x42977c]
call fcn.0042af90
mov dword [ebx + 0x84], eax
mov dl, 1
mov eax, dword [0x42977c]
call fcn.0042af90
mov dword [ebx + 0x88], eax
mov dl, 1
mov eax, dword [0x42977c]
call fcn.0042af90
mov dword [ebx + 0x80], eax
mov eax, ebx
call fcn.0044ca70
mov eax, dword [ebx + 0x84]
mov dword [eax + 0xc], ebx
mov dword [eax + 8], 0x44c94c
mov eax, dword [ebx + 0x88]
mov dword [eax + 0xc], ebx
mov dword [eax + 8], 0x44c94c
mov eax, dword [ebx + 0x80]
mov dword [eax + 0xc], ebx
mov dword [eax + 8], 0x44c94c
mov eax, ebx
cmp byte [ebp - 1], 0
je 0x44c3e3
call fcn.00403764
pop dword fs:[0]
add esp, 0xc
mov eax, ebx
pop esi
pop ebx
pop ecx
pop ebp
ret
Function at 0x44c730
Capabilities:
Get keyboard layout
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffda0
push ebx
xor edx, edx
mov dword [ebp - 0x260], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x44c8db
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
cmp dword [eax + 0x34], 0
jne 0x44c8bc
mov dl, 1
mov eax, dword [0x4185c4]
call fcn.004033b8
mov edx, dword [ebp - 4]
mov dword [edx + 0x34], eax
mov eax, dword [ebp - 4]
add eax, 0x38
call fcn.00404308
lea eax, [ebp - 0x114]
push eax
push 0x40
call sub.user32.dll_GetKeyboardLayoutList
dec eax
test eax, eax
jl 0x44c8ab
inc eax
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x114]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
call fcn.00468618
test al, al
je 0x44c89e
lea eax, [ebp - 0xc]
push eax
push 0x20019
push 0
push 0
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
mov dword [ebp - 0x25c], eax
mov byte [ebp - 0x258], 0
lea ecx, [ebp - 0x25c]
mov edx, 0x44c8ec
lea eax, [ebp - 0x254]
call fcn.00409a4c
push eax
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA_1
test eax, eax
jne 0x44c89e
xor eax, eax
push ebp
push 0x44c897
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 8], pe_nt_image_headers32
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x214]
push eax
push 0
push 0
push 0x44c924
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
jne 0x44c880
lea eax, [ebp - 0x260]
lea edx, [ebp - 0x214]
mov ecx, pe_nt_image_headers32
call fcn.00404578
mov edx, dword [ebp - 0x260]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x34]
mov ebx, dword [eax]
call dword [ebx + 0x3c]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 0x3c]
jne 0x44c880
mov eax, dword [ebp - 4]
add eax, 0x38
lea edx, [ebp - 0x214]
mov ecx, pe_nt_image_headers32
call fcn.00404578
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x44c89e
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegCloseKey_1
ret
add dword [ebp - 0x14], 4
dec dword [ebp - 0x10]
jne 0x44c7a1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x34]
mov byte [eax + 0x1d], 0
mov dl, 1
call fcn.0041cdd8
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x34]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x44c8e2
lea eax, [ebp - 0x260]
call fcn.00404308
ret

Function at 0x44d210
Capabilities:
Create thread
Set global application hook

Disassembly:
push ecx
mov eax, dword [0x487c10]
cmp byte [eax + 0xa5], 0
jne 0x44d281
cmp dword [0x487c28], 0
jne 0x44d242
call sub.kernel32.dll_GetCurrentThreadId_1
push eax
push 0
mov eax, 0x44d1cc
push eax
push 3
call sub.user32.dll_SetWindowsHookExA
mov dword [0x487c28], eax
cmp dword [0x487c24], 0
jne 0x44d25d
push 0
push 0
push 0
push 0
call sub.kernel32.dll_CreateEventA
mov dword [0x487c24], eax
cmp dword [0x487c2c], 0
jne 0x44d281
push esp
push 0
push 0
push 0x44d170
push 0x3e8
push 0
call sub.kernel32.dll_CreateThread_1
mov dword [0x487c2c], eax
pop edx
ret