joyce8/EMBER2024-capa huggingface dataset:
Function at 0x1001bd69
Capabilities:
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
lea ebp, [esp - 0xf98]
mov eax, 0x1018
call fcn.1001e5c0
mov eax, dword [0x10047578]
xor eax, ebp
mov dword [ebp + 0xf94], eax
mov eax, dword [ebp + 0xfa4]
push ebx
push esi
push edi
mov edi, dword [ebp + 0xfa0]
xor ebx, ebx
mov esi, 0x7ff
push esi
mov dword [ebp - 0x78], eax
lea eax, [ebp + 0x795]
push ebx
push eax
mov dword [ebp - 0x80], edi
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x7c], 1
mov byte [ebp + 0x794], bl
call fcn.1001d760
push esi
lea eax, [ebp - 0x6b]
push ebx
push eax
mov byte [ebp - 0x6c], bl
call fcn.1001d760
push edi
call fcn.10021a46
add esp, 0x1c
cmp eax, ebx
je 0x1001bdf9
push eax
push dword [ebp + 0xfa8]
push dword [ebp - 0x78]
call fcn.10025e2f
add esp, 0xc
neg eax
sbb eax, eax
inc eax
jmp 0x1001bf5b
mov edi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
lea eax, [ebp - 0x70]
push eax
push 0x20019
push ebx
push dword [0x10047550]
push SysReAllocString
call edi
test eax, eax
je 0x1001be21
xor eax, eax
jmp 0x1001bf5b
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea eax, [ebp + 0xfa8]
push eax
push dword [ebp - 0x78]
lea eax, [ebp - 0x7c]
push eax
push ebx
push dword [ebp - 0x80]
push dword [ebp - 0x70]
call esi
test eax, eax
je 0x1001be52
push dword [ebp - 0x70]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, ebx
jmp 0x1001bf5b
lea eax, [ebp - 0x74]
push eax
lea eax, [ebp + 0x794]
push eax
lea eax, [ebp - 0x7c]
push eax
push ebx
push 0x1003cad8
push dword [ebp - 0x70]
mov dword [ebp - 0x74], 0x800
call esi
test eax, eax
je 0x1001be7c
xor ebx, ebx
inc ebx
jmp 0x1001be42
push dword [ebp - 0x70]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [ebp - 0x70]
push eax
push 0x20019
push ebx
push str.SOFTWAREOracleJavaDeploy
push reloc.OLEAUT32.dll_SysReAllocString
call edi
test eax, eax
jne 0x1001be77
lea eax, [ebp - 0x74]
push eax
lea eax, [ebp - 0x6c]
push eax
lea eax, [ebp - 0x7c]
push eax
push ebx
push str.deployment.modified.timestamp
push dword [ebp - 0x70]
mov dword [ebp - 0x74], 0x800
call esi
test eax, eax
jne 0x1001be77
lea eax, [ebp + 0x794]
push eax
lea eax, [ebp - 0x6c]
push eax
mov dword [ebp - 0x74], 0x800
call fcn.10025e2f
pop ecx
pop ecx
test eax, eax
js 0x1001bf58
lea eax, [ebp - 0x74]
push eax
push dword [ebp - 0x78]
lea eax, [ebp - 0x7c]
push eax
push ebx
push dword [ebp - 0x80]
push dword [ebp - 0x70]
call esi
test eax, eax
jne 0x1001be77
push dword [ebp - 0x70]
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call esi
call fcn.10025e2f
test eax, eax
jne 0x1001bf58
lea eax, [ebp - 0x70]
push eax
push 0x20006
push ebx
push dword [0x10047550]
push SysReAllocString
call edi
test eax, eax
jne 0x1001be1a
push dword [ebp - 0x74]
push dword [ebp - 0x78]
push 1
push ebx
push dword [ebp - 0x80]
push dword [ebp - 0x70]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
jne 0x1001be42
push dword [ebp - 0x70]
call esi
push dword [ebp - 0x78]
push dword [ebp - 0x80]
call fcn.10025e2f
pop ecx
pop ecx
xor eax, eax
inc eax
mov ecx, dword [ebp + 0xf94]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1001d742
add ebp, 0xf98
leave
ret
Function at 0x1001d471
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call

Disassembly:
cmp dword [0x10048aac], 0
push esi
push edi
jne 0x1001d3e7
call fcn.1001d353
test eax, eax
je 0x1001d42c
mov eax, dword [0x10048aac]
cmp eax, 1
jne 0x1001d408
push 0xd
push 0
call dword [sym.imp.kernel32.dll_GetProcessHeap]
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x1001d42c
jmp 0x1001d46e
mov edi, dword [sym.imp.kernel32.dll_InterlockedPopEntrySList]
push eax
call edi
test eax, eax
jne 0x1001d46e
push 0x40
mov eax, 0x1000
push eax
push eax
push 0
call dword [sym.imp.kernel32.dll_VirtualAlloc]
mov esi, eax
test esi, esi
jne 0x1001d430
xor eax, eax
jmp 0x1001d46e
mov eax, dword [esi]
push dword [0x10048aac]
call edi
mov edi, eax
test edi, edi
je 0x1001d452
push 0x8000
push 0
push esi
call dword [sym.imp.kernel32.dll_VirtualFree]
mov eax, edi
jmp 0x1001d46e
lea edi, [esi + 0xff0]
push esi
push dword [0x10048aac]
call dword [sym.imp.kernel32.dll_InterlockedPushEntrySList]
add esi, 0x10
cmp esi, edi
jb 0x1001d458
mov eax, esi
pop edi
pop esi
ret
jmp 0x1001d3d3

Function at 0x1001d742
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [0x10047578]
jne 0x1001d74c
repz ret
jmp fcn.10023329

Function at 0x10025e2f
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
pushal
call 0x10025e3e
pop dword [ebp - 0x48]
mov eax, 0xb3d65437
sub eax, 0xa3d3f5f9
sub dword [ebp - 0x48], eax
push 0x40
push 0x1000
push 0x42d5f
push 0
mov eax, sym.imp.kernel32.dll_VirtualAlloc
add eax, dword [ebp - 0x48]
call dword [eax]
mov ecx, 0x7172532d
sub ecx, 0x717201f0
xor esi, esi
add esi, eax
mov edi, 0x615c645e
add edi, 0xaeab15a2
add edi, dword [ebp - 0x48]
mov edx, 0xf196e6af
add edx, 0xcef4032b
xor dword [ebp - 0x2c], 0x4792631f
mov ebx, dword [edi]
add dword [ebp - 4], eax
sub ebx, edx
add dword [ebp - 0x38], edx
mov dword [esi], ebx
add dword [ebp - 0x40], edi
add esi, 0xc870a972
sub esi, 0xc870a96e
add edi, 0xdb7bb23b
add edi, 0x24844dc9
loop 0x10025e9a
add eax, 0x2381b373
add eax, 0xdc7f8454
xor ebx, ebx
add ebx, eax
add eax, 0x30ccd185
add eax, 0xcf332e80
mov ecx, 0x5741f7ba
sub ecx, 0x4741f7ba
add ecx, dword [ebp - 0x48]
call ebx
leave
ret
Function at 0x412281
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
pushal
call 0x412290
pop dword [ebp - 0x10]
mov eax, 0x412290
sub dword [ebp - 0x10], eax
push 0x40
push 0x1000
push 0x3bb42
push 0
mov eax, 0xcb5c8765
sub eax, 0xcb19f739
add eax, dword [ebp - 0x10]
call dword [eax]
mov ecx, 0x8b772388
add ecx, 0x74892f19
mov edx, eax
mov edi, 0x9ef9e019
add edi, 0x61498de7
add edi, dword [ebp - 0x10]
mov esi, 0x43f56624
sub esi, 0x8c32b260
sub dword [ebp - 8], 0x6d3eebba
mov ebx, dword [edi]
sub dword [ebp - 8], 0xeec47f3d
add ebx, esi
xor dword [ebp - 0xc], 0x2fd09e96
mov dword [edx], ebx
mov dword [ebp - 8], 0xebb8a4da
add edx, 0xa51a2c4c
sub edx, 0xa51a2c48
add edi, 0x2974903c
sub edi, 0x29749038
loop 0x4122ea
add eax, 0x4a9ddd14
sub eax, 0x4a9c9fbd
mov ebx, eax
add eax, 5
mov ecx, 0x18a9a49
sub ecx, 0x14a9a49
add ecx, dword [ebp - 0x10]
call ebx
leave
ret
Function at 0x425a8c
Capabilities:
Terminate process

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42bb98
push 0x425a86
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x20
push ebx
push esi
push edi
mov dword [ebp - 0x18], esp
and dword [ebp - 4], 0
push 1
call dword [sym.imp.msvcrt.dll___set_app_type]
pop ecx
or dword [0x43466c], 0xffffffff
or dword [0x434670], 0xffffffff
call dword [sym.imp.msvcrt.dll___p__fmode]
mov ecx, dword [0x432650]
mov dword [eax], ecx
call dword [sym.imp.msvcrt.dll___p__commode]
mov ecx, dword [0x43264c]
mov dword [eax], ecx
mov eax, dword [sym.imp.msvcrt.dll__adjust_fdiv]
mov eax, dword [eax]
mov dword [0x434668], eax
call fcn.00425bcf
cmp dword [0x430240], 0
jne 0x425b0f
push 0x425bcc
call dword [sym.imp.msvcrt.dll___setusermatherr]
pop ecx
call fcn.00425bba
push 0x430064
push 0x430060
call sub.msvcrt.dll__initterm
mov eax, dword [0x432648]
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x28]
push eax
push dword [0x432644]
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x1c]
push eax
call dword [sym.imp.msvcrt.dll___getmainargs]
push 0x43005c
push section..data
call sub.msvcrt.dll__initterm
call dword [sym.imp.msvcrt.dll___p___initenv]
mov ecx, dword [ebp - 0x20]
mov dword [eax], ecx
push dword [ebp - 0x20]
push dword [ebp - 0x2c]
push dword [ebp - 0x1c]
call fcn.00411c13
add esp, 0x30
mov dword [ebp - 0x24], eax
push eax
call dword [sym.imp.msvcrt.dll_exit]
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
mov ecx, dword [ecx]
mov dword [ebp - 0x30], ecx
push eax
push ecx
call sub.msvcrt.dll__XcptFilter
pop ecx
pop ecx
ret

Function at 0x2b001859
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [0x2b03bee0]
jne 0x2b001863
repz ret
jmp fcn.2b02c235

Function at 0x2b004abc
Capabilities:
Create thread

Disassembly:
push esi
push 0
push 0
mov esi, ecx
push esi
push 0x2b004ae4
push 0
push 0
call dword [sym.imp.kernel32.dll_CreateThread]
mov dword [esi + 0x28], eax
test eax, eax
jne 0x2b004ae2
mov ecx, esi
pop esi
jmp fcn.2b004af5
pop esi
ret
Function at 0x401020
Capabilities:
Terminate process

Disassembly:
mov eax, dword [esp + 4]
push 0x10
push str.File_Association_Utility
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
push 2
call dword [sym.imp.KERNEL32.dll_ExitProcess]

Function at 0x401280
Capabilities:
Create process on windows

Disassembly:
mov eax, 0x3ed8
call fcn.00401980
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x3ed4], eax
push esi
mov esi, dword [esp + 0x3ee4]
push edi
mov edi, dword [esp + 0x3ee4]
push 0x44
lea eax, [esp + 0x1c]
push 0
push eax
call fcn.00401a40
add esp, 0xc
cmp dword [esp + 0x3eec], 1
mov dword [esp + 0x18], 0x44
jne 0x4012dc
xor ecx, ecx
mov dword [esp + 0x44], 1
mov word [esp + 0x48], cx
jmp 0x4012e9
mov dx, word [esp + 0x3ef0]
mov word [esp + 0x48], dx
xor eax, eax
mov dword [esp + 8], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
lea eax, [esp + 8]
push eax
lea ecx, [esp + 0x1c]
push ecx
push 0
push 0
push 0
push 1
push 0
push 0
push esi
push edi
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
jne 0x40134f
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push esi
push str.CreateProcessW__s__failed_with_error_number__d.
lea edx, [esp + 0x68]
push edx
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov edx, eax
lea eax, [esp + 0x68]
inc edx
push eax
call fcn.00401000
add esp, 0x10
lea ecx, [esp + 0x5c]
push ecx
call fcn.00401020
mov edx, dword [esp + 8]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push edx
call esi
mov eax, dword [esp + 0xc]
push eax
call esi
mov ecx, dword [esp + 0x3edc]
pop edi
pop esi
xor ecx, esp
call fcn.00401965
add esp, 0x3ed8
ret
Function at 0x4015d0
Capabilities:
Accept command line arguments

Disassembly:
sub esp, 0x24
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x20], eax
push ebx
push esi
push edi
mov dword [esp + 0xc], 0
call fcn.00401040
push 0x13b8
mov dword [esp + 0x18], eax
call fcn.00401d0a
push 0x13b8
mov edi, eax
call fcn.00401d0a
push 0x1f40
call fcn.00401d0a
push 0x12c
mov ebx, eax
call fcn.00401d0a
mov ecx, dword [0x40b6e8]
mov edx, dword [0x40b6ec]
mov esi, eax
mov eax, dword [str._silent]
mov dword [esp + 0x2c], eax
mov eax, dword [0x40b6f0]
add esp, 0x10
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], eax
call fcn.00401380
test eax, eax
jne 0x40165c
push str.Please_note_that_in_order_to_run_File_Association_Utility_you_will_need_to_be_logged_in_as_a_user_with_administrative_privileges.__n_n___..._Exiting_File_Association_Utility.
call fcn.00401020
test edi, edi
je 0x4017b4
test ebx, ebx
je 0x4017b4
test esi, esi
je 0x4017b4
push ebp
push 0x40b584
push 4
push esi
call fcn.00401c4c
mov eax, dword [esp + 0x4c]
mov ebp, dword [sym.imp.OLEAUT32.dll_VariantInit]
add esp, 0xc
test eax, eax
je 0x40172e
cmp byte [eax], 0
je 0x40172e
lea ecx, [esp + 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov edi, 1
cmp dword [esp + 0x14], edi
mov edx, eax
mov dword [esp + 0x1c], edx
jle 0x4016e7
mov edx, dword [edx + edi*4]
push edx
push esi
push str._ls__ls
push esi
call ebp
mov edx, eax
inc edx
push esi
call fcn.00401000
mov edx, dword [esp + 0x2c]
inc edi
add esp, 0x10
cmp edi, dword [esp + 0x14]
jl 0x4016c3
mov edi, dword [edx + edi*4 - 4]
lea eax, [esp + 0x20]
nop
mov cx, word [eax]
cmp cx, word [edi]
jne 0x401716
test cx, cx
je 0x401712
mov cx, word [eax + 2]
cmp cx, word [edi + 2]
jne 0x401716
add eax, 4
add edi, 4
test cx, cx
jne 0x4016f0
xor eax, eax
jmp 0x40171b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x401727
mov dword [esp + 0x10], 1
push edx
call dword [sym.imp.KERNEL32.dll_LocalFree]
call fcn.004011d0
push eax
push esi
push str._ls__ls
push esi
call ebp
mov edx, eax
inc edx
push esi
call fcn.00401000
add esp, 0x10
call fcn.00401120
push esi
push str._fileassoc.tcl
mov edi, eax
mov eax, dword [esp + 0x20]
push eax
push edi
push str.__ls_____ls_ls___ls
push ebx
call ebp
mov edx, eax
inc edx
push ebx
call fcn.00401000
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x28]
push ecx
push edx
push ebx
push edi
call fcn.00401280
mov eax, dword [esp + 0x40]
push eax
call fcn.004019ab
push edi
call fcn.004019ab
push ebx
call fcn.004019ab
push esi
call fcn.004019ab
mov ecx, dword [esp + 0x68]
add esp, 0x38
pop ebp
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.00401965
add esp, 0x24
ret 0x10
push str.Memory_allocation_in_this_executable
call fcn.00401020
int3

Function at 0x401965
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [section..data]
jne 0x40196f
repz ret
jmp fcn.00402ff2
Function at 0x407c67
Capabilities:
Link many functions at runtime

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
push esi
push edi
call fcn.0040511c
and dword [ebp - 4], 0
cmp dword [0x40f854], 0
mov ebx, eax
jne 0x407d18
push str.USER32.DLL
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
test edi, edi
je 0x407dc9
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.MessageBoxA
push edi
call esi
test eax, eax
je 0x407dc9
push eax
call fcn.004050aa
mov dword [esp], str.GetActiveWindow
push edi
mov dword [0x40f854], eax
call esi
push eax
call fcn.004050aa
mov dword [esp], str.GetLastActivePopup
push edi
mov dword [0x40f858], eax
call esi
push eax
call fcn.004050aa
mov dword [esp], str.GetUserObjectInformationA
push edi
mov dword [0x40f85c], eax
call esi
push eax
call fcn.004050aa
pop ecx
mov dword [0x40f864], eax
test eax, eax
je 0x407d18
push str.GetProcessWindowStation
push edi
call esi
push eax
call fcn.004050aa
pop ecx
mov dword [0x40f860], eax
mov eax, dword [0x40f860]
cmp eax, ebx
je 0x407d70
cmp dword [0x40f864], ebx
je 0x407d70
push eax
call fcn.00405125
push dword [0x40f864]
mov esi, eax
call fcn.00405125
pop ecx
pop ecx
mov edi, eax
test esi, esi
je 0x407d70
test edi, edi
je 0x407d70
call esi
test eax, eax
je 0x407d67
lea ecx, [ebp - 8]
push ecx
push 0xc
lea ecx, [ebp - 0x14]
push ecx
push 1
push eax
call edi
test eax, eax
je 0x407d67
test byte [ebp - 0xc], 1
jne 0x407d70
or dword [ebp + 0x10], 0x200000
jmp 0x407da9
mov eax, dword [0x40f858]
cmp eax, ebx
je 0x407da9
push eax
call fcn.00405125
pop ecx
test eax, eax
je 0x407da9
call eax
mov dword [ebp - 4], eax
test eax, eax
je 0x407da9
mov eax, dword [0x40f85c]
cmp eax, ebx
je 0x407da9
push eax
call fcn.00405125
pop ecx
test eax, eax
je 0x407da9
push dword [ebp - 4]
call eax
mov dword [ebp - 4], eax
push dword [0x40f854]
call fcn.00405125
pop ecx
test eax, eax
je 0x407dc9
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [ebp - 4]
call eax
jmp 0x407dcb
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret
Function at 0x100030d8
Capabilities:
Enumerate pe sections

Disassembly:
sub esp, 0x50
push ebp
lea eax, [esp + 0x28]
push edi
push eax
call fcn.10003288
mov ecx, dword [esp + 0x5c]
xor edx, edx
xor ebp, ebp
mov dword [esp + 0xc], 1
mov edi, dword [ecx]
mov dword [esp + 0x10], 8
mov dword [esp + 0x14], 2
mov dword [esp + 0x18], 4
mov dx, word [edi + 0x14]
cmp word [edi + 6], bp
mov dword [esp + 0x1c], 0x10
mov dword [esp + 0x20], 0x80
mov dword [esp + 0x24], 0x20
mov dword [esp + 0x28], 0x40
lea eax, [edx + edi + 0x18]
jbe 0x100031d6
push ebx
push esi
lea ebx, [eax + 0x24]
mov eax, dword [ebx]
mov ecx, eax
mov edx, eax
shr ecx, 0x1d
shr edx, 0x1e
mov esi, eax
and ecx, 1
and edx, 1
shr esi, 0x1f
test eax, 0x2000000
je 0x10003179
mov eax, dword [ebx - 0x14]
mov ecx, dword [ebx - 0x1c]
push 0x4000
push eax
push ecx
call dword [esp + 0x4c]
jmp 0x100031bc
lea edx, [edx + ecx*2]
test eax, 0x4000000
lea ecx, [esi + edx*2]
mov esi, dword [esp + ecx*4 + 0x14]
je 0x10003190
or esi, 0x200
mov edx, dword [ebx - 0x14]
mov ecx, edx
test ecx, ecx
jne 0x100031ab
test al, 0x40
je 0x100031a2
mov ecx, dword [edi + 0x20]
jmp 0x100031a9
test al, 0x80
je 0x100031bc
mov ecx, dword [edi + 0x24]
test ecx, ecx
jbe 0x100031bc
mov ecx, dword [ebx - 0x1c]
lea eax, [esp + 0x10]
push eax
push esi
push edx
push ecx
call dword [esp + 0x44]
mov edx, dword [esp + 0x64]
xor eax, eax
inc ebp
add ebx, 0x28
mov edi, dword [edx]
mov ax, word [edi + 6]
cmp ebp, eax
jl 0x10003148
pop esi
pop ebx
pop edi
pop ebp
add esp, 0x50
ret
Function at 0x100039a5
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
pop ebp
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0xc]
ret

Function at 0x1001b0c0
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x100bd700
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x18
mov eax, dword [esp + 0x30]
push ebp
push esi
push edi
mov ecx, dword [eax]
push ecx
lea ecx, [esp + 0x10]
call fcn.100b295c
mov esi, dword [esp + 0xc]
lea ecx, [esp + 0x10]
mov dword [esp + 0x2c], 0
xor ebp, ebp
call fcn.1001bce0
mov ecx, dword [esp + 0x40]
mov byte [esp + 0x2c], 1
cmp ecx, 3
ja case.default.0x1001b114
jmp dword [ecx*4 + 0x1001b27c]
mov al, byte [esi]
test al, al
je 0x1001b142
cmp al, 0x20
je 0x1001b12e
cmp al, 0xa1
jne 0x1001b142
cmp byte [esi + 1], al
jne 0x1001b142
test al, 0x80
je 0x1001b13a
mov al, byte [esi + 1]
inc esi
test al, al
je 0x1001b142
mov al, byte [esi + 1]
inc esi
test al, al
jne 0x1001b121
test ecx, ecx
je case.default.0x1001b114
mov dl, byte [esi]
xor ecx, ecx
test dl, dl
mov eax, esi
je case.default.0x1001b114
mov edi, dword [esp + 0x3c]
mov dl, byte [eax]
test dl, 0x80
je 0x1001b188
cmp dl, 0xa1
jne 0x1001b17c
cmp byte [eax + 1], 0xa1
jne 0x1001b17c
test ecx, ecx
jne 0x1001b174
mov edi, eax
mov ecx, 1
inc eax
jmp 0x1001b19c
mov dl, byte [eax + 1]
inc eax
xor ecx, ecx
test dl, dl
je 0x1001b1b6
jmp 0x1001b19c
cmp dl, 0x20
jne 0x1001b19a
test ecx, ecx
jne 0x1001b193
mov edi, eax
mov ecx, 1
jmp 0x1001b19c
xor ecx, ecx
mov dl, byte [eax + 1]
inc eax
test dl, dl
jne 0x1001b15c
cmp ecx, 1
jne case.default.0x1001b114
mov dl, byte [edi]
mov ebp, edi
mov byte [esp + 0x3c], dl
mov byte [edi], 0
jmp case.default.0x1001b114
mov dl, byte [eax - 1]
lea edi, [eax - 1]
mov ebp, edi
mov byte [esp + 0x3c], dl
mov byte [edi], 0
jmp case.default.0x1001b114
mov al, byte [esi]
test al, al
je 0x1001b20e
test al, 0x80
mov byte [esp + 0x3c], al
je 0x1001b1f4
mov cl, byte [esi + 1]
test cl, cl
je 0x1001b20e
cmp al, 0xa1
jne 0x1001b1e4
cmp cl, al
je 0x1001b1f1
mov ax, word [esi]
lea ecx, [esp + 0x10]
push eax
call fcn.1001bfb0
inc esi
jmp 0x1001b206
cmp al, 0x20
je 0x1001b206
mov ecx, dword [esp + 0x3c]
push ecx
lea ecx, [esp + 0x14]
call fcn.1001bff0
mov al, byte [esi + 1]
inc esi
test al, al
jne 0x1001b1cd
push 0
lea ecx, [esp + 0x14]
call fcn.1001bff0
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
neg esi
sbb esi, esi
and esi, eax
push esi
call fcn.10025f50
mov edx, dword [esp + 0x38]
add esp, 4
test ebp, ebp
mov dword [edx], eax
je 0x1001b241
mov al, byte [esp + 0x3c]
mov byte [ebp], al
lea ecx, [esp + 0x10]
mov byte [esp + 0x2c], 0
mov dword [esp + 0x10], 0x101ab6e8
call fcn.1001bee0
lea ecx, [esp + 0xc]
mov dword [esp + 0x2c], 0xffffffff
call fcn.100b28ee
mov ecx, dword [esp + 0x24]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
add esp, 0x24
ret
Function at 0x10020a90
Capabilities:
Enumerate files on windows

Disassembly:
push 0xffffffffffffffff
push 0x100bdb9b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x180
push ebx
push ebp
mov ebp, ecx
lea ecx, [esp + 8]
lea eax, [ebp + 0x40]
push eax
call fcn.100b2663
mov ecx, dword [esp + 8]
mov dword [esp + 0x190], 0
mov eax, dword [ecx - 8]
test eax, eax
je 0x10020b12
lea edx, [esp + 0x10]
push 1
push edx
lea ecx, [esp + 0x10]
call fcn.100b04a9
mov eax, dword [eax]
push 0x10296d40
push eax
call fcn.100a2194
add esp, 8
lea ecx, [esp + 0x10]
test eax, eax
setne bl
call fcn.100b28ee
test bl, bl
je 0x10020b12
push 0x10296d40
lea ecx, [esp + 0xc]
call fcn.100b2c7e
push 0x10296d4c
lea ecx, [esp + 0xc]
call fcn.100b2c7e
mov ecx, dword [esp + 8]
lea eax, [esp + 0x48]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
mov dword [esp + 0xc], eax
jne 0x10020b4e
lea ecx, [esp + 8]
mov dword [esp + 0x190], eax
call fcn.100b28ee
jmp 0x10020c19
push esi
mov esi, dword [esp + 0x19c]
push edi
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
mov ebx, 0x23
test byte [esp + 0x50], 0x10
je 0x10020bd2
lea edx, [esp + 0x7c]
push 0x10296d48
push edx
call fcn.100a2194
add esp, 8
test eax, eax
je 0x10020bd2
lea eax, [esp + 0x7c]
push 0x10296d44
push eax
call fcn.100a2194
add esp, 8
test eax, eax
je 0x10020bd2
mov eax, dword [ebp + 0x1c]
lea edx, [esp + 0x1c]
push edx
push 0
lea ecx, [esp + 0x84]
push 0x1100
push eax
mov dword [esp + 0x2c], esi
mov dword [esp + 0x30], 0xffff0003
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 1
mov dword [esp + 0x44], ecx
mov dword [esp + 0x34], ebx
call edi
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x50]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x10020b62
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ecx, dword [ebp + 0x1c]
push esi
push 2
push 0x1102
push ecx
call edi
lea ecx, [esp + 0x10]
mov dword [esp + 0x198], 0xffffffff
call fcn.100b28ee
pop edi
pop esi
mov ecx, dword [esp + 0x188]
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x18c
ret 4

Function at 0x10021410
Capabilities:
Query or enumerate registry value

Disassembly:
mov ecx, dword [esp + 8]
mov edx, dword [esp + 4]
sub esp, 0x10c
lea eax, [esp]
push esi
push eax
push 1
push 0
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov esi, eax
test esi, esi
jne 0x10021472
mov edx, dword [esp + 4]
lea eax, [esp + 8]
lea ecx, [esp + 0xc]
push eax
push ecx
push esi
push edx
mov dword [esp + 0x18], 0x104
call dword [sym.imp.ADVAPI32.dll_RegQueryValueA]
mov ecx, dword [esp + 0x11c]
lea eax, [esp + 0xc]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov edx, dword [esp + 4]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, esi
pop esi
add esp, 0x10c
ret 0xc