joyce8/EMBER2024-capa huggingface dataset:
Function at 0x10105a20
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebx
push edi
push esi
push eax
mov eax, dword [0x104d53e0]
test eax, eax
jne 0x10105a37
mov ecx, 0x104d53e0
call fcn.100f2650
push eax
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 2
jb 0x10105a53
mov esi, eax
mov eax, dword [eax]
test eax, eax
cmove esi, eax
test esi, esi
jne 0x10105b4b
mov eax, dword [0x104d53e0]
test eax, eax
jne 0x10105a66
mov ecx, 0x104d53e0
call fcn.100f2650
push eax
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 1
je 0x10105b49
mov esi, eax
test eax, eax
jne 0x10105abb
call sub.KERNEL32.dll_GetProcessHeap
push 8
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10105b62
mov dword [eax], 0
mov dword [eax + 4], 0x104d53e0
mov esi, eax
mov eax, dword [0x104d53e0]
test eax, eax
jne 0x10105ab4
mov ecx, 0x104d53e0
call fcn.100f2650
push esi
push eax
call sub.KERNEL32.dll_TlsSetValue
call sub.KERNEL32.dll_GetProcessHeap
push 4
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10105b54
mov edi, eax
mov dword [eax], 0
call sub.KERNEL32.dll_GetProcessHeap
push 4
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10105b54
mov ebx, eax
mov dword [eax], 0
call sub.KERNEL32.dll_GetProcessHeap
push 0x1c
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10105b5b
mov dword [eax], 1
mov dword [eax + 4], 1
mov dword [eax + 8], 0
mov dword [eax + 0xc], edi
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], ebx
mov dword [eax + 0x18], 0
mov ecx, dword [esi]
mov dword [esi], eax
test ecx, ecx
mov dword [esp], ecx
je 0x10105b4b
lock dec dword [ecx]
jne 0x10105b4b
mov ecx, esp
call fcn.1006d8a0
jmp 0x10105b4b
xor esi, esi
mov eax, esi
add esp, 4
pop esi
pop edi
pop ebx
ret
mov ecx, 4
jmp 0x10105b67
mov ecx, 0x1c
jmp 0x10105b67
mov ecx, 8
mov edx, 4
call fcn.10006540
ud2
Function at 0x1010a360
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
mov eax, dword [0x104d53ec]
test eax, eax
jne 0x1010a37a
mov ecx, 0x104d53ec
call fcn.100f2650
push eax
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 2
jb 0x1010a396
xor esi, esi
cmp byte [eax + 0xc], 2
cmovne esi, eax
test esi, esi
jne 0x1010a498
mov eax, dword [0x104d53ec]
test eax, eax
jne 0x1010a3a9
mov ecx, 0x104d53ec
call fcn.100f2650
push eax
call sub.KERNEL32.dll_TlsGetValue
cmp eax, 1
je 0x1010a496
mov esi, eax
test eax, eax
jne 0x1010a3fc
call sub.KERNEL32.dll_GetProcessHeap
push 0x14
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x1010a4a9
mov byte [eax + 0xc], 2
mov dword [eax + 0x10], 0x104d53ec
mov esi, eax
mov eax, dword [0x104d53ec]
test eax, eax
jne 0x1010a3f5
mov ecx, 0x104d53ec
call fcn.100f2650
push esi
push eax
call sub.KERNEL32.dll_TlsSetValue
call sub.KERNEL32.dll_GetProcessHeap
push 8
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x1010a4a2
mov dword [eax], 1
mov dword [eax + 4], 1
mov bh, byte [esi + 0xf]
mov bl, byte [esi + 0xc]
mov edx, dword [esi]
mov ecx, dword [esi + 4]
mov edi, dword [esi + 8]
mov byte [esp + 4], bh
cmp bl, 2
movzx ebp, word [esi + 0xd]
mov word [esp + 2], bp
mov dword [esi], 0
mov dword [esi + 4], eax
mov dword [esi + 8], 0x104259b4
mov byte [esi + 0xc], 1
movzx eax, word [esp + 5]
mov word [esi + 0xd], ax
mov al, byte [esp + 7]
mov byte [esi + 0xf], al
mov dword [esp + 8], edx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], edi
mov byte [esp + 0x14], bl
movzx eax, word [esp + 2]
mov dl, byte [esp + 4]
mov word [esp + 0x15], ax
mov byte [esp + 0x17], dl
je 0x1010a498
lock dec dword [ecx]
jne 0x1010a498
lea ecx, [esp + 0xc]
call fcn.10116bf0
jmp 0x1010a498
xor esi, esi
mov eax, esi
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, 8
jmp 0x1010a4ae
mov ecx, 0x14
mov edx, 4
call fcn.10006540
ud2

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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x16c
call fcn.1010aacf
Function at 0x10183980
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
mov eax, dword [ebp + 8]
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
add eax, 1
mov dword [ebp - 0xc], eax
mov dword [ebp - 4], 0x811c9dc5
mov dword [ebp - 8], 0
jmp 0x101839b1
mov ecx, dword [ebp - 8]
add ecx, 1
mov dword [ebp - 8], ecx
mov edx, dword [ebp - 8]
cmp edx, dword [ebp - 0xc]
jae 0x101839e0
mov eax, dword [ebp + 8]
movsx ecx, byte [eax]
mov dword [ebp - 0x10], ecx
mov edx, dword [ebp + 8]
add edx, 1
mov dword [ebp + 8], edx
mov eax, dword [ebp - 4]
xor eax, dword [ebp - 0x10]
mov dword [ebp - 4], eax
imul ecx, dword [ebp - 4], 0x1000193
mov dword [ebp - 4], ecx
jmp 0x101839a8
mov eax, dword [ebp - 4]
mov esp, ebp
pop ebp
ret
Function at 0x101919a0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push ebx
mov eax, dword [ebp + 0x14]
push eax
push 0
mov ecx, dword [ebp + 0x10]
push ecx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov dword [ebp - 8], 0
jmp 0x101919cb
mov edx, dword [ebp - 8]
add edx, 1
mov dword [ebp - 8], edx
mov eax, dword [ebp - 8]
cmp eax, dword [ebp + 0xc]
jae 0x10191a28
mov ecx, dword [ebp + 8]
add ecx, dword [ebp - 8]
mov dl, byte [ecx]
mov byte [ebp - 2], dl
mov eax, dword [ebp - 8]
xor edx, edx
div dword [ebp + 0x14]
mov eax, dword [ebp + 0x10]
mov cl, byte [eax + edx]
mov byte [ebp - 1], cl
movzx edx, byte [ebp - 1]
test edx, edx
je 0x10191a03
movzx eax, byte [ebp - 1]
movzx ecx, byte [ebp - 2]
cmp eax, ecx
je 0x10191a26
movzx ecx, byte [ebp - 2]
mov eax, dword [ebp - 8]
xor edx, edx
div dword [ebp + 0x14]
mov eax, dword [ebp + 0x10]
movzx ebx, byte [eax + edx]
xor ebx, ecx
mov eax, dword [ebp - 8]
xor edx, edx
div dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
mov byte [ecx + edx], bl
jmp 0x101919c2
pop ebx
mov esp, ebp
pop ebp
ret

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

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0xffffffff
jne 0x10192226
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
jne 0x10192226
xor al, al
jmp 0x10192234
mov ecx, dword [ebp - 4]
and ecx, 0x10
jne 0x10192232
xor al, al
jmp 0x10192234
mov al, 1
mov esp, ebp
pop ebp
ret

Function at 0x10192990
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
cmp dword [ebp + 0xc], 1
jne 0x101929bc
push 0
push 0
mov eax, dword [ebp + 0x10]
push eax
push 0x10192240
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov ecx, dword [0x104d6d90]
mov edx, dword [ebp + 8]
mov dword [ecx + 0x64], edx
mov eax, 1
pop ebp
ret 0xc
Function at 0x101bea80
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
mov dword [ebp - 8], 0
mov eax, dword [ebp + 8]
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp + 8]
add ecx, dword [ebp + 0xc]
mov dword [ebp - 0x18], ecx
cmp dword [ebp + 0xc], 0x10
jae 0x101beaa7
jmp 0x101beb82
mov edx, dword [ebp - 0xc]
and edx, 3
je 0x101beae2
mov eax, dword [ebp - 0xc]
mov cl, byte [eax]
mov byte [ebp - 1], cl
mov edx, dword [ebp - 0xc]
add edx, 1
mov dword [ebp - 0xc], edx
movzx eax, byte [ebp - 1]
cmp eax, 0x80
jl 0x101beae0
movzx ecx, byte [ebp - 1]
cmp ecx, 0xbf
jg 0x101beae0
mov edx, dword [ebp - 8]
add edx, 1
mov dword [ebp - 8], edx
jmp 0x101beaa7
mov eax, dword [ebp - 0x18]
sub eax, dword [ebp - 0xc]
and eax, 0xfffffffc
add eax, dword [ebp - 0xc]
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x14], ecx
mov edx, dword [ebp - 0x14]
cmp edx, dword [ebp - 0x1c]
je 0x101beb7c
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
mov dword [ebp - 0x10], ecx
mov edx, dword [ebp - 0x14]
add edx, 4
mov dword [ebp - 0x14], edx
mov eax, dword [ebp - 0x10]
and eax, 0x80808080
jne 0x101beb1c
jmp 0x101beb77
mov ecx, dword [ebp - 0x10]
xor ecx, 0x80808080
mov dword [ebp - 0x10], ecx
mov edx, dword [ebp - 0x10]
and edx, 0xc0000000
jne 0x101beb3c
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 0x10]
and ecx, 0xc00000
jne 0x101beb50
mov edx, dword [ebp - 8]
add edx, 1
mov dword [ebp - 8], edx
mov eax, dword [ebp - 0x10]
and eax, 0xc000
jne 0x101beb63
mov ecx, dword [ebp - 8]
add ecx, 1
mov dword [ebp - 8], ecx
mov edx, dword [ebp - 0x10]
and edx, 0xc0
jne 0x101beb77
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
jmp 0x101beaf7
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp - 0xc]
cmp edx, dword [ebp - 0x18]
je 0x101bebbd
mov eax, dword [ebp - 0xc]
mov cl, byte [eax]
mov byte [ebp - 2], cl
mov edx, dword [ebp - 0xc]
add edx, 1
mov dword [ebp - 0xc], edx
movzx eax, byte [ebp - 2]
cmp eax, 0x80
jl 0x101bebbb
movzx ecx, byte [ebp - 2]
cmp ecx, 0xbf
jg 0x101bebbb
mov edx, dword [ebp - 8]
add edx, 1
mov dword [ebp - 8], edx
jmp 0x101beb82
xor eax, eax
jne 0x101bebbd
mov ecx, dword [ebp + 0xc]
sub ecx, dword [ebp - 8]
mov dword [ebp - 0x20], ecx
xor edx, edx
jne 0x101bebca
mov eax, dword [ebp - 0x20]
mov esp, ebp
pop ebp
ret
Function at 0x101f67e0
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
mov dword [ebp - 4], ecx
mov eax, dword [ebp + 8]
push eax
call fcn.10179860
add esp, 4
push eax
lea ecx, [ebp - 8]
push ecx
call fcn.101f6880
add esp, 8
mov dword [ebp - 0xc], 0x101f6780
mov edx, dword [ebp - 4]
add edx, 4
push edx
push 0
lea ecx, [ebp - 8]
call fcn.1017aec0
push eax
mov eax, dword [ebp - 0xc]
push eax
push 0
push 0
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__beginthreadex]
add esp, 0x18
mov ecx, dword [ebp - 4]
mov dword [ecx], eax
mov edx, dword [ebp - 4]
cmp dword [edx], 0
je 0x101f6843
lea ecx, [ebp - 8]
call fcn.101f6ba0
jmp 0x101f6854
mov eax, dword [ebp - 4]
mov dword [eax + 4], 0
push 6
call sub.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_
lea ecx, [ebp - 8]
call fcn.101f6910
mov esp, ebp
pop ebp
ret 4

Function at 0x101fbe00
Capabilities:
Open clipboard
Read clipboard data

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
mov ecx, dword [ebp + 8]
call fcn.10182150
mov dword [ebp - 0xc], eax
push 0
call dword [sym.imp.USER32.dll_OpenClipboard]
test eax, eax
je 0x101fbe51
push 1
call dword [sym.imp.USER32.dll_GetClipboardData]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 8]
push ecx
mov ecx, dword [ebp + 8]
call fcn.101fc8f0
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
call dword [sym.imp.USER32.dll_CloseClipboard]
mov eax, dword [ebp + 8]
mov esp, ebp
pop ebp
ret

Function at 0x1020c590
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
mov dword [ebp - 0xc], ecx
push 0x100
mov eax, dword [ebp - 0xc]
add eax, 0x70
push eax
mov ecx, dword [ebp - 0xc]
add ecx, 0x170
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov dword [ebp - 8], 0
jmp 0x1020c5c9
mov edx, dword [ebp - 8]
add edx, 1
mov dword [ebp - 8], edx
cmp dword [ebp - 8], 0xff
jge 0x1020c602
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
shr ecx, 0x10
and ecx, 0xffff
je 0x1020c5f0
mov byte [ebp - 1], 1
jmp 0x1020c5f4
mov byte [ebp - 1], 0
mov edx, dword [ebp - 0xc]
add edx, dword [ebp - 8]
mov al, byte [ebp - 1]
mov byte [edx + 0x70], al
jmp 0x1020c5c0
mov esp, ebp
pop ebp
ret
Function at 0x1023ae20
Capabilities:
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [ebp + 0x10]
not eax
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 8]
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], 0x103d0de8
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0xc], edx
mov eax, dword [ebp + 0xc]
sub eax, 1
mov dword [ebp + 0xc], eax
cmp dword [ebp - 0xc], 0
je 0x1023ae81
mov ecx, dword [ebp - 4]
shr ecx, 8
mov edx, dword [ebp - 4]
and edx, 0xff
mov eax, dword [ebp - 8]
movzx eax, byte [eax]
xor edx, eax
mov eax, dword [ebp - 0x10]
xor ecx, dword [eax + edx*4]
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 8]
add ecx, 1
mov dword [ebp - 8], ecx
mov edx, dword [ebp - 0x14]
mov dword [ebp - 4], edx
jmp 0x1023ae3b
mov eax, dword [ebp - 4]
not eax
mov esp, ebp
pop ebp
ret

Function at 0x1023ae90
Capabilities:
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [ebp + 0x10]
not eax
mov dword [ebp + 0x10], eax
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp + 8]
mov dword [ebp - 8], edx
mov dword [ebp - 0x10], 0x103d0de8
cmp dword [ebp + 0xc], 0
je 0x1023af49
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp + 0xc]
sub ecx, 1
mov dword [ebp + 0xc], ecx
cmp dword [ebp - 0x14], 0
je 0x1023af47
mov edx, dword [ebp - 8]
mov al, byte [edx]
mov byte [ebp - 3], al
mov ecx, dword [ebp - 8]
add ecx, 1
mov dword [ebp - 8], ecx
mov dl, byte [ebp - 3]
mov byte [ebp - 2], dl
movzx eax, byte [ebp - 2]
cmp eax, 0x23
jne 0x1023af24
cmp dword [ebp + 0xc], 2
jb 0x1023af24
mov ecx, 1
imul edx, ecx, 0
mov eax, dword [ebp - 8]
movzx ecx, byte [eax + edx]
cmp ecx, 0x23
jne 0x1023af24
mov edx, 1
shl edx, 0
mov eax, dword [ebp - 8]
movzx ecx, byte [eax + edx]
cmp ecx, 0x23
jne 0x1023af24
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0xc], edx
mov eax, dword [ebp - 0xc]
shr eax, 8
mov ecx, dword [ebp - 0xc]
and ecx, 0xff
movzx edx, byte [ebp - 2]
xor ecx, edx
mov edx, dword [ebp - 0x10]
xor eax, dword [edx + ecx*4]
mov dword [ebp - 0xc], eax
jmp 0x1023aebb
jmp 0x1023afbe
mov eax, dword [ebp - 8]
mov cl, byte [eax]
mov byte [ebp - 4], cl
mov edx, dword [ebp - 8]
add edx, 1
mov dword [ebp - 8], edx
mov al, byte [ebp - 4]
mov byte [ebp - 1], al
movzx ecx, byte [ebp - 1]
test ecx, ecx
je 0x1023afbe
movzx edx, byte [ebp - 1]
cmp edx, 0x23
jne 0x1023af9f
mov eax, 1
imul ecx, eax, 0
mov edx, dword [ebp - 8]
movzx eax, byte [edx + ecx]
cmp eax, 0x23
jne 0x1023af9f
mov ecx, 1
shl ecx, 0
mov edx, dword [ebp - 8]
movzx eax, byte [edx + ecx]
cmp eax, 0x23
jne 0x1023af9f
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp - 0xc]
shr edx, 8
mov eax, dword [ebp - 0xc]
and eax, 0xff
movzx ecx, byte [ebp - 1]
xor eax, ecx
mov ecx, dword [ebp - 0x10]
xor edx, dword [ecx + eax*4]
mov dword [ebp - 0xc], edx
jmp 0x1023af49
mov eax, dword [ebp - 0xc]
not eax
mov esp, ebp
pop ebp
ret
Function at 0x1023c010
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0x1c]
push eax
mov ecx, dword [ebp + 0x14]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fread]
add esp, 0x10
xor edx, edx
pop ebp
ret

Function at 0x1023c030
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0x1c]
push eax
mov ecx, dword [ebp + 0x14]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
add esp, 0x10
xor edx, edx
pop ebp
ret
Function at 0x102843c0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
mov eax, dword [0x104d5404]
xor eax, ebp
mov dword [ebp - 4], eax
call fcn.1022e180
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax + 0x90]
call fcn.10285090
lea eax, [ebp - 0x14]
push eax
mov ecx, dword [0x104dca28]
push ecx
call dword [sym.imp.USER32.dll_GetClientRect]
mov edx, dword [ebp - 8]
sub edx, dword [ebp - 0x10]
cvtsi2ss xmm0, edx
push ecx
movss dword [esp], xmm0
mov eax, dword [ebp - 0xc]
sub eax, dword [ebp - 0x14]
cvtsi2ss xmm0, eax
push ecx
movss dword [esp], xmm0
lea ecx, [ebp - 0x40]
call fcn.1017ddb0
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov eax, dword [ebp - 0x18]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
lea ecx, [ebp - 0x34]
push ecx
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov ecx, dword [ebp - 0x34]
sub ecx, dword [0x104dca30]
mov edx, dword [ebp - 0x30]
sbb edx, dword [0x104dca34]
call fcn.10353be0
cvtsd2ss xmm0, xmm0
mov edx, dword [0x104dca3c]
mov ecx, dword [0x104dca38]
movss dword [ebp - 0x38], xmm0
call fcn.10353be0
cvtsd2ss xmm0, xmm0
movss xmm1, dword [ebp - 0x38]
divss xmm1, xmm0
mov edx, dword [ebp - 0x18]
movss dword [edx + 0x10], xmm1
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x30]
mov dword [0x104dca30], eax
mov dword [0x104dca34], ecx
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movsx edx, ax
and edx, 0x8000
je 0x102844aa
mov dword [ebp - 0x1c], 1
jmp 0x102844b1
mov dword [ebp - 0x1c], 0
mov eax, dword [ebp - 0x18]
mov cl, byte [ebp - 0x1c]
mov byte [eax + 0xf8], cl
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx edx, ax
and edx, 0x8000
je 0x102844d9
mov dword [ebp - 0x20], 1
jmp 0x102844e0
mov dword [ebp - 0x20], 0
mov eax, dword [ebp - 0x18]
mov cl, byte [ebp - 0x20]
mov byte [eax + 0xf9], cl
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
movsx edx, ax
and edx, 0x8000
je 0x10284508
mov dword [ebp - 0x24], 1
jmp 0x1028450f
mov dword [ebp - 0x24], 0
mov eax, dword [ebp - 0x18]
mov cl, byte [ebp - 0x24]
mov byte [eax + 0xfa], cl
mov edx, dword [ebp - 0x18]
mov byte [edx + 0xfb], 0
call fcn.102845f0
mov eax, dword [ebp - 0x18]
movzx ecx, byte [eax + 0xa8]
test ecx, ecx
je 0x10284541
mov dword [ebp - 0x28], 0xffffffff
jmp 0x10284549
call fcn.10238bd0
mov dword [ebp - 0x28], eax
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x2c], edx
mov eax, dword [0x104c42a8]
cmp eax, dword [ebp - 0x2c]
je 0x10284567
mov ecx, dword [ebp - 0x2c]
mov dword [0x104c42a8], ecx
call fcn.10284580
call fcn.10284710
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10353876
mov esp, ebp
pop ebp
ret
Function at 0x102ad170
Capabilities:
Allocate or change rwx memory

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
mov eax, dword [0x104df0bc]
mov dword [ebp - 4], eax
jmp 0x102ad188
mov ecx, dword [ebp - 4]
mov edx, dword [ecx]
mov dword [ebp - 4], edx
cmp dword [ebp - 4], 0
je 0x102ad19e
mov eax, dword [ebp - 4]
cmp dword [eax + 4], 0
je 0x102ad19c
mov eax, dword [ebp - 4]
jmp 0x102ad219
jmp 0x102ad180
push 0x40
push 0x3000
push 0x1000
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x102ad216
mov ecx, dword [ebp - 4]
add ecx, 0x20
mov dword [ebp - 8], ecx
mov edx, dword [ebp - 4]
mov dword [edx + 4], 0
mov eax, dword [ebp - 4]
mov dword [eax + 8], 0
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 4]
mov eax, dword [edx + 4]
mov dword [ecx], eax
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 8]
mov dword [ecx + 4], edx
mov eax, dword [ebp - 8]
add eax, 0x20
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 8]
sub ecx, dword [ebp - 4]
cmp ecx, 0xfe0
jbe 0x102ad1d8
mov edx, dword [ebp - 4]
mov eax, dword [0x104df0bc]
mov dword [edx], eax
mov ecx, dword [ebp - 4]
mov dword [0x104df0bc], ecx
mov eax, dword [ebp - 4]
mov esp, ebp
pop ebp
ret
Function at 0x102ae8d0
Capabilities:
Enumerate threads

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [0x104d5404]
xor eax, ebp
mov dword [ebp - 4], eax
push 0
push 4
call sub.KERNEL32.dll_CreateToolhelp32Snapshot
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0xffffffff
je 0x102aea0e
mov dword [ebp - 0x20], 0x1c
lea eax, [ebp - 0x20]
push eax
mov ecx, dword [ebp - 0x24]
push ecx
call sub.KERNEL32.dll_Thread32First
test eax, eax
je 0x102aea04
cmp dword [ebp - 0x20], 0x10
jb 0x102ae9e8
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
cmp dword [ebp - 0x14], eax
jne 0x102ae9e8
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [ebp - 0x18], eax
je 0x102ae9e8
mov edx, dword [ebp + 8]
cmp dword [edx], 0
jne 0x102ae978
mov eax, dword [ebp + 8]
mov dword [eax + 4], 0x80
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 4]
shl edx, 2
push edx
push 0
mov eax, dword [0x104dca4c]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ecx, dword [ebp + 8]
mov dword [ecx], eax
mov edx, dword [ebp + 8]
cmp dword [edx], 0
jne 0x102ae976
jmp 0x102aea04
jmp 0x102ae9c8
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 8]
mov edx, dword [eax + 8]
cmp edx, dword [ecx + 4]
jb 0x102ae9c8
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 4]
shl ecx, 1
shl ecx, 2
push ecx
mov edx, dword [ebp + 8]
mov eax, dword [edx]
push eax
push 0
mov ecx, dword [0x104dca4c]
push ecx
call dword [sym.imp.KERNEL32.dll_HeapReAlloc]
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
jne 0x102ae9b2
jmp 0x102aea04
mov edx, dword [ebp + 8]
mov eax, dword [edx + 4]
shl eax, 1
mov ecx, dword [ebp + 8]
mov dword [ecx + 4], eax
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 0x28]
mov dword [edx], eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 8]
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
mov eax, dword [ebp - 0x18]
mov dword [ecx + edx*4], eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 8]
add edx, 1
mov eax, dword [ebp + 8]
mov dword [eax + 8], edx
mov dword [ebp - 0x20], 0x1c
lea ecx, [ebp - 0x20]
push ecx
mov edx, dword [ebp - 0x24]
push edx
call sub.KERNEL32.dll_Thread32Next
test eax, eax
jne 0x102ae912
mov eax, dword [ebp - 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10353876
mov esp, ebp
pop ebp
ret
Function at 0x102aea20
Capabilities:
Suspend thread

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
mov eax, dword [ebp + 8]
mov dword [eax], 0
mov ecx, dword [ebp + 8]
mov dword [ecx + 4], 0
mov edx, dword [ebp + 8]
mov dword [edx + 8], 0
mov eax, dword [ebp + 8]
push eax
call fcn.102ae8d0
add esp, 4
mov ecx, dword [ebp + 8]
cmp dword [ecx], 0
je 0x102aeabd
mov dword [ebp - 4], 0
jmp 0x102aea69
mov edx, dword [ebp - 4]
add edx, 1
mov dword [ebp - 4], edx
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 4]
cmp ecx, dword [eax + 8]
jae 0x102aeabd
mov edx, dword [ebp + 8]
mov eax, dword [edx]
mov ecx, dword [ebp - 4]
mov edx, dword [eax + ecx*4]
push edx
push 0
push 0x5a
call dword [sym.imp.KERNEL32.dll_OpenThread]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x102aeabb
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.KERNEL32.dll_SuspendThread]
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp - 8]
push eax
call fcn.102ae750
add esp, 0xc
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x102aea60
mov esp, ebp
pop ebp
ret

Function at 0x102aead0
Capabilities:
Resume thread

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
mov eax, dword [ebp + 8]
cmp dword [eax], 0
je 0x102aeb44
mov dword [ebp - 4], 0
jmp 0x102aeaf0
mov ecx, dword [ebp - 4]
add ecx, 1
mov dword [ebp - 4], ecx
mov edx, dword [ebp + 8]
mov eax, dword [ebp - 4]
cmp eax, dword [edx + 8]
jae 0x102aeb30
mov ecx, dword [ebp + 8]
mov edx, dword [ecx]
mov eax, dword [ebp - 4]
mov ecx, dword [edx + eax*4]
push ecx
push 0
push 0x5a
call dword [sym.imp.KERNEL32.dll_OpenThread]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x102aeb2e
mov edx, dword [ebp - 8]
push edx
call dword [sym.imp.KERNEL32.dll_ResumeThread]
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x102aeae7
mov ecx, dword [ebp + 8]
mov edx, dword [ecx]
push edx
push 0
mov eax, dword [0x104dca4c]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov esp, ebp
pop ebp
ret