joyce8/EMBER2024-capa huggingface dataset:
Function at 0x406e38
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 0x406e59
mov al, byte [esp]
jmp 0x406e5b
mov eax, ebx
pop edx
pop edi
pop esi
pop ebx
ret

Function at 0x412664
Capabilities:
Encode data using xor

Disassembly:
mov ecx, edx
mov edx, eax
xor eax, eax
rol ax, 5
xor al, byte [edx]
inc edx
dec ecx
jne 0x41266a
ret

Function at 0x41a5d4
Capabilities:
Capture screenshot

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff94
push ebx
push esi
push edi
mov esi, edx
mov ebx, eax
cmp byte [ebx + 0x114], 0
je 0x41a5f0
cmp dword [esi + 4], 0
je 0x41a617
mov eax, ebx
call fcn.00419878
test eax, eax
jne 0x41a609
mov edx, esi
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx - 0x10]
jmp 0x41a727
mov edx, esi
mov eax, ebx
call fcn.0041a278
jmp 0x41a727
push 0
call sub.user32.dll_GetDC
mov edi, eax
lea edx, [ebp - 0x5c]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [ebp - 0x50]
push eax
lea edx, [ebp - 0x6c]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [ebp - 0x64]
push eax
push edi
call sub.gdi32.dll_CreateCompatibleBitmap
mov dword [ebp - 8], eax
push edi
push 0
call sub.user32.dll_ReleaseDC
push 0
call sub.gdi32.dll_CreateCompatibleDC
mov dword [ebp - 4], eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 4]
push eax
call sub.gdi32.dll_SelectObject
mov dword [ebp - 0xc], eax
xor eax, eax
push ebp
push 0x41a720
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x4c]
push eax
mov eax, ebx
call fcn.0041bbd4
push eax
call sub.user32.dll_BeginPaint
mov edi, eax
mov eax, dword [ebp - 4]
push eax
mov ecx, dword [ebp - 4]
mov edx, 0x14
mov eax, ebx
call fcn.00418780
mov eax, dword [ebp - 4]
mov dword [esi + 4], eax
mov edx, esi
mov eax, ebx
call fcn.0041a5d4
xor eax, eax
mov dword [esi + 4], eax
push 0xcc0020
push 0
push 0
mov eax, dword [ebp - 4]
push eax
lea edx, [ebp - 0x5c]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [ebp - 0x50]
push eax
lea edx, [ebp - 0x6c]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [ebp - 0x64]
push eax
push 0
push 0
push edi
call sub.gdi32.dll_BitBlt
lea eax, [ebp - 0x4c]
push eax
mov eax, ebx
call fcn.0041bbd4
push eax
call sub.user32.dll_EndPaint
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x41a727
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 4]
push eax
call sub.gdi32.dll_SelectObject
mov eax, dword [ebp - 4]
push eax
call sub.gdi32.dll_DeleteDC
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_DeleteObject
ret
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x41d620
Capabilities:
Log keystrokes
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffefc
push ebx
mov ebx, edx
mov word [ebp - 2], ax
mov eax, ebx
call fcn.00403558
push 0
xor eax, eax
mov al, byte [ebp - 2]
push eax
call sub.user32.dll_MapVirtualKeyA
shl eax, 0x10
test eax, eax
je 0x41d681
push pe_nt_image_headers32
lea edx, [ebp - 0x102]
push edx
push eax
call sub.user32.dll_GetKeyNameTextA
cmp byte [ebp - 0x101], 0
jne 0x41d681
cmp byte [ebp - 0x102], 0
je 0x41d681
mov eax, ebx
lea edx, [ebp - 0x102]
mov ecx, pe_nt_image_headers32
call fcn.00403784
pop ebx
mov esp, ebp
pop ebp
ret

Function at 0x41ea10
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
push ebx
mov ebx, edx
mov dword [ebp - 0xc], eax
xor eax, eax
mov edx, dword [ebp - 0xc]
cmp dword [edx + 0x28], 0
je 0x41ea91
xor eax, eax
mov al, byte [ebx + 4]
mov word [ebp - 6], ax
push 0x10
call sub.user32.dll_GetKeyState
test ax, ax
jge 0x41ea42
add word [ebp - 6], 0x2000
push 0x11
call sub.user32.dll_GetKeyState
test ax, ax
jge 0x41ea54
add word [ebp - 6], 0x4000
test byte [ebx + 0xb], 0x20
je 0x41ea60
add word [ebp - 6], 0x8000
xor ebx, ebx
movzx edx, word [ebp - 6]
mov cl, 2
mov eax, dword [ebp - 0xc]
call fcn.0041e89c
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x41ea85
push ebp
mov eax, dword [ebp - 4]
call fcn.0041e980
pop ecx
mov ebx, eax
cmp bl, 2
je 0x41ea60
cmp dword [ebp - 4], 0
setne al
pop ebx
mov esp, ebp
pop ebp
ret

Function at 0x42084c
Capabilities:
Allocate or change rwx memory

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov edi, 0x4366dc
cmp dword [edi], 0
jne 0x4208c8
push 0x40
push 0x1000
push 0x1000
push 0
call sub.kernel32.dll_VirtualAlloc_1
mov esi, eax
mov eax, dword [0x4366d8]
mov dword [esi], eax
lea edx, [esi + 4]
mov eax, 0x4356f8
mov ecx, 2
call fcn.00402690
mov edx, 0x420824
lea eax, [esi + 5]
call fcn.00420844
mov dword [esi + 6], eax
lea ebx, [esi + 0xa]
mov byte [ebx], 0xe8
lea edx, [esi + 4]
mov eax, ebx
call fcn.00420844
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 0x42089d
mov dword [0x4366d8], 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 0x4209ec
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
push esi
mov esi, eax
mov bl, byte [0x420a3c]
test si, 4
je 0x420a00
or bl, 1
test si, 8
je 0x420a0a
or bl, 4
test si, 1
je 0x420a14
or bl, 8
test si, 2
je 0x420a1e
or bl, 0x10
test si, 0x10
je 0x420a28
or bl, 0x20
push 0x12
call sub.user32.dll_GetKeyState
test ax, ax
jge 0x420a37
or bl, 2
mov eax, ebx
pop esi
pop ebx
ret
Function at 0x420a40
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
push esi
mov esi, eax
mov bl, byte [0x420a78]
push 0x10
call sub.user32.dll_GetKeyState
test ax, ax
jge 0x420a59
or bl, 1
push 0x11
call sub.user32.dll_GetKeyState
test ax, ax
jge 0x420a68
or bl, 4
test esi, 0x20000000
je 0x420a73
or bl, 2
mov eax, ebx
pop esi
pop ebx
ret

Function at 0x424b30
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 0x424cd5
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [0x40a0c4]
call fcn.00402aa4
mov edx, dword [ebp - 4]
mov dword [edx + 0x28], eax
mov eax, dword [ebp - 4]
add eax, 0x2c
call fcn.00403558
push 0
call sub.user32.dll_GetKeyboardLayout
mov edx, dword [ebp - 4]
mov dword [edx + 0x30], eax
lea eax, [ebp - 0x114]
push eax
push 0x40
call sub.user32.dll_GetKeyboardLayoutList
dec eax
test eax, eax
jl 0x424cab
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.0041cdc0
test al, al
je 0x424c9e
lea eax, [ebp - 0xc]
push eax
push 0xf003f
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, 0x424ce4
lea eax, [ebp - 0x254]
call fcn.00406c4c
push eax
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA_1
test eax, eax
jne 0x424c9e
xor eax, eax
push ebp
push 0x424c97
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 0x424d1c
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
jne 0x424c80
lea eax, [ebp - 0x260]
lea edx, [ebp - 0x214]
mov ecx, pe_nt_image_headers32
call fcn.00403784
mov edx, dword [ebp - 0x260]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x28]
mov ebx, dword [eax]
call dword [ebx + 0x38]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 0x30]
jne 0x424c80
mov eax, dword [ebp - 4]
add eax, 0x2c
lea edx, [ebp - 0x214]
mov ecx, pe_nt_image_headers32
call fcn.00403784
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x424c9e
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegCloseKey_1
ret
add dword [ebp - 0x14], 4
dec dword [ebp - 0x10]
jne 0x424ba1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x28]
mov byte [eax + 0x19], 0
mov dl, 1
call fcn.0040ced0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x424cdc
lea eax, [ebp - 0x260]
call fcn.00403558
ret
Function at 0x424ec0
Capabilities:
Create thread
Set global application hook

Disassembly:
push ecx
mov eax, dword [0x4366b0]
cmp byte [eax + 0x85], 0
jne 0x424f31
cmp dword [0x4366e8], 0
jne 0x424ef2
call sub.kernel32.dll_GetCurrentThreadId
push eax
push 0
mov eax, 0x424e7c
push eax
push 3
call sub.user32.dll_SetWindowsHookExA
mov dword [0x4366e8], eax
cmp dword [0x4366e4], 0
jne 0x424f0d
push 0
push 0
push 0
push 0
call sub.kernel32.dll_CreateEventA
mov dword [0x4366e4], eax
cmp dword [0x4366ec], 0
jne 0x424f31
push esp
push 0
push 0
push 0x424e20
push 0x3e8
push 0
call sub.kernel32.dll_CreateThread
mov dword [0x4366ec], eax
pop edx
ret

Function at 0x425020
Capabilities:
Inspect load icon resource

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffefc
push ebx
push esi
test dl, dl
je 0x425037
add esp, 0xfffffff0
call fcn.00402cc0
mov byte [ebp - 1], dl
mov ebx, eax
xor edx, edx
mov eax, ebx
call fcn.00411338
mov dl, 1
mov eax, dword [0x409d54]
call fcn.00402aa4
mov dword [ebx + 0x70], eax
mov dl, 1
mov eax, dword [0x409d54]
call fcn.00402aa4
mov dword [ebx + 0x88], eax
xor eax, eax
mov dword [ebx + 0x44], eax
xor eax, eax
mov dword [ebx + 0x64], eax
mov dword [ebx + 0x40], 0x80000018
mov dword [ebx + 0x58], 0x1f4
mov dword [ebx + 0x5c], 0x32
mov dword [ebx + 0x60], 0x9c4
mov byte [ebx + 0x68], 0
mov byte [ebx + 0x7d], 1
mov dl, 1
mov eax, dword [0x412548]
call fcn.00415330
mov esi, eax
mov dword [ebx + 0x78], esi
push 0x425190
mov eax, dword [0x4358cc]
mov eax, dword [eax]
push eax
call sub.user32.dll_LoadIconA
mov edx, eax
mov eax, esi
call fcn.004156c8
mov eax, dword [ebx + 0x78]
mov dword [eax + 8], ebx
mov dword [eax + 4], 0x4267b4
push pe_nt_image_headers32
lea eax, [ebp - 0x101]
push eax
mov eax, dword [0x4358cc]
mov eax, dword [eax]
push eax
call sub.kernel32.dll_GetModuleFileNameA_2
lea eax, [ebp - 0x101]
push eax
lea eax, [ebp - 0x101]
push eax
call sub.user32.dll_OemToCharA
lea eax, [ebp - 0x101]
mov dl, 0x5c
call fcn.004080e0
test eax, eax
je 0x425118
lea edx, [eax + 1]
lea eax, [ebp - 0x101]
call fcn.004066a0
lea eax, [ebp - 0x101]
mov dl, 0x2e
call fcn.00408108
test eax, eax
je 0x42512c
mov byte [eax], 0
lea eax, [ebp - 0x101]
inc eax
push eax
call sub.user32.dll_CharLowerA
lea eax, [ebx + 0x6c]
lea edx, [ebp - 0x101]
mov ecx, pe_nt_image_headers32
call fcn.00403784
mov eax, dword [0x43585c]
cmp byte [eax], 0
jne 0x42515d
mov eax, ebx
call fcn.00425274
mov byte [ebx + 0x3d], 1
mov byte [ebx + 0x3e], 1
mov byte [ebx + 0x3f], 1
mov byte [ebx + 0x7e], 1
xor eax, eax
mov dword [ebx + 0x80], eax
cmp byte [ebp - 1], 0
je 0x425185
pop dword fs:[0]
add esp, 0xc
mov eax, ebx
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x4254c8
Capabilities:
Enumerate gui resources

Disassembly:
push ebx
push esi
add esp, 0xfffffff8
mov ebx, eax
mov eax, dword [0x4366b0]
cmp dword [eax + 0x24], 0
je 0x425558
cmp dword [ebx + 0x74], 0
jne 0x425555
mov eax, dword [ebx + 0x24]
mov dword [esp], eax
mov byte [esp + 4], dl
mov eax, esp
push eax
push 0x42545c
call sub.user32.dll_EnumWindows
mov eax, dword [ebx + 0x70]
cmp dword [eax + 8], 0
je 0x425555
push 3
mov eax, dword [esp + 4]
push eax
call sub.user32.dll_GetWindow
mov esi, eax
mov dword [esp], esi
push 0xffffffffffffffec
push esi
call sub.user32.dll_GetWindowLongA
test al, 8
je 0x425524
mov dword [esp], 0xfffffffe
mov eax, dword [ebx + 0x70]
mov esi, dword [eax + 8]
dec esi
cmp esi, 0
jl 0x425555
push 0x13
push 0
push 0
push 0
push 0
mov eax, dword [esp + 0x14]
push eax
mov edx, esi
mov eax, dword [ebx + 0x70]
call fcn.0040b050
push eax
call sub.user32.dll_SetWindowPos
dec esi
cmp esi, 0xffffffff
jne 0x425530
inc dword [ebx + 0x74]
pop ecx
pop edx
pop esi
pop ebx
ret

Function at 0x425e40
Capabilities:
Get graphical window text

Disassembly:
push ebx
push esi
add esp, 0xffffff00
mov esi, edx
mov ebx, eax
cmp byte [ebx + 0x84], 0
je 0x425e75
push pe_nt_image_headers32
lea eax, [esp + 4]
push eax
mov eax, dword [ebx + 0x24]
push eax
call sub.user32.dll_GetWindowTextA
mov ecx, eax
mov edx, esp
mov eax, esi
call fcn.0040363c
jmp 0x425e7f
mov eax, esi
mov edx, dword [ebx + 0x6c]
call fcn.004035f0
add esp, 0x100
pop esi
pop ebx
ret

Function at 0x426a24
Capabilities:
Hide graphical window

Disassembly:
push ebx
push esi
mov ebx, eax
mov esi, dword [ebx + 0x64]
test esi, esi
je 0x426a5c
mov eax, esi
call fcn.0041bcd0
test al, al
je 0x426a5c
mov eax, dword [ebx + 0x64]
call fcn.0041bbd4
push eax
call sub.user32.dll_IsWindowVisible
test eax, eax
je 0x426a5c
push 0
mov eax, dword [ebx + 0x64]
call fcn.0041bbd4
push eax
call sub.user32.dll_ShowWindow
pop esi
pop ebx
ret
Function at 0x433004
Capabilities:
Encode data using xor
Packed with generic packer

Disassembly:
pushal
nop
call 0x43300c
nop
nop
nop
nop
pop eax
nop
add eax, 0x40a063
nop
sub eax, 0x40a009
nop
mov ebx, dword [eax]
nop
nop
nop
nop
nop
nop
mov ecx, dword [eax + 4]
nop
mov edx, dword [eax + 8]
nop
nop
nop
nop
nop
nop
nop
xor dword [ebx], edx
nop
nop
add ebx, 4
nop
cmp ebx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
jl 0x433030
add eax, 0xc
nop
nop
nop
nop
nop
nop
cmp dword [eax], 0
nop
nop
nop
nop
jne 0x43301e
nop
popal
nop
nop
nop
nop
jmp 0x431219
Function at 0x401790
Capabilities:
Hash data using djb2

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc
xor eax, eax
cmp dword [esp + 0x20], 0
je 0x401870
mov ebx, dword [esp + 0x24]
test ebx, ebx
je 0x401870
mov ebp, dword [esp + 0x28]
test ebp, ebp
je 0x4017da
mov ecx, 0x1505
xor edi, edi
nop
movzx edx, byte [ebx + edi]
test edx, edx
je 0x4017e1
inc edi
mov esi, ecx
shl esi, 5
add esi, ecx
add esi, edx
mov ecx, esi
cmp ebp, edi
jne 0x4017c0
jmp 0x4017e3
mov esi, 0x1505
jmp 0x4017e3
mov esi, ecx
mov ecx, dword [esp + 0x20]
mov ebx, dword [ecx + 0x20]
lea edi, [ebx - 1]
mov edx, ebx
sub edx, 1
mov dword [esp + 8], edx
jb 0x401870
and edi, esi
mov eax, dword [ecx + 4]
mov dword [esp + 4], eax
jmp 0x401814
inc edi
dec ebx
je 0x40186e
mov eax, edi
and eax, dword [esp + 8]
mov edx, dword [esp + 4]
mov ebp, dword [edx + eax*4]
cmp ebp, 0xffffffff
je 0x40186e
mov eax, dword [ecx + 8]
cmp dword [eax + ebp*4], esi
jne 0x401810
mov eax, dword [ecx + 0xc]
mov eax, dword [eax + ebp*4]
mov dword [esp], eax
push eax
call fcn.004088b0
mov ecx, dword [esp + 0x24]
add esp, 4
cmp eax, dword [esp + 0x28]
jne 0x401810
push dword [esp + 0x28]
push dword [esp + 4]
push dword [esp + 0x2c]
call fcn.004088d0
mov ecx, dword [esp + 0x2c]
add esp, 0xc
test eax, eax
jne 0x401810
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + ebp*4]
jmp 0x401870
xor eax, eax
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret

Function at 0x401880
Capabilities:
Hash data using djb2

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10
xor edi, edi
cmp dword [esp + 0x24], 0
je 0x401981
mov ebx, dword [esp + 0x28]
test ebx, ebx
je 0x401981
push ebx
call fcn.004088b0
add esp, 4
test eax, eax
je 0x4018da
mov ecx, 0x1505
xor ebp, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ebx + ebp]
test edx, edx
je 0x4018e1
inc ebp
mov esi, ecx
shl esi, 5
add esi, ecx
add esi, edx
mov ecx, esi
cmp eax, ebp
jne 0x4018c0
jmp 0x4018e3
mov esi, 0x1505
jmp 0x4018e3
mov esi, ecx
mov dword [esp], eax
mov ecx, dword [esp + 0x24]
mov ebx, dword [ecx + 0x20]
lea ebp, [ebx - 1]
mov eax, ebx
sub eax, 1
mov dword [esp + 0xc], eax
jb 0x401981
and ebp, esi
mov eax, dword [ecx + 4]
mov dword [esp + 8], eax
jmp 0x401914
inc ebp
dec ebx
je 0x40197f
mov eax, ebp
and eax, dword [esp + 0xc]
mov edx, dword [esp + 8]
mov edi, dword [edx + eax*4]
cmp edi, 0xffffffff
je 0x40197f
mov eax, dword [ecx + 8]
cmp dword [eax + edi*4], esi
jne 0x401910
mov eax, dword [ecx + 0xc]
mov eax, dword [eax + edi*4]
mov dword [esp + 4], eax
push eax
call fcn.004088b0
mov ecx, dword [esp + 0x28]
add esp, 4
cmp eax, dword [esp]
jne 0x401910
push dword [esp]
push dword [esp + 8]
push dword [esp + 0x30]
call fcn.004088d0
mov ecx, dword [esp + 0x30]
add esp, 0xc
test eax, eax
jne 0x401910
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + edi*4]
test eax, eax
je 0x40197f
cmp dword [eax + 4], 2
mov edi, 0
jne 0x401981
mov edi, dword [eax + 8]
jmp 0x401981
xor edi, edi
mov eax, edi
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret
Function at 0x4019b0
Capabilities:
Hash data using djb2

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
fldz
fstp qword [esp + 0x10]
cmp dword [esp + 0x2c], 0
je 0x401a1b
mov esi, dword [esp + 0x30]
test esi, esi
je 0x401a1b
push esi
call fcn.004088b0
add esp, 4
test eax, eax
je 0x4019fa
mov ecx, 0x1505
xor edi, edi
movzx edx, byte [esi + edi]
test edx, edx
je 0x401a01
inc edi
mov ebp, ecx
shl ebp, 5
add ebp, ecx
add ebp, edx
mov ecx, ebp
cmp eax, edi
jne 0x4019e0
jmp 0x401a03
mov ebp, 0x1505
jmp 0x401a03
mov ebp, ecx
mov dword [esp], eax
mov ecx, dword [esp + 0x2c]
mov edi, dword [ecx + 0x20]
lea ebx, [edi - 1]
mov eax, edi
sub eax, 1
mov dword [esp + 0xc], eax
jae 0x401a27
fld qword [esp + 0x10]
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret
and ebx, ebp
mov eax, dword [ecx + 4]
mov dword [esp + 8], eax
jmp 0x401a44
inc ebx
dec edi
je 0x401a1b
mov eax, ebx
and eax, dword [esp + 0xc]
mov edx, dword [esp + 8]
mov esi, dword [edx + eax*4]
cmp esi, 0xffffffff
je 0x401a1b
mov eax, dword [ecx + 8]
cmp dword [eax + esi*4], ebp
jne 0x401a40
mov eax, dword [ecx + 0xc]
mov eax, dword [eax + esi*4]
mov dword [esp + 4], eax
push eax
call fcn.004088b0
mov ecx, dword [esp + 0x30]
add esp, 4
cmp eax, dword [esp]
jne 0x401a40
push dword [esp]
push dword [esp + 8]
push dword [esp + 0x38]
call fcn.004088d0
mov ecx, dword [esp + 0x38]
add esp, 0xc
test eax, eax
jne 0x401a40
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + esi*4]
test eax, eax
je 0x401a1b
cmp dword [eax + 4], 3
jne 0x401a1b
fld qword [eax + 8]
fstp qword [esp + 0x10]
jmp 0x401a1b

Function at 0x401ae0
Capabilities:
Hash data using djb2

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10
xor edi, edi
cmp dword [esp + 0x24], 0
je 0x401be1
mov ebx, dword [esp + 0x28]
test ebx, ebx
je 0x401be1
push ebx
call fcn.004088b0
add esp, 4
test eax, eax
je 0x401b3a
mov ecx, 0x1505
xor ebp, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ebx + ebp]
test edx, edx
je 0x401b41
inc ebp
mov esi, ecx
shl esi, 5
add esi, ecx
add esi, edx
mov ecx, esi
cmp eax, ebp
jne 0x401b20
jmp 0x401b43
mov esi, 0x1505
jmp 0x401b43
mov esi, ecx
mov dword [esp], eax
mov ecx, dword [esp + 0x24]
mov ebx, dword [ecx + 0x20]
lea ebp, [ebx - 1]
mov eax, ebx
sub eax, 1
mov dword [esp + 0xc], eax
jb 0x401be1
and ebp, esi
mov eax, dword [ecx + 4]
mov dword [esp + 8], eax
jmp 0x401b74
inc ebp
dec ebx
je 0x401bdf
mov eax, ebp
and eax, dword [esp + 0xc]
mov edx, dword [esp + 8]
mov edi, dword [edx + eax*4]
cmp edi, 0xffffffff
je 0x401bdf
mov eax, dword [ecx + 8]
cmp dword [eax + edi*4], esi
jne 0x401b70
mov eax, dword [ecx + 0xc]
mov eax, dword [eax + edi*4]
mov dword [esp + 4], eax
push eax
call fcn.004088b0
mov ecx, dword [esp + 0x28]
add esp, 4
cmp eax, dword [esp]
jne 0x401b70
push dword [esp]
push dword [esp + 8]
push dword [esp + 0x30]
call fcn.004088d0
mov ecx, dword [esp + 0x30]
add esp, 0xc
test eax, eax
jne 0x401b70
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + edi*4]
test eax, eax
je 0x401bdf
cmp dword [eax + 4], 5
mov edi, 0
jne 0x401be1
mov edi, dword [eax + 8]
jmp 0x401be1
xor edi, edi
mov eax, edi
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret
Function at 0x401c10
Capabilities:
Hash data using djb2

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10
mov edi, 0xffffffff
cmp dword [esp + 0x24], 0
je 0x401d14
mov ebx, dword [esp + 0x28]
test ebx, ebx
je 0x401d14
push ebx
call fcn.004088b0
add esp, 4
test eax, eax
je 0x401c6a
mov ecx, 0x1505
xor ebp, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ebx + ebp]
test edx, edx
je 0x401c71
inc ebp
mov esi, ecx
shl esi, 5
add esi, ecx
add esi, edx
mov ecx, esi
cmp eax, ebp
jne 0x401c50
jmp 0x401c73
mov esi, 0x1505
jmp 0x401c73
mov esi, ecx
mov dword [esp], eax
mov ecx, dword [esp + 0x24]
mov ebx, dword [ecx + 0x20]
lea ebp, [ebx - 1]
mov eax, ebx
sub eax, 1
mov dword [esp + 0xc], eax
jb 0x401d14
and ebp, esi
mov eax, dword [ecx + 4]
mov dword [esp + 8], eax
jmp 0x401ca4
inc ebp
dec ebx
je 0x401d0f
mov eax, ebp
and eax, dword [esp + 0xc]
mov edx, dword [esp + 8]
mov edi, dword [edx + eax*4]
cmp edi, 0xffffffff
je 0x401d0f
mov eax, dword [ecx + 8]
cmp dword [eax + edi*4], esi
jne 0x401ca0
mov eax, dword [ecx + 0xc]
mov eax, dword [eax + edi*4]
mov dword [esp + 4], eax
push eax
call fcn.004088b0
mov ecx, dword [esp + 0x28]
add esp, 4
cmp eax, dword [esp]
jne 0x401ca0
push dword [esp]
push dword [esp + 8]
push dword [esp + 0x30]
call fcn.004088d0
mov ecx, dword [esp + 0x30]
add esp, 0xc
test eax, eax
jne 0x401ca0
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + edi*4]
test eax, eax
je 0x401d0f
cmp dword [eax + 4], 6
mov edi, 0xffffffff
jne 0x401d14
mov edi, dword [eax + 8]
jmp 0x401d14
mov edi, 0xffffffff
mov eax, edi
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret
Function at 0x401d20
Capabilities:
Hash data using djb2

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
mov ebp, dword [esp + 0x30]
mov edi, dword [esp + 0x2c]
push 0x2e
push ebp
call fcn.00408920
add esp, 8
test eax, eax
je 0x401d84
mov esi, eax
jmp 0x401d64
mov ebp, esi
inc ebp
push 0x2e
push ebp
call fcn.00408920
add esp, 8
mov esi, eax
test eax, eax
je 0x401d84
mov eax, esi
sub eax, ebp
push eax
push ebp
push edi
call fcn.00401790
add esp, 0xc
xor edi, edi
test eax, eax
je 0x401d50
cmp dword [eax + 4], 4
jne 0x401d50
mov edi, dword [eax + 8]
jmp 0x401d50
xor eax, eax
test edi, edi
je 0x401deb
test ebp, ebp
je 0x401deb
push ebp
call fcn.004088b0
add esp, 4
test eax, eax
je 0x401dcb
mov ecx, 0x1505
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ebp + ebx]
test edx, edx
je 0x401dd2
inc ebx
mov esi, ecx
shl esi, 5
add esi, ecx
add esi, edx
mov ecx, esi
cmp eax, ebx
jne 0x401db0
jmp 0x401dd4
mov esi, 0x1505
jmp 0x401dd4
mov esi, ecx
mov dword [esp + 4], eax
mov ecx, dword [edi + 0x20]
lea ebx, [ecx - 1]
mov eax, ecx
sub eax, 1
mov dword [esp + 0x14], eax
jae 0x401df3
xor eax, eax
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret
and ebx, esi
mov dword [esp], edi
mov eax, dword [edi + 4]
mov dword [esp + 0x10], eax
jmp 0x401e14
inc ebx
dec ecx
je 0x401de9
mov eax, ebx
and eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov edi, dword [edx + eax*4]
cmp edi, 0xffffffff
je 0x401de9
mov eax, dword [esp]
mov eax, dword [eax + 8]
cmp dword [eax + edi*4], esi
jne 0x401e10
mov eax, dword [esp]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + edi*4]
mov dword [esp + 0xc], eax
push eax
mov dword [esp + 0xc], ecx
call fcn.004088b0
mov ecx, dword [esp + 0xc]
add esp, 4
cmp eax, dword [esp + 4]
jne 0x401e10
push dword [esp + 4]
push dword [esp + 0x10]
push ebp
call fcn.004088d0
mov ecx, dword [esp + 0x14]
add esp, 0xc
test eax, eax
jne 0x401e10
mov eax, dword [esp]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + edi*4]
jmp 0x401deb