joyce8/EMBER2024-capa huggingface dataset:
Function at 0x10037c30
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
push eax
mov esi, ecx
mov eax, dword [ebp + 8]
mov ebx, dword [eax]
mov dword [eax], 0
lea edi, [ebx + 1]
cmp edi, 2
jae 0x10037c52
cmp dword [esi], ebx
jne 0x10037c5b
jmp 0x10037c75
call fcn.10060950
cmp dword [esi], ebx
je 0x10037c75
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esi]
inc ecx
cmp ecx, 2
jae 0x10037c81
cmp edi, 2
jae 0x10037ca1
push eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, esi
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret 4
mov dword [ebp - 0x10], eax
call fcn.10060950
push dword [esi]
call fcn.1006d7a0
mov eax, dword [ebp - 0x10]
add esp, 4
mov dword [esi], 0
cmp edi, 2
jb 0x10037c6e
mov dword [esi], ebx
mov edi, eax
call fcn.10060950
mov eax, edi
jmp 0x10037c6e

Function at 0x10038a60
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x20
mov esi, edx
mov dword [ebp - 0x2c], ecx
mov eax, dword [0x10123014]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x1c], 0xffffffff
mov dword [ebp - 0x18], 0xffffffff
mov dword [ebp - 0x14], 0xffffffff
mov eax, dword [edx]
mov ebx, dword [eax + 0x1c]
mov ecx, ebx
call dword [section..00cfg]
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x28], esi
mov ecx, esi
push eax
call ebx
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x18]
cmp ebx, esi
je 0x10038abe
nop
mov ecx, ebx
call fcn.10030180
add ebx, 0x14
cmp ebx, esi
jne 0x10038ab0
mov edi, dword [ebp - 0x2c]
lea eax, [edi + 0x7c]
mov dword [ebp - 0x24], eax
mov esi, dword [ebp - 0x28]
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov dword [ebp - 0x20], ecx
mov ebx, dword [eax + 8]
mov ecx, ebx
call dword [section..00cfg]
mov ecx, esi
call ebx
push dword [ebp - 0x24]
push 0
push dword [ebp - 0x20]
push eax
push dword [edi + 0x40]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x10038b04
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x3e5
jne 0x10038b13
mov byte [edi + 0xa6], 1
lock inc dword [edi + 4]
mov bl, 1
jmp 0x10038b15
xor ebx, ebx
mov edi, dword [ebp - 0x1c]
test edi, edi
je 0x10038b4d
mov esi, dword [ebp - 0x18]
mov eax, edi
cmp esi, edi
je 0x10038b41
nop word cs:[eax + eax]
add esi, 0xffffffec
mov ecx, esi
call fcn.100300f0
cmp esi, edi
jne 0x10038b30
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x18], edi
push eax
call fcn.100de098
add esp, 4
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.100dea63
mov eax, ebx
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret
Function at 0x100393e8
Capabilities:
Encode data using xor
Hash data using murmur2

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
mov eax, dword [ebp + 8]
movzx ecx, byte [eax + 0xb]
mov esi, dword [eax]
mov edi, dword [eax + 4]
add edi, esi
mov edx, ecx
add edx, eax
test cl, cl
cmovs edx, edi
cmovs eax, esi
sub edx, eax
mov ecx, edx
cmp edx, 4
jb 0x10039436
imul esi, dword [eax], 0x5bd1e995
mov edi, esi
shr edi, 0x18
xor edi, esi
imul esi, edi, 0x5bd1e995
imul ecx, ecx, 0x5bd1e995
xor ecx, esi
add eax, 4
add edx, 0xfffffffc
cmp edx, 3
ja 0x10039410
cmp edx, 1
je 0x10039457
cmp edx, 2
je 0x1003944e
cmp edx, 3
jne 0x10039462
movzx edx, byte [eax + 2]
shl edx, 0x10
xor ecx, edx
movzx edx, byte [eax + 1]
shl edx, 8
xor ecx, edx
movzx eax, byte [eax]
xor eax, ecx
imul ecx, eax, 0x5bd1e995
mov eax, ecx
shr eax, 0xd
xor eax, ecx
imul ecx, eax, 0x5bd1e995
mov eax, ecx
shr eax, 0xf
xor eax, ecx
pop esi
pop edi
pop ebp
ret 4
Function at 0x100458d0
Capabilities:
Access peb ldr_data
Get process heap flags
Get process heap force flags

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x60
mov esi, esp
mov dword [esi + 0x48], ebp
lea ecx, [esi + 0x50]
mov dword [ecx - 4], esp
xor ebx, ebx
dec ebx
mov dword [ecx + 8], ebx
mov dword [ecx + 4], 0x10056300
mov eax, dword fs:[0]
mov dword [ecx], eax
mov dword fs:[0], ecx
xor ecx, ecx
lea eax, [esi + 0x29]
mov dword [eax + 3], ecx
mov dword [eax - 1], 0x25
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x1c]
push dword [edx + 4]
push 1
push ecx
push eax
call fcn.1005327a
add esp, 0x10
mov dword [esi + 4], esp
lea eax, [esi + 0x18]
mov dword [eax + 8], ebx
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov byte [eax + 0xc], 0xff
sub esp, 0x1c
mov edi, esp
lea eax, [edi + 8]
push eax
call fcn.10041c00
add esp, 4
lea eax, [esi + 0x18]
mov dword [edi], eax
mov dword [edi + 4], 0xd
lea eax, [esi + 0x28]
mov dword [edi + 0x14], eax
mov eax, dword [ebp + 0x18]
mov dword [edi + 0x18], eax
call fcn.1005915e
add esp, 0x1c
mov esp, dword [esi + 4]
add eax, esi
add eax, 0x18
mov dword [esi + 4], eax
push dword [ebp + 0x10]
push eax
lea eax, [esi + 0x18]
push eax
call fcn.1004664a
add esp, 0xc
mov dword [esi + 0x14], eax
lea edi, [esi + 0x30]
mov dword [edi + 0x13], ebx
mov dword [edi + 0xf], ebx
pcmpeqd xmm0, xmm0
movdqa xmmword [edi], xmm0
lea eax, [esi + 0x10]
mov dword [eax], ebx
lea eax, [esi + 0xc]
mov dword [eax], ebx
lea ebx, [esi + 8]
mov ecx, dword [ebp + 0x10]
push ebx
call fcn.1003dc2a
lea eax, [esi + 0x50]
xor ecx, ecx
mov dword [eax + 8], ecx
push ebx
lea eax, [esi + 0xc]
push eax
lea eax, [esi + 0x10]
push eax
push edi
push dword [esi + 4]
push dword [esi + 0x14]
lea eax, [esi + 0x18]
push eax
call fcn.10047840
add esp, 0x1c
mov ebx, dword [esi + 8]
xor eax, eax
dec eax
lock xadd dword [ebx + 4], eax
mov edi, dword [ebp + 8]
mov dl, byte [ebp + 0x14]
test eax, eax
jne 0x10045a06
mov eax, dword [ebx]
mov edi, dword [eax + 4]
mov dword [esi + 0x58], 0xffffffff
mov ecx, edi
call dword [section..00cfg]
mov ecx, ebx
call edi
mov dl, byte [ebp + 0x14]
mov edi, dword [ebp + 8]
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x10]
mov dword [esi + 0x58], 0xffffffff
movsx edx, dl
push edx
push dword [ebp + 0x10]
push eax
push ecx
lea eax, [esi + 0x30]
push eax
push dword [ebp + 0xc]
push edi
call fcn.100154a0
add esp, 0x1c
mov eax, dword [esi + 0x50]
mov dword fs:[0], eax
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x18
Function at 0x10045ca0
Capabilities:
Access peb ldr_data
Get process heap flags
Get process heap force flags

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x60
mov esi, esp
mov dword [esi + 0x48], ebp
lea ecx, [esi + 0x50]
mov dword [ecx - 4], esp
xor ebx, ebx
dec ebx
mov dword [ecx + 8], ebx
mov dword [ecx + 4], 0x10056320
mov eax, dword fs:[0]
mov dword [ecx], eax
mov dword fs:[0], ecx
xor edx, edx
lea eax, [esi + 0x29]
mov dword [eax + 3], edx
mov dword [eax - 1], 0x25
mov edi, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x1c]
push dword [edi + 4]
push edx
push ecx
push eax
call fcn.1005327a
add esp, 0x10
mov dword [esi + 4], esp
lea eax, [esi + 0x18]
mov dword [eax + 8], ebx
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov byte [eax + 0xc], 0xff
sub esp, 0x1c
mov edi, esp
lea eax, [edi + 8]
push eax
call fcn.10041c00
add esp, 4
lea eax, [esi + 0x18]
mov dword [edi], eax
mov dword [edi + 4], 0xd
lea eax, [esi + 0x28]
mov dword [edi + 0x14], eax
mov eax, dword [ebp + 0x18]
mov dword [edi + 0x18], eax
call fcn.1005915e
add esp, 0x1c
mov esp, dword [esi + 4]
add eax, esi
add eax, 0x18
mov dword [esi + 4], eax
push dword [ebp + 0x10]
push eax
lea eax, [esi + 0x18]
push eax
call fcn.1004664a
add esp, 0xc
mov dword [esi + 0x14], eax
lea edi, [esi + 0x30]
mov dword [edi + 0x13], ebx
mov dword [edi + 0xf], ebx
pcmpeqd xmm0, xmm0
movdqa xmmword [edi], xmm0
lea eax, [esi + 0x10]
mov dword [eax], ebx
lea eax, [esi + 0xc]
mov dword [eax], ebx
lea ebx, [esi + 8]
mov ecx, dword [ebp + 0x10]
push ebx
call fcn.1003dc2a
lea eax, [esi + 0x50]
xor ecx, ecx
mov dword [eax + 8], ecx
push ebx
lea eax, [esi + 0xc]
push eax
lea eax, [esi + 0x10]
push eax
push edi
push dword [esi + 4]
push dword [esi + 0x14]
lea eax, [esi + 0x18]
push eax
call fcn.10047840
add esp, 0x1c
mov ebx, dword [esi + 8]
xor eax, eax
dec eax
lock xadd dword [ebx + 4], eax
mov edi, dword [ebp + 8]
mov dl, byte [ebp + 0x14]
test eax, eax
jne 0x10045dd5
mov eax, dword [ebx]
mov edi, dword [eax + 4]
mov dword [esi + 0x58], 0xffffffff
mov ecx, edi
call dword [section..00cfg]
mov ecx, ebx
call edi
mov dl, byte [ebp + 0x14]
mov edi, dword [ebp + 8]
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x10]
mov dword [esi + 0x58], 0xffffffff
movsx edx, dl
push edx
push dword [ebp + 0x10]
push eax
push ecx
lea eax, [esi + 0x30]
push eax
push dword [ebp + 0xc]
push edi
call fcn.100154a0
add esp, 0x1c
mov eax, dword [esi + 0x50]
mov dword fs:[0], eax
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x18
Function at 0x100464b0
Capabilities:
Access peb ldr_data
Check for peb ntglobalflag flag
Get process heap force flags

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x80
mov esi, esp
mov dword [esi + 0x68], ebp
mov dword [esi + 0xc], esp
lea ecx, [esi + 0x70]
mov dword [ecx - 4], esp
xor edx, edx
dec edx
mov dword [ecx + 8], edx
mov dword [ecx + 4], 0x10056670
mov eax, dword fs:[0]
mov dword [ecx], eax
mov dword fs:[0], ecx
lea ebx, [esi + 0x50]
mov dword [ebx + 0x10], edx
pcmpeqd xmm0, xmm0
movdqa xmmword [ebx], xmm0
push eax
sub esp, 0x18
mov edi, esp
lea eax, [edi + 8]
push eax
call fcn.10041c00
add esp, 4
mov dword [edi], ebx
mov dword [edi + 4], 0x14
mov dword [edi + 0x14], 0x10113135
mov eax, dword [ebp + 0x18]
mov dword [edi + 0x18], eax
call fcn.1005915e
add esp, 0x1c
mov esp, dword [esi + 0xc]
mov dword [esi + 0xc], eax
add eax, esi
add eax, 0x50
push dword [ebp + 0x10]
mov dword [esi + 0x1c], eax
push eax
push ebx
call fcn.1004664a
add esp, 0xc
mov dword [esi + 0x18], eax
xor eax, eax
dec eax
mov dword [esi + 0x41], eax
mov dword [esi + 0x3d], eax
pcmpeqd xmm0, xmm0
movdqa xmmword [esi + 0x30], xmm0
movdqa xmmword [esi + 0x20], xmm0
lea edi, [esi + 0x10]
mov ecx, dword [ebp + 0x10]
push edi
call fcn.1003dc2a
lea eax, [esi + 0x70]
mov dword [eax + 8], 0
mov ecx, edi
push 0x10128108
call fcn.100512d8
mov ebx, eax
mov edi, dword [esi + 0x10]
xor eax, eax
dec eax
lock xadd dword [edi + 4], eax
test eax, eax
jne 0x100465a9
mov eax, dword [edi]
mov ecx, dword [eax + 4]
mov dword [esi + 0x14], ecx
mov dword [esi + 0x78], 0xffffffff
call dword [section..00cfg]
mov ecx, edi
call dword [esi + 0x14]
mov eax, dword [ebx]
mov edi, dword [eax + 0x18]
mov dword [esi + 0x78], 0xffffffff
mov ecx, edi
call dword [section..00cfg]
lea eax, [esi + 0x20]
mov ecx, ebx
push eax
mov ebx, dword [esi + 0x1c]
push ebx
lea eax, [esi + 0x50]
push eax
call edi
mov ecx, dword [esi + 0x18]
mov eax, ecx
lea edx, [esi + 0x50]
sub eax, edx
cmp ecx, ebx
mov ecx, dword [esi + 0xc]
lea ecx, [esi + ecx + 0x20]
lea eax, [esi + eax + 0x20]
cmove eax, ecx
movsx edx, byte [ebp + 0x14]
push edx
push dword [ebp + 0x10]
push ecx
push eax
lea eax, [esi + 0x20]
push eax
push dword [ebp + 0xc]
mov edi, dword [ebp + 8]
push edi
call fcn.100154a0
add esp, 0x1c
mov eax, dword [esi + 0x70]
mov dword fs:[0], eax
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x14
Function at 0x100468c0
Capabilities:
Access peb ldr_data
Check for peb ntglobalflag flag
Get process heap flags
Get process heap force flags

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x80
mov esi, esp
mov dword [esi + 0x68], ebp
lea ecx, [esi + 0x70]
mov dword [ecx - 4], esp
xor edi, edi
dec edi
mov dword [ecx + 8], edi
mov dword [ecx + 4], 0x10056350
mov eax, dword fs:[0]
mov dword [ecx], eax
mov dword fs:[0], ecx
xor ecx, ecx
lea eax, [esi + 0x19]
mov dword [eax + 3], ecx
mov dword [eax - 1], 0x25
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x1c]
push dword [edx + 4]
push 1
push ecx
push eax
call fcn.1005327a
add esp, 0x10
mov dword [esi + 8], esp
lea ebx, [esi + 0x20]
mov dword [ebx + 8], edi
mov dword [ebx + 4], edi
mov dword [ebx], edi
mov byte [ebx + 0xc], 0xff
sub esp, 0x1c
mov edi, esp
lea eax, [edi + 8]
push eax
call fcn.10041c00
add esp, 4
mov dword [edi], ebx
mov dword [edi + 4], 0xd
lea eax, [esi + 0x18]
mov dword [edi + 0x14], eax
mov eax, dword [ebp + 0x18]
mov dword [edi + 0x18], eax
call fcn.1005915e
add esp, 0x1c
mov esp, dword [esi + 8]
lea edi, [esi + eax]
add edi, 0x20
push dword [ebp + 0x10]
push edi
push ebx
call fcn.1004664a
add esp, 0xc
mov dword [esi + 8], eax
pcmpeqd xmm0, xmm0
lea ebx, [esi + 0x30]
movdqu xmmword [ebx + 0x1e], xmm0
movdqa xmmword [ebx + 0x10], xmm0
movdqa xmmword [ebx], xmm0
lea ecx, [esi + 0x14]
xor eax, eax
dec eax
mov dword [ecx], eax
lea ecx, [esi + 0x10]
mov dword [ecx], eax
lea eax, [esi + 0xc]
mov ecx, dword [ebp + 0x10]
push eax
call fcn.1003dc2a
lea eax, [esi + 0x70]
xor ecx, ecx
mov dword [eax + 8], ecx
lea eax, [esi + 0xc]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [esi + 0x14]
push eax
push ebx
push edi
push dword [esi + 8]
lea eax, [esi + 0x20]
push eax
call fcn.100480b0
add esp, 0x1c
mov ebx, dword [esi + 0xc]
xor eax, eax
dec eax
lock xadd dword [ebx + 4], eax
mov edi, dword [ebp + 8]
movzx edx, word [ebp + 0x14]
test eax, eax
jne 0x100469fb
mov eax, dword [ebx]
mov edi, dword [eax + 4]
mov dword [esi + 0x78], 0xffffffff
mov ecx, edi
call dword [section..00cfg]
mov ecx, ebx
call edi
movzx edx, word [ebp + 0x14]
mov edi, dword [ebp + 8]
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
mov dword [esi + 0x78], 0xffffffff
movzx edx, dx
push edx
push dword [ebp + 0x10]
push eax
push ecx
lea eax, [esi + 0x30]
push eax
push dword [ebp + 0xc]
push edi
call fcn.100476c0
add esp, 0x1c
mov eax, dword [esi + 0x70]
mov dword fs:[0], eax
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x18
Function at 0x10046aa0
Capabilities:
Access peb ldr_data
Get process heap flags
Get process heap force flags

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xc0
mov esi, esp
mov dword [esi + 0xa8], ebp
lea ecx, [esi + 0xb0]
mov dword [ecx - 4], esp
xor edi, edi
dec edi
mov dword [ecx + 8], edi
mov dword [ecx + 4], 0x10056360
mov eax, dword fs:[0]
mov dword [ecx], eax
mov dword fs:[0], ecx
xor ecx, ecx
lea eax, [esi + 0x19]
mov dword [eax + 3], ecx
mov dword [eax - 1], 0x25
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x20]
push dword [edx + 4]
push 1
push ecx
push eax
call fcn.1005327a
add esp, 0x10
mov dword [esi + 8], esp
lea ebx, [esi + 0x20]
mov dword [ebx + 0x14], edi
mov dword [ebx + 0x10], edi
pcmpeqd xmm0, xmm0
movdqa xmmword [ebx], xmm0
sub esp, 0x20
mov edi, esp
lea eax, [edi + 8]
push eax
call fcn.10041c00
add esp, 4
mov dword [edi], ebx
mov dword [edi + 4], 0x18
lea eax, [esi + 0x18]
mov dword [edi + 0x14], eax
mov eax, dword [ebp + 0x1c]
mov dword [edi + 0x1c], eax
mov eax, dword [ebp + 0x18]
mov dword [edi + 0x18], eax
call fcn.1005915e
add esp, 0x20
mov esp, dword [esi + 8]
lea edi, [esi + eax]
add edi, 0x20
push dword [ebp + 0x10]
push edi
push ebx
call fcn.1004664a
add esp, 0xc
mov dword [esi + 8], eax
lea ebx, [esi + 0x40]
pcmpeqd xmm0, xmm0
movdqu xmmword [ebx + 0x4a], xmm0
movdqa xmmword [ebx + 0x40], xmm0
movdqa xmmword [ebx + 0x30], xmm0
movdqa xmmword [ebx + 0x20], xmm0
movdqa xmmword [ebx + 0x10], xmm0
movdqa xmmword [ebx], xmm0
lea ecx, [esi + 0x14]
xor eax, eax
dec eax
mov dword [ecx], eax
lea ecx, [esi + 0x10]
mov dword [ecx], eax
lea eax, [esi + 0xc]
mov ecx, dword [ebp + 0x10]
push eax
call fcn.1003dc2a
lea eax, [esi + 0xb0]
xor ecx, ecx
mov dword [eax + 8], ecx
lea eax, [esi + 0xc]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [esi + 0x14]
push eax
push ebx
push edi
push dword [esi + 8]
lea eax, [esi + 0x20]
push eax
call fcn.100480b0
add esp, 0x1c
mov ebx, dword [esi + 0xc]
xor eax, eax
dec eax
lock xadd dword [ebx + 4], eax
mov edi, dword [ebp + 8]
movzx edx, word [ebp + 0x14]
test eax, eax
jne 0x10046bfe
mov eax, dword [ebx]
mov edi, dword [eax + 4]
mov dword [esi + 0xb8], 0xffffffff
mov ecx, edi
call dword [section..00cfg]
mov ecx, ebx
call edi
movzx edx, word [ebp + 0x14]
mov edi, dword [ebp + 8]
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
mov dword [esi + 0xb8], 0xffffffff
movzx edx, dx
push edx
push dword [ebp + 0x10]
push eax
push ecx
lea eax, [esi + 0x40]
push eax
push dword [ebp + 0xc]
push edi
call fcn.100476c0
add esp, 0x1c
mov eax, dword [esi + 0xb0]
mov dword fs:[0], eax
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x1c
Function at 0x10046cb0
Capabilities:
Access peb ldr_data
Check for peb ntglobalflag flag
Get process heap flags
Get process heap force flags

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x80
mov esi, esp
mov dword [esi + 0x68], ebp
lea ecx, [esi + 0x70]
mov dword [ecx - 4], esp
xor edi, edi
dec edi
mov dword [ecx + 8], edi
mov dword [ecx + 4], 0x10056370
mov eax, dword fs:[0]
mov dword [ecx], eax
mov dword fs:[0], ecx
xor edx, edx
lea eax, [esi + 0x19]
mov dword [eax + 3], edx
mov dword [eax - 1], 0x25
mov ebx, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x1c]
push dword [ebx + 4]
push edx
push ecx
push eax
call fcn.1005327a
add esp, 0x10
mov dword [esi + 8], esp
lea ebx, [esi + 0x20]
mov dword [ebx + 8], edi
mov dword [ebx + 4], edi
mov dword [ebx], edi
mov byte [ebx + 0xc], 0xff
sub esp, 0x1c
mov edi, esp
lea eax, [edi + 8]
push eax
call fcn.10041c00
add esp, 4
mov dword [edi], ebx
mov dword [edi + 4], 0xd
lea eax, [esi + 0x18]
mov dword [edi + 0x14], eax
mov eax, dword [ebp + 0x18]
mov dword [edi + 0x18], eax
call fcn.1005915e
add esp, 0x1c
mov esp, dword [esi + 8]
lea edi, [esi + eax]
add edi, 0x20
push dword [ebp + 0x10]
push edi
push ebx
call fcn.1004664a
add esp, 0xc
mov dword [esi + 8], eax
pcmpeqd xmm0, xmm0
lea ebx, [esi + 0x30]
movdqu xmmword [ebx + 0x1e], xmm0
movdqa xmmword [ebx + 0x10], xmm0
movdqa xmmword [ebx], xmm0
lea ecx, [esi + 0x14]
xor eax, eax
dec eax
mov dword [ecx], eax
lea ecx, [esi + 0x10]
mov dword [ecx], eax
lea eax, [esi + 0xc]
mov ecx, dword [ebp + 0x10]
push eax
call fcn.1003dc2a
lea eax, [esi + 0x70]
xor ecx, ecx
mov dword [eax + 8], ecx
lea eax, [esi + 0xc]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [esi + 0x14]
push eax
push ebx
push edi
push dword [esi + 8]
lea eax, [esi + 0x20]
push eax
call fcn.100480b0
add esp, 0x1c
mov ebx, dword [esi + 0xc]
xor eax, eax
dec eax
lock xadd dword [ebx + 4], eax
mov edi, dword [ebp + 8]
movzx edx, word [ebp + 0x14]
test eax, eax
jne 0x10046dea
mov eax, dword [ebx]
mov edi, dword [eax + 4]
mov dword [esi + 0x78], 0xffffffff
mov ecx, edi
call dword [section..00cfg]
mov ecx, ebx
call edi
movzx edx, word [ebp + 0x14]
mov edi, dword [ebp + 8]
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
mov dword [esi + 0x78], 0xffffffff
movzx edx, dx
push edx
push dword [ebp + 0x10]
push eax
push ecx
lea eax, [esi + 0x30]
push eax
push dword [ebp + 0xc]
push edi
call fcn.100476c0
add esp, 0x1c
mov eax, dword [esi + 0x70]
mov dword fs:[0], eax
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x18
Function at 0x10046e90
Capabilities:
Access peb ldr_data
Get process heap flags
Get process heap force flags

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xc0
mov esi, esp
mov dword [esi + 0xa8], ebp
lea ecx, [esi + 0xb0]
mov dword [ecx - 4], esp
xor edi, edi
dec edi
mov dword [ecx + 8], edi
mov dword [ecx + 4], 0x10056380
mov eax, dword fs:[0]
mov dword [ecx], eax
mov dword fs:[0], ecx
xor edx, edx
lea eax, [esi + 0x19]
mov dword [eax + 3], edx
mov dword [eax - 1], 0x25
mov ebx, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x20]
push dword [ebx + 4]
push edx
push ecx
push eax
call fcn.1005327a
add esp, 0x10
mov dword [esi + 8], esp
lea eax, [esi + 0x20]
mov dword [eax + 0x14], edi
mov dword [eax + 0x10], edi
pcmpeqd xmm0, xmm0
movdqa xmmword [eax], xmm0
mov ebx, eax
sub esp, 0x20
mov edi, esp
lea eax, [edi + 8]
push eax
call fcn.10041c00
add esp, 4
mov dword [edi], ebx
mov dword [edi + 4], 0x18
lea eax, [esi + 0x18]
mov dword [edi + 0x14], eax
mov eax, dword [ebp + 0x1c]
mov dword [edi + 0x1c], eax
mov eax, dword [ebp + 0x18]
mov dword [edi + 0x18], eax
call fcn.1005915e
add esp, 0x20
mov esp, dword [esi + 8]
lea ebx, [esi + eax]
add ebx, 0x20
push dword [ebp + 0x10]
push ebx
lea eax, [esi + 0x20]
push eax
call fcn.1004664a
add esp, 0xc
mov dword [esi + 8], eax
lea edi, [esi + 0x40]
pcmpeqd xmm0, xmm0
movdqu xmmword [edi + 0x4a], xmm0
movdqa xmmword [edi + 0x40], xmm0
movdqa xmmword [edi + 0x30], xmm0
movdqa xmmword [edi + 0x20], xmm0
movdqa xmmword [edi + 0x10], xmm0
movdqa xmmword [edi], xmm0
lea ecx, [esi + 0x14]
xor eax, eax
dec eax
mov dword [ecx], eax
lea ecx, [esi + 0x10]
mov dword [ecx], eax
lea eax, [esi + 0xc]
mov ecx, dword [ebp + 0x10]
push eax
call fcn.1003dc2a
lea eax, [esi + 0xb0]
xor ecx, ecx
mov dword [eax + 8], ecx
lea eax, [esi + 0xc]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [esi + 0x14]
push eax
push edi
push ebx
push dword [esi + 8]
lea eax, [esi + 0x20]
push eax
call fcn.100480b0
add esp, 0x1c
mov ebx, dword [esi + 0xc]
xor eax, eax
dec eax
lock xadd dword [ebx + 4], eax
mov edi, dword [ebp + 8]
movzx edx, word [ebp + 0x14]
test eax, eax
jne 0x10046ff2
mov eax, dword [ebx]
mov edi, dword [eax + 4]
mov dword [esi + 0xb8], 0xffffffff
mov ecx, edi
call dword [section..00cfg]
mov ecx, ebx
call edi
movzx edx, word [ebp + 0x14]
mov edi, dword [ebp + 8]
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
mov dword [esi + 0xb8], 0xffffffff
movzx edx, dx
push edx
push dword [ebp + 0x10]
push eax
push ecx
lea eax, [esi + 0x40]
push eax
push dword [ebp + 0xc]
push edi
call fcn.100476c0
add esp, 0x1c
mov eax, dword [esi + 0xb0]
mov dword fs:[0], eax
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x1c
Function at 0x1004ab04
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
push eax
mov ebx, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
mov ecx, esi
call fcn.1005614a
mov edx, eax
test ebx, ebx
je 0x1004ab2b
mov eax, dword [ebx + 0xc]
cmp eax, dword [ebx + 0x10]
je 0x1004ab36
movzx eax, word [eax]
jmp 0x1004ab4d
xor ecx, ecx
test dl, dl
je 0x1004ab60
jmp 0x1004abf4
mov eax, dword [ebx]
mov edi, dword [eax + 0x20]
mov ecx, edi
mov byte [ebp - 0x10], dl
call dword [section..00cfg]
mov ecx, ebx
call edi
mov dl, byte [ebp - 0x10]
xor edi, edi
cmp ax, 0xffff
sete al
je 0x1004ab5a
mov edi, ebx
mov ecx, edi
cmp dl, al
je 0x1004abda
mov edi, dword [esi]
mov eax, dword [edi + 0xc]
cmp eax, dword [edi + 0x10]
mov dword [ebp - 0x10], ecx
je 0x1004ab72
movzx edi, word [eax]
jmp 0x1004ab85
mov eax, dword [edi]
mov esi, dword [eax + 0x20]
mov ecx, esi
call dword [section..00cfg]
mov ecx, edi
call esi
mov edi, eax
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebx]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [section..00cfg]
movzx eax, di
mov ecx, ebx
push eax
push 8
call esi
test al, al
je 0x1004abd4
mov esi, dword [ebp + 8]
mov edi, dword [esi]
mov eax, dword [edi + 0xc]
cmp eax, dword [edi + 0x10]
mov ebx, dword [ebp - 0x10]
je 0x1004abbe
add eax, 2
mov dword [edi + 0xc], eax
jmp 0x1004ab11
mov eax, dword [edi]
mov esi, dword [eax + 0x24]
mov ecx, esi
call dword [section..00cfg]
mov ecx, edi
call esi
jmp 0x1004ab0e
mov edi, dword [ebp - 0x10]
mov esi, dword [ebp + 8]
mov ecx, esi
call fcn.1005614a
mov ebx, eax
test edi, edi
je 0x1004abfd
mov eax, dword [edi + 0xc]
cmp eax, dword [edi + 0x10]
je 0x1004ac03
movzx eax, word [eax]
jmp 0x1004ac14
mov ecx, esi
call fcn.1005614a
mov ebx, eax
test bl, bl
jne 0x1004ac1f
jmp 0x1004ac25
mov eax, dword [edi]
mov esi, dword [eax + 0x20]
mov ecx, esi
call dword [section..00cfg]
mov ecx, edi
call esi
cmp ax, 0xffff
sete al
xor bl, al
jne 0x1004ac25
mov eax, dword [ebp + 0x10]
or byte [eax], 2
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret 0x10