joyce8/EMBER2024-capa huggingface dataset:
Function at 0x442afe
Capabilities:
Create http request

Disassembly:
mov ecx, dword [esp + 8]
sub esp, 8
push esi
mov esi, dword [esp + 0x10]
cmp ecx, 1
jne 0x442b18
movzx eax, word [esi + 0x8c]
jmp 0x442b1c
movzx eax, word [esi + 0x58]
cmp ecx, 1
movsx edx, ax
lea ecx, [esi + 0xb0]
je 0x442b2d
lea ecx, [esi + 0x7c]
mov eax, dword [esi + 0xc0]
push 0
cmp edx, 1
jne 0x442b41
push 0
push 0
push edx
jmp 0x442b8b
cmp edx, 2
jne 0x442b85
mov ecx, dword [ecx]
push 0x48a2c8
push ecx
push 3
jmp 0x442b8b
cmp byte [esi + 0xdc], 0
je 0x442b7c
push 8
lea eax, [esp + 8]
push eax
push 0x32
push 0
mov dword [esp + 0x14], 1
mov dword [esp + 0x18], 0
call dword [sym.imp.WININET.dll_InternetSetOptionW]
mov al, 1
pop esi
add esp, 8
ret 8
push 0
push 0
push 0
push eax
call dword [sym.imp.WININET.dll_InternetOpenW]
mov dword [esi + 4], eax
test eax, eax
jne 0x442b52
xor al, al
pop esi
add esp, 8
ret 8

Function at 0x442e1f
Capabilities:
Enumerate files on windows
Enumerate files recursively
Set current directory

Disassembly:
sub esp, 0x254
push ebx
push ebp
push esi
push edi
mov edi, dword [sym.imp.KERNEL32.dll_FindFirstFileW]
lea eax, [esp + 0x10]
mov ebp, ecx
mov ecx, dword [esp + 0x268]
push eax
push ecx
xor bl, bl
call edi
mov esi, eax
cmp esi, 0xffffffff
je 0x442eae
lea ebx, [ebx]
lea edx, [esp + 0x3c]
push 0x48724c
push edx
call fcn.004133e4
add esp, 8
test eax, eax
je 0x442e9e
lea eax, [esp + 0x3c]
push 0x48a090
push eax
call fcn.004133e4
add esp, 8
test eax, eax
je 0x442e9e
mov ecx, dword [esp + 0x270]
mov edx, dword [esp + 0x26c]
push ecx
push edx
lea eax, [esp + 0x44]
push eax
call fcn.00436d2d
add esp, 0xc
test al, al
je 0x442ed0
mov bl, 1
lea ecx, [esp + 0x10]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x442e4f
push esi
mov esi, dword [sym.imp.KERNEL32.dll_FindClose]
call esi
cmp byte [esp + 0x274], 0
jne 0x442ee6
mov al, bl
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x254
ret 0x10
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
xor al, al
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x254
ret 0x10
lea edx, [esp + 0x10]
push edx
push str.._b
call edi
mov edi, eax
cmp edi, 0xffffffff
je 0x442f7f
mov ebx, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
test byte [esp + 0x10], 0x10
je 0x442f6f
lea eax, [esp + 0x3c]
push 0x48724c
push eax
call fcn.004133e4
add esp, 8
test eax, eax
je 0x442f6f
lea ecx, [esp + 0x3c]
push 0x48a090
push ecx
call fcn.004133e4
add esp, 8
test eax, eax
je 0x442f6f
lea edx, [esp + 0x3c]
push edx
call ebx
mov eax, dword [esp + 0x274]
mov ecx, dword [esp + 0x270]
mov edx, dword [esp + 0x26c]
push eax
mov eax, dword [esp + 0x26c]
push ecx
push edx
push eax
mov ecx, ebp
call fcn.00442e1f
test al, al
je 0x442f91
push 0x48a090
call ebx
lea ecx, [esp + 0x10]
push ecx
push edi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x442f03
push edi
call esi
mov al, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x254
ret 0x10
push edi
call esi
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x254
ret 0x10
Function at 0x443aa6
Capabilities:
Write file on windows

Disassembly:
mov ecx, dword [esp + 4]
push ebx
mov ebx, dword [esp + 0xc]
push edi
mov edi, dword [esp + 0x14]
xor edx, edx
push ecx
mov dword [esp + 0x18], edx
call fcn.004356e7
test al, al
je 0x443af8
test ebx, ebx
je 0x443af8
test edi, edi
je 0x443af8
push esi
push edx
lea eax, [esp + 0x1c]
push eax
lea esi, [ecx + 0x18]
mov ecx, dword [esi]
push edi
push ebx
push ecx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x443aee
push esi
call fcn.004356cd
add esp, 4
mov eax, dword [esp + 0x18]
pop esi
pop edi
pop ebx
ret 0xc
pop edi
mov eax, edx
pop ebx
ret 0xc

Function at 0x443eef
Capabilities:
Log keystrokes

Disassembly:
cmp byte [esp + 8], 1
push esi
mov esi, dword [esp + 8]
jne 0x443f0c
push esi
call fcn.00436486
add esp, 4
test al, al
jne 0x443f25
push 1
jmp 0x443f0e
push 0
push 0
push esi
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
call dword [sym.imp.USER32.dll_AttachThreadInput]
pop esi
ret

Function at 0x444343
Capabilities:
Write file on windows

Disassembly:
push esi
mov esi, dword [esp + 8]
push esi
call fcn.00444326
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
push 0
lea eax, [esp + 0xc]
push eax
mov eax, dword [esi]
push ecx
push edx
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov eax, dword [esp + 8]
add dword [esi + 0x10], eax
adc dword [esi + 0x14], 0
pop esi
ret 0xc
Function at 0x445719
Capabilities:
Get graphical window text

Disassembly:
push ebx
mov ebx, dword [esp + 0xc]
push esi
push edi
push ebx
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
jne 0x445735
mov eax, dword [esp + 0x10]
cmp byte [eax + 5], 1
jne 0x44578d
push 0
push 0
push 0xe
push ebx
call dword [sym.imp.USER32.dll_SendMessageW]
mov edi, eax
test edi, edi
jne 0x44574d
mov edi, 0x7fff
push ebp
xor ecx, ecx
lea ebp, [edi + 1]
mov eax, ebp
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0041171a
add esp, 4
mov esi, eax
push esi
push ebp
push 0xd
push ebx
call dword [sym.imp.USER32.dll_SendMessageW]
xor ecx, ecx
mov word [esi + edi*2], cx
pop ebp
test eax, eax
jg 0x445798
push esi
call fcn.004112ef
add esp, 4
pop edi
pop esi
mov eax, 1
pop ebx
ret 8
mov edi, dword [esp + 0x10]
cmp byte [edi + 0xc], 0
jne 0x4457b3
push esi
call fcn.004112d5
add esp, 4
push eax
push esi
call dword [sym.imp.USER32.dll_CharUpperBuffW]
mov eax, dword [edi + 0x24]
push eax
push esi
call fcn.00413772
add esp, 8
push esi
test eax, eax
je 0x445785
mov byte [edi + 0xe8], 1
call fcn.004112ef
add esp, 4
pop edi
pop esi
xor eax, eax
pop ebx
ret 8

Function at 0x449063
Capabilities:
Encode data using xor
Log keystrokes

Disassembly:
push ecx
mov edx, dword [esp + 8]
push ebx
push ebp
push esi
push edi
lea eax, [esp + 0x10]
push eax
cdq
inc esp
and al, 0x1c
push ecx
push edx
insd dword es:[edi], dx
fadd dword [ebx - 0x4517ffb6]
nop
mov edi, 0xfc084ff
test bh, bh
add byte [eax], al
add byte [ebx - 0x74c7dbfc], cl
or eax, 0x4a8438
mov edx, dword [ecx + eax*4]
stosd dword es:[edi], eax
inc esp
xor al, 0x10
mov ecx, dword [0x4a844c]
mov ebp, dword [edx]
mov edx, dword [ecx + eax*4]
mov esi, dword [edx]
mov edi, dword [edx]
mov bl, byte [esi + 0x1020088]
lea eax, [esp + 0x1c]
push eax
call fcn.004359c8
das
loop 0x44907f
add esp, 4
cmp eax, 0x1b
ja 0x449187
movzx ebx, byte [eax + 0x4493af]
jg 0x4490f5
lea edx, [ebx - 0x74dbbb6f]
push esp
and al, 0x14
push edx
push 0
push 0x11024
push edi
call dword [sym.imp.USER32.dll_MapVirtualKeyW]
jmp 0x449152
add byte [eax + 0x57], al
std
adc eax, sym.imp.USER32.dll_SendMessageW
jmp 0x24911c5d
sub dword [0x4976c4], 0
je 0x44917a
sar bl, 8
je 0x44916f
cmp bh, 4
je 0x44916f
cmp bl, 0x1a
je 0x44916f
cmp bl, 0x1b
jne 0x44917a
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret 8
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret 8
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
pop ecx
ret 8
Function at 0x44aa1f
Capabilities:
Connect to http server
Send data
Send http request

Disassembly:
sub esp, 0x2c
push ebx
push ebp
push esi
mov esi, dword [esp + 0x40]
cmp dword [esi + 0x74], 4
push edi
mov edi, dword [esp + 0x40]
mov ebp, dword [edi + 0x54]
jne 0x44aa3d
or ebp, 0x800000
mov ebx, dword [esi + 0x70]
mov eax, dword [esi + 0x30]
mov ecx, dword [esi + 0x20]
mov edx, dword [esi + 0x10]
push 0
push 0
push ebx
push eax
movzx eax, word [esi + 0x78]
push ecx
mov ecx, dword [edi + 4]
push eax
push edx
push ecx
call dword [sym.imp.WININET.dll_InternetConnectW]
mov dword [edi], eax
push 0
test eax, eax
jne 0x44aa7f
push 0xdeadbeef
push 0xb
push edi
call fcn.0044286a
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret 0x10
mov ecx, dword [esi + 0x60]
push ebp
push 0
push 0
push 0
push ecx
push 0
push eax
call dword [sym.imp.WININET.dll_HttpOpenRequestW]
mov edx, dword [sym.imp.WININET.dll_InternetCloseHandle]
mov ebx, eax
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], edx
test ebx, ebx
jne 0x44aacd
push eax
push 0xdeadbeef
push 0xc
push edi
call fcn.0044286a
mov bl, al
lea eax, [esp + 0x10]
push eax
call fcn.004349c7
mov al, bl
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret 0x10
cmp byte [esp + 0x48], 0
je 0x44aadc
push esi
push ebx
push edi
call fcn.00442aa9
test ebp, 0x1000
je 0x44ab17
lea ecx, [esp + 0x44]
push ecx
lea edx, [esp + 0x4c]
push edx
push 0x1f
push ebx
mov dword [esp + 0x54], 4
call dword [sym.imp.WININET.dll_InternetQueryOptionW]
or dword [esp + 0x48], 0x100
push 4
lea eax, [esp + 0x4c]
push eax
push 0x1f
push ebx
call dword [sym.imp.WININET.dll_InternetSetOptionW]
push 0
push 0
push 0
push 0
push ebx
call dword [sym.imp.WININET.dll_HttpSendRequestW]
test eax, eax
je 0x44abc4
push ebx
call fcn.00434a55
cmp eax, 0xc8
jne 0x44abc4
lea ecx, [esp + 0x48]
push ecx
lea edx, [esp + 0x48]
push edx
lea eax, [esp + 0x20]
push eax
push 5
push ebx
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0x20
call dword [sym.imp.WININET.dll_HttpQueryInfoW]
lea ecx, [esp + 0x18]
push ecx
call fcn.0041343c
add esp, 4
cmp byte [esp + 0x4c], 0
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], edx
je 0x44aba0
push ebx
push edi
call fcn.00442a81
lea edx, [esp + 0x10]
push edx
mov bl, al
call fcn.004349c7
mov al, bl
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret 0x10
push 1
push 0
push 0
push edi
call fcn.0044286a
mov bl, al
lea eax, [esp + 0x10]
push eax
call fcn.004349c7
mov al, bl
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret 0x10
push 0
push 0xdeadbeef
push 0xd
push edi
call fcn.0044286a
lea ecx, [esp + 0x10]
push ecx
mov bl, al
call fcn.004349c7
pop edi
pop esi
pop ebp
mov al, bl
pop ebx
add esp, 0x2c
ret 0x10
Function at 0x44afdc
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xdc
push ebx
mov ebx, dword [esp + 0xe4]
push esi
push edi
mov edi, dword [esp + 0xf0]
lea eax, [esp + 0x10]
push eax
call fcn.004431e0
dec dword [ebx + 0xf4248c]
add byte [eax], al
push ecx
lea edx, [esp + 0x14]
push edx
call fcn.0044313a
xor esi, esi
test edi, edi
jbe 0x44b02e
lea esp, [esp]
lea eax, [esp + 0x10]
push eax
call fcn.004431b2
xor byte [esi + ebx], al
inc esi
cmp esi, edi
jb 0x44b01c
pop edi
pop esi
pop ebx
add esp, 0xdc
ret 0xc

Function at 0x44b7a4
Capabilities:
Terminate thread

Disassembly:
push esi
mov esi, dword [esp + 8]
mov eax, dword [esi + 0x20]
test eax, eax
je 0x44b7b6
push eax
call fcn.0044b64f
mov eax, dword [esi + 0x24]
pop esi
test eax, eax
je 0x44b7c7
mov dword [esp + 4], eax
jmp fcn.0044b64f
ret 4

Function at 0x44b7ca
Capabilities:
Create thread

Disassembly:
push esi
mov esi, dword [esp + 8]
cmp dword [esi + 0x20], 0
jne 0x44b7f4
push esi
call fcn.0043572f
test al, al
je 0x44b7f4
mov eax, dword [esi + 8]
push eax
call fcn.004437fa
add esp, 4
push eax
mov dword [esi + 0x20], eax
call fcn.0044b6bc
cmp dword [esi + 0x24], 0
jne 0x44b827
push esi
call fcn.00435713
test al, al
je 0x44b827
push esi
call fcn.00435703
test al, al
jne 0x44b827
mov ecx, dword [esi + 0x10]
push ecx
call fcn.004437fa
add esp, 4
mov dword [esi + 0x24], eax
pop esi
mov dword [esp + 4], eax
jmp fcn.0044b6bc
pop esi
ret 4

Function at 0x44bb20
Capabilities:
Delete directory
Delete file

Disassembly:
mov ecx, dword [esp + 4]
sub esp, 0x22c
lea eax, [esp + 0x20]
call fcn.0040ffb0
lea eax, [esp + 0x20]
push eax
call fcn.00436ac4
add esp, 4
test al, al
jne 0x44bb4b
add esp, 0x22c
ret
push ebx
xor ebx, ebx
cmp byte [esp + 0x238], bl
jne 0x44bb6f
lea ecx, [esp + 0x24]
push ecx
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
setne al
pop ebx
add esp, 0x22c
ret
lea edx, [esp + 0x24]
push edx
call fcn.004112d5
xor ecx, ecx
mov word [esp + eax*2 + 0x2a], cx
add esp, 4
lea ecx, [esp + 4]
lea edx, [esp + 0x24]
mov eax, 0x614
push ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x1e], ebx
mov dword [esp + 0x22], ebx
mov dword [esp + 0x1a], ebx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 3
mov word [esp + 0x18], ax
call dword [sym.imp.SHELL32.dll_SHFileOperationW]
test eax, eax
sete al
pop ebx
add esp, 0x22c
ret
Function at 0x4580e1
Capabilities:
Connect network resource
Query or enumerate registry value

Disassembly:
sub esp, 0x264
push ebp
mov ebp, dword [esp + 0x278]
push esi
mov esi, dword [esp + 0x274]
push edi
lea ecx, [esp + 0x28]
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], 0
call fcn.0040c060
lea ecx, [esp + 0x18]
call fcn.0040c060
lea ecx, [esp + 0x38]
call fcn.0040c060
push 0x48a9b0
lea eax, [esp + 0x2c]
call fcn.004021e0
mov edi, dword [esp + 0x274]
lea eax, [esp + 0x28]
call fcn.0040d330
mov edi, 0x48a9d4
lea eax, [esp + 0x28]
call fcn.0040d330
push 0x4848e8
lea eax, [esp + 0x1c]
call fcn.004021e0
test esi, esi
je 0x458187
cmp word [esi], 0x5c
je 0x458187
cmp word [esi + 2], 0x5c
je 0x458187
push 0x48a9e4
lea eax, [esp + 0x1c]
call fcn.004021e0
mov edi, esi
lea eax, [esp + 0x18]
call fcn.0040d330
test ebp, ebp
je 0x4581e5
push 0x20
lea eax, [esp + 0x4c]
push 0
push eax
call fcn.004131f0
add esp, 0xc
lea ecx, [esp + 0x18]
push ecx
lea esi, [esp + 0x3c]
mov dword [esp + 0x50], 0
call fcn.0040df50
mov edi, 0x48a9ec
mov eax, esi
call fcn.0040d330
mov eax, dword [esp + 0x284]
mov edx, dword [esp + 0x38]
push 0
push ebp
push eax
lea ecx, [esp + 0x54]
push ecx
mov dword [esp + 0x6c], edx
call sub.MPR.dll_WNetAddConnection2W
mov esi, eax
test esi, esi
jne 0x458298
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x14]
push edx
push reloc.WSOCK32.dll_bind
push eax
call dword [sym.imp.ADVAPI32.dll_RegConnectRegistryW]
mov esi, eax
test esi, esi
jne 0x458298
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0xc]
push ecx
push 0x20019
push eax
mov eax, dword [esp + 0x20]
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov ebp, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, eax
test esi, esi
jne 0x458291
mov eax, dword [esp + 0xc]
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x6c]
push edx
push 0
push 0
push 0
push eax
mov dword [esp + 0x28], 0x1fe
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov esi, eax
test esi, esi
jne 0x45828a
mov eax, dword [esp + 0x10]
shr eax, 1
xor ecx, ecx
lea edi, [esp + 0x68]
mov dword [esp + 0x10], eax
mov word [esp + eax*2 + 0x68], cx
call fcn.0040fff0
mov edx, dword [esp + 0x27c]
mov edi, eax
push edx
push edi
call dword [sym.imp.ole32.dll_CLSIDFromString]
push edi
mov esi, eax
call fcn.004137d3
add esp, 4
mov eax, dword [esp + 0xc]
push eax
call ebp
mov ecx, dword [esp + 0x14]
push ecx
call ebp
lea ecx, [esp + 0x38]
call fcn.00402620
lea ecx, [esp + 0x18]
call fcn.00402620
lea ecx, [esp + 0x28]
call fcn.00402620
pop edi
mov eax, esi
pop esi
pop ebp
add esp, 0x264
ret

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

Disassembly:
and al, 0x40
push ebx
push ebp
mov ebp, dword [esp + 0x2c]
or eax, dword [ebp]
push esi
mov esi, dword [ebp + 4]
push 0
push 0
dec edx
add dword [esi], ebp
inc esi
push esi
push eax
push 0
push 0
call dword [0x48617d]
mov eax, ebx
test al, bl
jne 0x45f01f
mov eax, dword [esp + 0x14]
push eax
call 0xbf4452d8
pop esi
sbb eax, 0x8c25b
push edi
push ebx
jmp 0x40171a
Function at 0x461604
Capabilities:
Encode data using xor
Get graphical window text

Disassembly:
push ecx
push ebx
mov ebx, dword [esp + 0xc]
mov edx, dword [ebx]
push esi
cdq
xor eax, edx
dec eax
add byte [ebp + 0x50102444], cl
lea ecx, [esp + 0x1c]
push ecx
push 0xb0
push edx
call esi
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x10]
jb 0x461647
pop esi
xor al, al
pop ebx
pop ecx
ror byte [eax], 0
mov bl, byte [ebx]
push edi
dec edx
add byte [esi], ch
push 0xe
push ecx
std
salc
mov edi, eax
test edi, edi
je 0x4616c2
cmp esi, dword [esp + 0xc]
jb 0x4616c2
cmp edi, dword [esp + 0x14]
jb 0x4616c2
push ebp
xor ecx, dword [ecx - 0x73]
outsd dx, dword [esi]
add dword [ebx], ecx
lds edi, [edx + 0x13]
mul edx
seto cl
neg ecx
or eax, ecx
push ecx
call 0x1171a
add esp, 4
mov esi, eax
mov eax, dword [ebx]
push esi
push ebp
push 0xd
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
pop ebp
test eax, edx
push esp
xor dword [ebx + 0x3b040054], ecx
invalid
pop edi
pop esi
mov dl, 0xc0
pop ebx
pop ecx
ret 8
Function at 0x479c97
Capabilities:
Access peb ldr_data

Disassembly:
sub esp, 0x200094
push ebx
push ebp
mov ecx, dword [esp + 0xb0]
xor ebx, ebx
pop esi
mov esi, dword [esi + 0xac20]
add byte [ebx - 0x75], dl
mov esp, 0x400ac24
add ch, byte [edx + 0x20]
lea edx, [esp + 0x94]
xor eax, eax
xor ecx, ecx
push ebx
push edx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x40], 0x1048adf0
mov dword [esp + 0x3c], 0x248a504
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebx
mov dword [eax + 0x34], ebx
mov dword fs:[esp + 0xc], 0x60404
mov word [esp + 0x30], ax
or word [esp + 0x32], 0x44c6
and al, 0x34
ror byte [eax - 0x77cadba4], 0x5c
and al, 0x36
test al, 0x5c
and al, 0x37
mov byte [esp + 0x38], bl
mov byte [esp + 0x19], bl
mov byte [esp + 0x38], bl
mov byte [esp + 0x39], 0x46
call fcn.004121f0
add esp, 0xc
cmp edi, ebx
invalid

Function at 0x47b9b8
Capabilities:
Access peb ldr_data
Authenticate hmac
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x54
mov eax, dword [esp + 0x6c]
push ebx
push ebx
mov ebx, dword [esp + 0x19]
push edi
test ebx, ebx
je 0x47b9ed
mov edi, 0x848e8
enter 0x2d14, 0xffffffffffffffd9
out dx, eax
mov eax, dword [eax + 0x1c]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
push edx
mov edx, dword [eax + 0x24]
adc byte [ecx + 0x52], dl
push ebx
push 3
push esp
jmp 0x479921
pop edi
mov eax, 0xc5
pop ebx
retf 0x14
Function at 0x4035ac
Capabilities:
Generate random numbers using the delphi lcg

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

Function at 0x41d2ec
Capabilities:
Decompress data using aplib

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push ebp
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
cld
mov dl, 0x80
mov al, byte [esi]
add esi, 1
mov byte [edi], al
add edi, 1
mov ebx, 2
add dl, dl
jne 0x41d31d
mov dl, byte [esi]
inc esi
adc dl, dl
jae 0x41d305
add dl, dl
jne 0x41d328
mov dl, byte [esi]
inc esi
adc dl, dl
jae 0x41d379
xor eax, eax
add dl, dl
jne 0x41d335
mov dl, byte [esi]
inc esi
adc dl, dl
jae 0x41d416
add dl, dl
jne 0x41d344
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x41d34f
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x41d35a
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x41d365
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
je 0x41d36f
mov ebx, edi
sub ebx, eax
mov al, byte [ebx]
mov byte [edi], al
inc edi
mov ebx, 2
jmp 0x41d314
mov eax, 1
add dl, dl
jne 0x41d387
mov dl, byte [esi]
inc esi
adc dl, dl
adc eax, eax
add dl, dl
jne 0x41d392
mov dl, byte [esi]
inc esi
adc dl, dl
jb 0x41d37e
sub eax, ebx
mov ebx, 1
jne 0x41d3c5
mov ecx, 1
add dl, dl
jne 0x41d3ab
mov dl, byte [esi]
inc esi
adc dl, dl
adc ecx, ecx
add dl, dl
jne 0x41d3b6
mov dl, byte [esi]
inc esi
adc dl, dl
jb 0x41d3a2
push esi
mov esi, edi
sub esi, ebp
rep movsb byte es:[edi], byte [esi]
pop esi
jmp 0x41d314
dec eax
shl eax, 8
mov al, byte [esi]
inc esi
mov ebp, eax
mov ecx, 1
add dl, dl
jne 0x41d3dc
mov dl, byte [esi]
inc esi
adc dl, dl
adc ecx, ecx
add dl, dl
jne 0x41d3e7
mov dl, byte [esi]
inc esi
adc dl, dl
jb 0x41d3d3
cmp eax, 0x7d00
sbb ecx, 0xffffffff
cmp eax, 0x500
sbb ecx, 0xffffffff
cmp eax, 0x80
adc ecx, 0
cmp eax, 0x80
adc ecx, 0
push esi
mov esi, edi
sub esi, eax
rep movsb byte es:[edi], byte [esi]
pop esi
jmp 0x41d314
mov al, byte [esi]
inc esi
xor ecx, ecx
shr al, 1
je 0x41d437
adc ecx, 2
mov ebp, eax
push esi
mov esi, edi
sub esi, eax
rep movsb byte es:[edi], byte [esi]
pop esi
mov ebx, 1
jmp 0x41d314
pop ebp
sub edi, dword [ebp - 8]
mov dword [ebp - 0xc], edi
pop edi
pop esi
pop ebx
mov eax, dword [ebp - 0xc]
mov esp, ebp
pop ebp
ret
Function at 0x41f504
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
push esi
push edi
mov dword [ebp - 4], ecx
mov ebx, edx
xor edx, edx
push ebp
push 0x6da9f2
push dword fs:[edx]
mov dword fs:[edx], esp
xor edx, edx
mov dword [ebp - 8], edx
mov esi, ebx
xor ecx, ecx
cmp byte [eax + 0x6a], 0
je 0x41f553
mov eax, ebx
xor edx, edx
push edx
push eax
mov eax, dword [esi + 0x3c]
cdq
add eax, dword [esp]
adc edx, dword [esp + 4]
add esp, 8
mov edx, dword [eax + 0x88]
test edx, edx
je 0x41f572
mov ecx, edx
add ecx, ebx
jmp 0x41f572
mov eax, ebx
xor edx, edx
push edx
push eax
mov eax, dword [esi + 0x3c]
cdq
add eax, dword [esp]
adc edx, dword [esp + 4]
add esp, 8
mov edx, dword [eax + 0x78]
test edx, edx
je 0x41f572
mov ecx, edx
add ecx, ebx
test ecx, ecx
je 0x41f5e4
mov esi, dword [ecx + 0x18]
mov eax, dword [ecx + 0x1c]
add eax, ebx
mov dword [ebp - 0x10], eax
mov edi, dword [ecx + 0x20]
add edi, ebx
mov eax, dword [ecx + 0x24]
add eax, ebx
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
cmp eax, 0xffff
jbe 0x41f5cd
test esi, esi
jbe 0x41f5e4
mov eax, dword [edi]
add eax, ebx
mov edx, dword [ebp - 4]
call fcn.004088f4
test eax, eax
jne 0x41f5bf
mov eax, dword [ebp - 0xc]
movzx eax, word [eax]
shl eax, 2
add eax, dword [ebp - 0x10]
mov eax, dword [eax]
mov dword [ebp - 8], eax
jmp 0x41f5e4
add dword [ebp - 0xc], 2
add edi, 4
dec esi
test esi, esi
ja 0x41f59c
jmp 0x41f5e4
mov edx, eax
sub edx, dword [ecx + 0x10]
cmp edx, dword [ecx + 0x14]
jae 0x41f5e4
mov eax, edx
shl eax, 2
add eax, dword [ebp - 0x10]
mov eax, dword [eax]
mov dword [ebp - 8], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x6da9f9
ret