joyce8/EMBER2024-capa huggingface dataset:
Function at 0x10055010
Capabilities:
Access peb ldr_data
Get number of processors

Disassembly:
push 0xffffffffffffffff
push 0x100971e8
mov eax, dword fs:[0]
push eax
sub esp, 0x14
push ebx
push ebp
push esi
push edi
mov eax, dword [0x100b8070]
xor eax, esp
push eax
lea eax, [esp + 0x28]
mov dword fs:[0], eax
mov esi, ecx
mov eax, dword [esi + 0x14]
mov edi, dword [eax + 0x5975c]
lea eax, [esp + 0x1c]
push eax
mov ecx, str.AllRank
call fcn.10003700
lea ecx, [esp + 0x18]
push ecx
mov ecx, str.EnragedRegeneration
mov dword [esp + 0x34], 0
call fcn.10003700
lea edx, [esp + 0x1c]
add esi, 4
mov bl, 1
push edx
mov ecx, esi
mov byte [esp + 0x34], bl
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x24], esp
mov ebp, esp
call fcn.10001820
add eax, 0x10
mov dword [ebp], eax
lea eax, [esp + 0x1c]
push eax
mov ecx, esi
mov byte [esp + 0x38], 2
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x2c], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov dword [esi], eax
mov ecx, edi
mov byte [esp + 0x38], bl
call fcn.10056d40
mov ebx, eax
mov byte [esp + 0x30], 0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100550ed
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x30], 0xffffffff
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10055115
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test ebx, ebx
je 0x10055169
mov ecx, dword [edi + 0x6c]
test ecx, ecx
je 0x1005512f
mov eax, dword [edi + 0x48]
imul eax, eax, 0x64
xor edx, edx
div ecx
cmp eax, 0xf
jbe 0x10055169
mov eax, ebx
call fcn.1006e760
cmp dword [ebx + 0x10], 0
jne 0x10055169
mov esi, dword [ebx]
call fcn.1007e040
test eax, eax
je 0x10055169
mov ecx, dword [edi + 0x64]
test ecx, ecx
je 0x10055169
mov eax, dword [edi + 0x40]
imul eax, eax, 0x64
xor edx, edx
div ecx
cmp eax, 0x46
jae 0x10055169
mov edx, dword [edi]
mov eax, dword [ebx]
mov edx, dword [edx + 0x14]
push eax
mov ecx, edi
call edx
mov ecx, dword [esp + 0x28]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret

Function at 0x10055200
Capabilities:
Check for time delay via gettickcount

Disassembly:
mov ecx, dword [edi + 0x14]
cmp dword [ecx + 0x158], 0
push ebx
push ebp
push esi
mov ebp, 1
je 0x10055252
mov eax, dword [ecx + 0x59818]
cmp eax, dword [ecx + 0x160]
jae 0x10055252
mov eax, dword [ecx + 0x5975c]
test eax, eax
je 0x10055252
mov esi, dword [eax + 0x64]
test esi, esi
jne 0x10055238
lea eax, [ebp + 0x63]
jmp 0x10055242
mov eax, dword [eax + 0x40]
imul eax, eax, 0x64
xor edx, edx
div esi
cmp eax, dword [ecx + 0x15c]
jbe 0x10055252
push edi
call fcn.10055580
mov ebp, eax
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
sub eax, dword [edi + 0x59240]
cmp eax, 0x2710
jbe 0x1005527a
call esi
lea ebx, [edi + 0x59234]
mov dword [edi + 0x59240], eax
call fcn.1001d830
pop esi
mov eax, ebp
pop ebp
pop ebx
ret
Function at 0x10056b10
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ecx
fld dword [eax]
push ebx
push edi
push ecx
push edx
sub esp, 8
fstp dword [esp + 4]
fld dword [eax + 4]
lea eax, [esi + 0xe8]
fstp dword [esp]
call fcn.100473d0
mov edi, eax
cmp edi, 2
jne 0x10056bc8
add dword [esi + 0x118], 1
cmp dword [esi + 0x118], 1
jle 0x10056bdd
push 0x100baed0
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
push 0x100b9758
mov dword [esp + 0xc], 0xb
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea eax, [esp + 8]
push eax
mov eax, 0x100b9770
call fcn.10046eb0
push 0x100b9758
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [esi + 0x20]
xor eax, eax
cmp dword [ecx + 0x220], eax
je 0x10056bdb
cmp dword [esi + 0x1c], eax
mov ebx, dword [sym.imp.KERNEL32.dll_GetTickCount]
jne 0x10056ba3
call ebx
mov dword [esi + 0x1c], eax
call ebx
mov edx, dword [esi + 0x20]
mov ecx, dword [edx + 0x224]
sub eax, dword [esi + 0x1c]
imul ecx, ecx, 0x3e8
cmp eax, ecx
mov eax, edi
jbe 0x10056bdd
mov dword [esi + 0x24], 1
pop edi
pop ebx
pop ecx
ret
cmp edi, 1
jne 0x10056bdd
xor eax, eax
mov dword [esi + 0x118], eax
mov dword [esi + 0x24], eax
mov dword [esi + 0x1c], eax
mov eax, edi
pop edi
pop ebx
pop ecx
ret

Function at 0x10056bf0
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ecx
push ebx
push edi
lea ecx, [esi + 0xe8]
call fcn.100471c0
mov edi, eax
cmp edi, 2
jne 0x10056c97
add dword [esi + 0x118], 1
cmp dword [esi + 0x118], 1
jle 0x10056cac
push 0x100baed0
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
push 0x100b9758
mov dword [esp + 0xc], 0xb
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea eax, [esp + 8]
push eax
mov eax, 0x100b9770
call fcn.10046eb0
push 0x100b9758
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [esi + 0x20]
xor eax, eax
cmp dword [ecx + 0x220], eax
je 0x10056caa
cmp dword [esi + 0x1c], eax
mov ebx, dword [sym.imp.KERNEL32.dll_GetTickCount]
jne 0x10056c72
call ebx
mov dword [esi + 0x1c], eax
call ebx
mov edx, dword [esi + 0x20]
mov ecx, dword [edx + 0x224]
sub eax, dword [esi + 0x1c]
imul ecx, ecx, 0x3e8
cmp eax, ecx
mov eax, edi
jbe 0x10056cac
mov dword [esi + 0x24], 1
pop edi
pop ebx
pop ecx
ret
cmp edi, 1
jne 0x10056cac
xor eax, eax
mov dword [esi + 0x118], eax
mov dword [esi + 0x24], eax
mov dword [esi + 0x1c], eax
mov eax, edi
pop edi
pop ebx
pop ecx
ret
Function at 0x1006f2d0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebx
push ebp
mov ebp, dword [esp + 0xc]
test ebp, ebp
push edi
mov edi, eax
mov ebx, ecx
je 0x1006f3c0
test ebx, ebx
je 0x1006f3c0
test edi, edi
je 0x1006f3c0
push esi
push 0x100
call fcn.10080a42
mov esi, eax
mov eax, dword [esp + 0x20]
push eax
mov ecx, ebx
call fcn.1006f3d0
add esp, 8
test eax, eax
jne 0x1006f318
pop esi
pop edi
pop ebp
pop ebx
ret
mov edx, dword [esp + 0x18]
xor eax, eax
xor ecx, ecx
test edx, edx
jle 0x1006f3a9
sub ebp, edi
mov dword [esp + 0x14], edx
mov edi, edi
add eax, 1
and eax, 0x800000ff
jns 0x1006f341
dec eax
or eax, 0xffffff00
inc eax
movzx edx, byte [eax + esi]
add ecx, edx
and ecx, 0x800000ff
jns 0x1006f357
dec ecx
or ecx, 0xffffff00
inc ecx
mov dl, byte [eax + esi]
mov bl, byte [ecx + esi]
mov byte [eax + esi], bl
mov byte [ecx + esi], dl
movzx edx, dl
and edx, 0x800000ff
jns 0x1006f376
dec edx
or edx, 0xffffff00
inc edx
movzx ebx, byte [eax + esi]
add edx, ebx
and edx, 0x800000ff
jns 0x1006f38c
dec edx
or edx, 0xffffff00
inc edx
movzx edx, byte [edx + esi]
xor dl, byte [edi + ebp]
add eax, 1
mov byte [edi], dl
add ecx, 1
add edi, 1
sub dword [esp + 0x14], 1
jne 0x1006f330
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
push esi
mov dword [eax], edx
call fcn.10081d27
add esp, 4
pop esi
pop edi
pop ebp
or eax, 0xffffffff
pop ebx
ret
pop edi
pop ebp
xor eax, eax
pop ebx
ret

Function at 0x1006f3d0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
sub esp, 0x104
mov eax, dword [0x100b8070]
xor eax, esp
mov dword [esp + 0x100], eax
push ebx
mov ebx, ecx
test ebx, ebx
push ebp
mov ebp, dword [esp + 0x110]
je 0x1006f49f
test esi, esi
je 0x1006f49f
push 0xff
lea eax, [esp + 0xd]
push 0
push eax
mov byte [esp + 0x14], 0
call fcn.10082ee0
add esp, 0xc
xor eax, eax
lea ebx, [ebx]
mov byte [esi + eax], al
add eax, 1
cmp eax, 0x100
jl 0x1006f420
push edi
xor ecx, ecx
xor edi, edi
mov eax, edi
cdq
idiv ebp
add edi, 1
cmp edi, 0x100
mov dl, byte [edx + ebx]
mov byte [esp + edi + 0xb], dl
jl 0x1006f432
lea edi, [esp + 0xc]
mov eax, esi
sub edi, esi
mov ebp, 0x100
movzx edx, byte [eax]
movsx ebx, byte [edi + eax]
add ebx, edx
add ecx, ebx
and ecx, 0x800000ff
jns 0x1006f471
dec ecx
or ecx, 0xffffff00
inc ecx
mov bl, byte [esi + ecx]
mov byte [eax], bl
mov byte [esi + ecx], dl
add ecx, 1
add eax, 1
sub ebp, 1
jne 0x1006f456
pop edi
pop ebp
or eax, 0xffffffff
pop ebx
mov ecx, dword [esp + 0x100]
xor ecx, esp
call fcn.10080c07
add esp, 0x104
ret
mov ecx, dword [esp + 0x108]
pop ebp
pop ebx
xor ecx, esp
xor eax, eax
call fcn.10080c07
add esp, 0x104
ret
Function at 0x10080c07
Capabilities:
Terminate process

Disassembly:
cmp ecx, dword [0x100b8070]
jne 0x10080c11
repz ret
jmp fcn.10083cee

Function at 0x100834ba
Capabilities:
Write file on windows

Disassembly:
push ecx
push ebx
mov ebx, dword [esp + 0xc]
push esi
push edi
xor esi, esi
xor edi, edi
cmp ebx, dword [edi*8 + 0x100b8098]
je 0x100834d5
inc edi
cmp edi, 0x17
jb 0x100834c6
cmp edi, 0x17
jae 0x10083655
push ebp
push 3
call fcn.1008dd0c
cmp eax, 1
pop ecx
je 0x10083621
push 3
call fcn.1008dd0c
test eax, eax
pop ecx
jne 0x10083509
cmp dword [0x100ba294], 1
je 0x10083621
cmp ebx, 0xfc
je 0x10083654
push str.Runtime_Error__n_nProgram:
mov ebx, 0x314
push ebx
mov ebp, 0x100ba2a0
push ebp
call fcn.10083344
add esp, 0xc
test eax, eax
je 0x1008353f
push esi
push esi
push esi
push esi
push esi
call fcn.10080c20
add esp, 0x14
push 0x104
mov esi, 0x100ba2b9
push esi
push 0
mov byte [0x100ba3bd], 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x10083583
push str._program_name_unknown_
push 0x2fb
push esi
call fcn.10083344
add esp, 0xc
test eax, eax
je 0x10083583
xor eax, eax
push eax
push eax
push eax
push eax
push eax
call fcn.10080c20
add esp, 0x14
push esi
call fcn.10083250
inc eax
cmp eax, 0x3c
pop ecx
jbe 0x100835c8
push esi
call fcn.10083250
sub esi, 0x3b
add eax, esi
push 3
mov ecx, 0x100ba5b4
push 0x100a099c
sub ecx, eax
push ecx
push eax
call fcn.1008dc59
add esp, 0x14
test eax, eax
je 0x100835c8
xor esi, esi
push esi
push esi
push esi
push esi
push esi
call fcn.10080c20
add esp, 0x14
jmp 0x100835ca
xor esi, esi
push 0x100a0998
push ebx
push ebp
call fcn.1008dbe8
add esp, 0xc
test eax, eax
je 0x100835ea
push esi
push esi
push esi
push esi
push esi
call fcn.10080c20
add esp, 0x14
push dword [edi*8 + 0x100b809c]
push ebx
push ebp
call fcn.1008dbe8
add esp, 0xc
test eax, eax
je 0x1008360c
push esi
push esi
push esi
push esi
push esi
call fcn.10080c20
add esp, 0x14
push 0x12010
push str.Microsoft_Visual_C_Runtime_Library
push ebp
call fcn.1008da2b
add esp, 0xc
jmp 0x10083654
push 0xfffffffffffffff4
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
mov ebp, eax
cmp ebp, esi
je 0x10083654
cmp ebp, 0xffffffff
je 0x10083654
push 0
lea eax, [esp + 0x14]
push eax
lea esi, [edi*8 + 0x100b809c]
push dword [esi]
call fcn.10083250
pop ecx
push eax
push dword [esi]
push ebp
call dword [sym.imp.KERNEL32.dll_WriteFile]
pop ebp
pop edi
pop esi
pop ebx
pop ecx
ret
Function at 0x1008da2b
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push esi
push edi
call fcn.1008376d
xor ebx, ebx
cmp dword [0x100bac20], ebx
mov dword [ebp - 8], eax
mov dword [ebp - 4], ebx
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x10], ebx
jne 0x1008db01
push str.USER32.DLL
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
cmp edi, ebx
je 0x1008dbe1
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.MessageBoxA
push edi
call esi
cmp eax, ebx
je 0x1008dbe1
push eax
call fcn.100836ff
mov dword [esp], str.GetActiveWindow
push edi
mov dword [0x100bac20], eax
call esi
push eax
call fcn.100836ff
mov dword [esp], str.GetLastActivePopup
push edi
mov dword [0x100bac24], eax
call esi
push eax
call fcn.100836ff
mov dword [0x100bac28], eax
lea eax, [ebp - 0xc]
push eax
call fcn.10089676
test eax, eax
pop ecx
pop ecx
je 0x1008dacf
push ebx
push ebx
push ebx
push ebx
push ebx
call fcn.10080c20
add esp, 0x14
cmp dword [ebp - 0xc], 2
jne 0x1008db01
push str.GetUserObjectInformationA
push edi
call esi
push eax
call fcn.100836ff
cmp eax, ebx
pop ecx
mov dword [0x100bac30], eax
je 0x1008db01
push str.GetProcessWindowStation
push edi
call esi
push eax
call fcn.100836ff
pop ecx
mov dword [0x100bac2c], eax
mov eax, dword [0x100bac2c]
mov ecx, dword [ebp - 8]
cmp eax, ecx
je 0x1008db86
cmp dword [0x100bac30], ecx
je 0x1008db86
push eax
call fcn.10083776
push dword [0x100bac30]
mov esi, eax
call fcn.10083776
cmp esi, ebx
pop ecx
pop ecx
mov edi, eax
je 0x1008db86
cmp edi, ebx
je 0x1008db86
call esi
cmp eax, ebx
je 0x1008db53
lea ecx, [ebp - 0x14]
push ecx
push 0xc
lea ecx, [ebp - 0x20]
push ecx
push 1
push eax
call edi
test eax, eax
je 0x1008db53
test byte [ebp - 0x18], 1
jne 0x1008db86
lea eax, [ebp - 0x10]
push eax
call fcn.100896ad
test eax, eax
pop ecx
je 0x1008db6e
push ebx
push ebx
push ebx
push ebx
push ebx
call fcn.10080c20
add esp, 0x14
cmp dword [ebp - 0x10], 4
jb 0x1008db7d
or dword [ebp + 0x10], 0x200000
jmp 0x1008dbc1
or dword [ebp + 0x10], 0x40000
jmp 0x1008dbc1
mov eax, dword [0x100bac24]
cmp eax, dword [ebp - 8]
je 0x1008dbc1
push eax
call fcn.10083776
cmp eax, ebx
pop ecx
je 0x1008dbc1
call eax
cmp eax, ebx
mov dword [ebp - 4], eax
je 0x1008dbc1
mov eax, dword [0x100bac28]
cmp eax, dword [ebp - 8]
je 0x1008dbc1
push eax
call fcn.10083776
cmp eax, ebx
pop ecx
je 0x1008dbc1
push dword [ebp - 4]
call eax
mov dword [ebp - 4], eax
push dword [0x100bac20]
call fcn.10083776
cmp eax, ebx
pop ecx
je 0x1008dbe1
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [ebp - 4]
call eax
jmp 0x1008dbe3
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret
Function at 0x10093770
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
cmp dword [0x100bad7c], 0
je 0x10093789
mov eax, dword [0x100bad7c]
jmp 0x10093926
mov dword [0x100bad7c], 0x100bad54
push 0x28
push 0
push 0x100bad54
call fcn.10082ee0
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov dword [0x100bad54], eax
push str.imagehlp.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x100bad58], eax
cmp dword [0x100bad58], 0
jne 0x100937cf
xor eax, eax
jmp 0x10093926
push str.ImagehlpApiVersionEx
mov eax, dword [0x100bad58]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x100bad5c], eax
push str.SymInitialize
mov ecx, dword [0x100bad58]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x100bad60], eax
push str.SymSetOptions
mov edx, dword [0x100bad58]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x100bad64], eax
push str.SymGetOptions
mov eax, dword [0x100bad58]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x100bad68], eax
push str.SymLoadModule
mov ecx, dword [0x100bad58]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x100bad6c], eax
push str.SymGetModuleInfo
mov edx, dword [0x100bad58]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x100bad70], eax
push str.SymGetSymFromName
mov eax, dword [0x100bad58]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x100bad74], eax
push str.BindImage
mov ecx, dword [0x100bad58]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x100bad78], eax
push 8
push 0
lea edx, [ebp - 8]
push edx
call fcn.10082ee0
add esp, 0xc
mov word [ebp - 8], 9
cmp dword [0x100bad5c], 0
je 0x100938ad
lea eax, [ebp - 8]
push eax
call dword [0x100bad5c]
cmp dword [0x100bad5c], 0
je 0x100938bf
movzx ecx, word [ebp - 8]
cmp ecx, 9
jge 0x100938da
mov edx, dword [0x100bad58]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [0x100bad58], 0
xor eax, eax
jmp 0x10093926
cmp dword [0x100bad60], 0
je 0x100938f3
push 0
push 0
mov eax, dword [0x100bad54]
push eax
call dword [0x100bad60]
cmp dword [0x100bad68], 0
je 0x10093921
cmp dword [0x100bad64], 0
je 0x10093921
call dword [0x100bad68]
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0xc]
and ecx, 7
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp - 0xc]
push edx
call dword [0x100bad64]
mov eax, dword [0x100bad7c]
mov esp, ebp
pop ebp
ret
Function at 0x407010
Capabilities:
Enumerate pe sections

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
xor edx, edx
push ebx
push esi
push edi
mov ecx, dword [eax + 0x3c]
add ecx, eax
movzx eax, word [ecx + 0x14]
movzx ebx, word [ecx + 6]
add eax, 0x18
add eax, ecx
test ebx, ebx
je 0x40704e
mov edi, dword [ebp + 0xc]
mov esi, dword [eax + 0xc]
cmp edi, esi
jb 0x407046
mov ecx, dword [eax + 8]
add ecx, esi
cmp edi, ecx
jb 0x407050
inc edx
add eax, 0x28
cmp edx, ebx
jb 0x407036
xor eax, eax
pop edi
pop esi
pop ebx
pop ebp
ret

Function at 0x407120
Capabilities:
Parse pe header

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
mov ecx, dword [ebp + 8]
mov eax, 0x5a4d
cmp word [ecx], ax
jne 0x407151
mov eax, dword [ecx + 0x3c]
add eax, ecx
cmp dword [eax], 0x4550
jne 0x407151
mov ecx, 0x10b
cmp word [eax + 0x18], cx
jne 0x407151
mov eax, 1
pop ebp
ret
xor eax, eax
pop ebp
ret

Function at 0x401d7d
Capabilities:
Allocate or change rwx memory

Disassembly:
push ebx
push ecx
push edx
push esi
push edi
enter 4, 0
mov esi, eax
mov edx, dword [0x404050]
mov ebx, eax
add edx, eax
mov eax, 0x404054
call fcn.00401cbd
lea edx, [ebp - 4]
push edx
mov edx, esi
or dl, 0x40
mov edi, 0x4034fa
push edx
sub edi, fcn.00402ca4
push edi
xor eax, eax
push fcn.00402ca4
mov dword [ebp - 4], eax
call dword [sym.imp.KERNEL32.DLL_VirtualProtect]
cmp dword [ebp - 4], 0
je 0x401de7
mov eax, fcn.00402ca4
mov ebx, esi
mov edx, edi
call fcn.00401cbd
mov edx, 0x1c000
mov eax, 0x404054
mov ebx, esi
call fcn.0040189d
leave
pop edi
pop esi
pop edx
pop ecx
pop ebx
ret

Function at 0x401eeb
Capabilities:
Encode data using base64 via winapi

Disassembly:
push ecx
push edx
sub esp, 0x430
xor eax, eax
mov dword [esp + 0x424], eax
mov dword [esp + 0x428], 0x14
mov eax, dword [esp + 0x424]
mov word [esp + 0x208], ax
lea eax, [esp + 0x428]
push eax
lea eax, [esp + 0x414]
push eax
push 1
push 1
lea eax, [esp + 0x218]
push eax
call dword [sym.imp.CRYPT32.DLL_CryptBinaryToStringW]
movzx eax, word [esp + 0x410]
sub eax, 0x47
mov dword [esp + 0x42c], eax
mov eax, dword [esp + 0x428]
add dword [esp + 0x42c], eax
push 0x104
lea eax, [esp + 4]
push eax
mov eax, dword [esp + 0x42c]
push eax
call dword [sym.imp.KERNEL32.DLL_GetModuleFileNameW]
mov eax, esp
push eax
call dword [sym.imp.SHLWAPI.DLL_PathFindExtensionW]
mov eax, dword [esp + 0x42c]
add esp, 0x430
pop edx
pop ecx
ret
Function at 0x40318c
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
xor eax, eax
mov dword [ebp - 8], eax
xor eax, eax
push ebp
push 0x4031e5
push dword fs:[eax]
mov dword fs:[eax], esp
xor ebx, ebx
call sub.kernel32.dll_GetCommandLineA
lea edx, [ebp - 8]
call fcn.00403028
mov dword [ebp - 4], eax
lea edx, [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00403028
mov dword [ebp - 4], eax
cmp dword [ebp - 8], 0
je 0x4031cf
inc ebx
jmp 0x4031b8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4031ec
lea eax, [ebp - 8]
call fcn.004050a8
ret

Function at 0x4031f4
Capabilities:
Accept command line arguments

Disassembly:
push ebx
push esi
add esp, 0xfffffef4
mov ebx, edx
mov esi, eax
mov eax, ebx
call fcn.004050a8
test esi, esi
jne 0x40322b
push 0x105
lea eax, [esp + 8]
push eax
push 0
call sub.kernel32.dll_GetModuleFileNameA
mov ecx, eax
lea edx, [esp + 4]
mov eax, ebx
call fcn.00405198
jmp 0x40324c
call sub.kernel32.dll_GetCommandLineA
mov dword [esp], eax
mov edx, ebx
mov eax, dword [esp]
call fcn.00403028
mov dword [esp], eax
test esi, esi
je 0x40324c
cmp dword [ebx], 0
je 0x40324c
dec esi
jmp 0x403233
add esp, 0x10c
pop esi
pop ebx
ret

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

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

Function at 0x404014
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
movzx eax, word [0x5a8024]
mov dword [ebp - 8], eax
lea eax, [ebp - 4]
push eax
push 1
push 0
push 0x4040ac
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
jne 0x40408c
xor eax, eax
push ebp
push 0x404085
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 0x4040c8
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 0x40408c
mov eax, dword [ebp - 4]
push eax
call sub.advapi32.dll_RegCloseKey
ret
mov ax, word [0x5a8024]
and ax, 0xffc0
mov dx, word [ebp - 8]
and dx, 0x3f
or ax, dx
mov word [0x5a8024], ax
mov esp, ebp
pop ebp
ret

Function at 0x404ea0
Capabilities:
Write file on windows

Disassembly:
push ecx
cmp byte [0x5ad04c], 0
je 0x404f01
cmp word [0x5ad220], 0xd7b2
jne 0x404ec9
cmp dword [0x5ad228], 0
jbe 0x404ec9
mov eax, 0x5ad21c
call dword [0x5ad238]
push 0
lea eax, [esp + 4]
push eax
push 0x1e
push 0x5a8074
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 0x404f28
push 0xfffffffffffffff5
call sub.kernel32.dll_GetStdHandle
push eax
call sub.kernel32.dll_WriteFile
pop edx
ret
cmp byte [0x5a8034], 0
jne 0x404f1d
push 0
push 0x5a806c
push 0x5a8074
push 0
call sub.user32.dll_MessageBoxA
pop edx
ret
Function at 0x40505c
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.00402dc8
mov dword [eax], edi
mov edx, dword [ebp + 0x10]
mov dword [eax + 4], edx
mov byte [0x5ad04d], 1
mov edx, dword [ebp + 8]
push edx
mov edx, dword [ebp + 0xc]
push edx
push eax
mov eax, 0x405024
push eax
push esi
push ebx
call sub.kernel32.dll_CreateThread
pop edi
pop esi
pop ebx
pop ebp
ret 0xc