joyce8/EMBER2024-capa huggingface dataset:
Function at 0x48c3c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
mov esi, eax
xor ebx, ebx
push edi
mov dword [ebp - 4], 0
mov dword [esi + 0x6af80], 2
cmp dword [esi + 0x6af90], ebx
je 0x48c5df
lea ebx, [ebx]
cmp dword [esi + 0x6af90], 3
jb 0x48c447
mov ecx, dword [esi + 0x6af84]
movzx eax, byte [ecx + esi + 0x1af72]
mov edx, dword [esi + 0x6af7c]
shl edx, 5
xor eax, edx
and eax, 0x7fff
mov dword [esi + 0x6af7c], eax
mov eax, dword [esi + eax*4 + 0x4af70]
and ecx, 0x7fff
mov dword [esi + ecx*4 + 0x2af70], eax
mov ecx, dword [esi + 0x6af84]
mov dword [ebp - 4], eax
mov eax, dword [esi + 0x6af7c]
mov dword [esi + eax*4 + 0x4af70], ecx
mov ecx, dword [ebp - 4]
test ecx, ecx
je 0x48c487
mov edx, dword [esi + 0x6af84]
sub edx, ecx
cmp edx, 0x7efa
ja 0x48c487
mov eax, dword [esi + 0x6af90]
cmp dword [esi + 0x6afa0], eax
jbe 0x48c472
mov dword [esi + 0x6afa0], eax
mov eax, ecx
call fcn.0048c0d0
mov ebx, eax
mov eax, dword [esi + 0x6af90]
cmp ebx, eax
jbe 0x48c487
mov ebx, eax
mov eax, dword [esi + 0x6af84]
mov ecx, esi
cmp ebx, 3
jb 0x48c56c
sub eax, dword [esi + 0x6af88]
lea edx, [ebx - 3]
call fcn.0048b8c0
sub dword [esi + 0x6af90], ebx
mov ecx, dword [esi + 0x6af90]
mov dword [ebp - 8], eax
cmp ebx, dword [esi + 0x6af98]
ja 0x48c534
cmp ecx, 3
jb 0x48c534
mov edi, 1
sub ebx, edi
lea esp, [esp]
add dword [esi + 0x6af84], edi
mov edx, dword [esi + 0x6af84]
movzx ecx, byte [esi + edx + 0x1af72]
mov eax, dword [esi + 0x6af7c]
shl eax, 5
xor ecx, eax
and ecx, 0x7fff
mov dword [esi + 0x6af7c], ecx
mov ecx, dword [esi + ecx*4 + 0x4af70]
and edx, 0x7fff
sub ebx, edi
mov dword [esi + edx*4 + 0x2af70], ecx
mov edx, dword [esi + 0x6af84]
mov dword [ebp - 4], ecx
mov ecx, dword [esi + 0x6af7c]
mov dword [esi + ecx*4 + 0x4af70], edx
jne 0x48c4d0
add dword [esi + 0x6af84], edi
mov eax, dword [ebp - 8]
jmp 0x48c587
add dword [esi + 0x6af84], ebx
mov ecx, dword [esi + 0x6af84]
lea edx, [ecx + esi]
movzx ecx, byte [edx + 0x1af70]
mov dword [esi + 0x6af7c], ecx
movzx edx, byte [edx + 0x1af71]
shl ecx, 5
xor edx, ecx
xor ebx, ebx
and edx, 0x7fff
mov dword [esi + 0x6af7c], edx
jmp 0x48c587
movzx edx, byte [eax + esi + 0x1af70]
xor eax, eax
call fcn.0048b8c0
dec dword [esi + 0x6af90]
inc dword [esi + 0x6af84]
test eax, eax
je 0x48c5c1
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
jl 0x48c59e
lea edx, [ecx + esi + 0x1af70]
jmp 0x48c5a0
xor edx, edx
mov eax, dword [esi + 0x6af84]
sub eax, ecx
push edx
xor edi, edi
mov ecx, esi
call fcn.0048b720
mov ecx, dword [esi + 0x6af84]
add esp, 4
mov dword [esi + 0x6af74], ecx
cmp dword [esi + 0x6af90], 0x106
jae 0x48c5d2
call fcn.0048c270
cmp dword [esi + 0x6af90], 0
jne 0x48c3f0
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
jl 0x48c5f2
lea edx, [ecx + esi + 0x1af70]
jmp 0x48c5f4
xor edx, edx
mov eax, dword [esi + 0x6af84]
sub eax, ecx
push edx
mov edi, 1
mov ecx, esi
call fcn.0048b720
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x48d2a0
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
test ecx, ecx
jne 0x48d2a7
xor eax, eax
ret
push esi
not eax
cmp edx, 8
jb 0x48d384
mov esi, edx
shr esi, 3
push edi
lea esp, [esp]
movzx edi, byte [ecx]
xor edi, eax
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x4ef7b8]
movzx edi, byte [ecx + 1]
xor edi, eax
and edi, 0xff
inc ecx
shr eax, 8
xor eax, dword [edi*4 + 0x4ef7b8]
movzx edi, byte [ecx + 1]
xor edi, eax
and edi, 0xff
inc ecx
shr eax, 8
xor eax, dword [edi*4 + 0x4ef7b8]
movzx edi, byte [ecx + 1]
xor edi, eax
inc ecx
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x4ef7b8]
movzx edi, byte [ecx + 1]
xor edi, eax
inc ecx
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x4ef7b8]
movzx edi, byte [ecx + 1]
xor edi, eax
inc ecx
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x4ef7b8]
movzx edi, byte [ecx + 1]
inc ecx
xor edi, eax
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x4ef7b8]
movzx edi, byte [ecx + 1]
inc ecx
xor edi, eax
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x4ef7b8]
inc ecx
sub edx, 8
sub esi, 1
jne 0x48d2c0
pop edi
test edx, edx
je 0x48d3ab
jmp 0x48d390
movzx esi, byte [ecx]
xor esi, eax
and esi, 0xff
shr eax, 8
xor eax, dword [esi*4 + 0x4ef7b8]
inc ecx
sub edx, 1
jne 0x48d390
not eax
pop esi
ret

Function at 0x48d3b0
Capabilities:
Generate random numbers using the delphi lcg
Hash data with crc32

Disassembly:
mov eax, dword [edx]
movsx ecx, cl
xor ecx, eax
shr eax, 8
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x4ef7b8]
xor ecx, eax
movzx eax, cl
add eax, dword [edx + 4]
mov dword [edx], ecx
mov ecx, dword [edx + 8]
imul eax, eax, 0x8088405
inc eax
mov dword [edx + 4], eax
shr eax, 0x18
xor eax, ecx
and eax, 0xff
shr ecx, 8
xor ecx, dword [eax*4 + 0x4ef7b8]
mov dword [edx + 8], ecx
ret
Function at 0x48d540
Capabilities:
Get file size
Parse pe header
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4c
push ebx
push esi
mov esi, eax
push edi
lea eax, [ebp - 0x4c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetFileInformationByHandle]
test eax, eax
jne 0x48d566
mov eax, 0x200
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x4c]
mov edx, eax
xor edi, edi
and edx, 1
je 0x48d57c
mov dword [ebp - 8], 1
mov edi, dword [ebp - 8]
test al, 2
je 0x48d583
or edi, 2
test al, 4
je 0x48d58a
or edi, 4
mov ecx, eax
and ecx, 0x10
je 0x48d594
or edi, 0x10
test al, 0x20
je 0x48d59b
or edi, 0x20
test ecx, ecx
je 0x48d5a7
or edi, 0x40000000
jmp 0x48d5ad
or edi, 0x80000000
or edi, 0x1000000
mov dword [ebp - 8], edi
test edx, edx
jne 0x48d5c3
or edi, 0x800000
mov dword [ebp - 8], edi
push 0
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [ebp - 0x10], eax
cmp eax, 0x28
jbe 0x48d66a
mov edi, dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 0
push 0
push 0
push esi
call edi
mov ebx, dword [sym.imp.KERNEL32.dll_ReadFile]
push 0
lea ecx, [ebp - 0xc]
push ecx
push 2
lea edx, [ebp - 4]
push edx
push esi
call ebx
push 0
push 0
push 0x24
push esi
call edi
push 0
lea eax, [ebp - 0xc]
push eax
push 4
lea ecx, [ebp - 0x14]
push ecx
push esi
call ebx
mov edx, 0x54ad
cmp word [ebp - 4], dx
jne 0x48d667
mov eax, dword [ebp - 0x14]
lea ecx, [eax + 0x34]
cmp dword [ebp - 0x10], ecx
jbe 0x48d667
push 0
push 0
push eax
push esi
call edi
push 0
lea edx, [ebp - 0xc]
push edx
push 4
lea eax, [ebp - 0x18]
push eax
push esi
call ebx
mov eax, dword [ebp - 0x18]
cmp eax, 0x5a4d
je 0x48d660
cmp eax, 0x454e
je 0x48d660
cmp eax, 0x454c
je 0x48d660
cmp eax, 0x4550
jne 0x48d667
or dword [ebp - 8], 0x400000
mov edi, dword [ebp - 8]
mov eax, dword [ebp + 8]
test eax, eax
je 0x48d673
mov dword [eax], edi
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x48d67f
mov ecx, dword [ebp - 0x10]
mov dword [eax], ecx
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp - 0x34]
mov ebx, dword [ebp - 0x38]
test esi, esi
je 0x48d6f9
mov edx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x3c]
push 0
sub edx, 0xd53e8000
push 0x989680
sbb eax, 0x19db1de
push eax
push edx
call fcn.004b1fa0
mov dword [esi + 4], edx
push 0
mov ecx, ebx
sub ecx, 0xd53e8000
mov edx, edi
push 0x989680
sbb edx, 0x19db1de
push edx
push ecx
mov dword [esi], eax
call fcn.004b1fa0
mov ecx, dword [ebp - 0x44]
mov dword [esi + 8], eax
mov eax, dword [ebp - 0x48]
push 0
sub eax, 0xd53e8000
push 0x989680
sbb ecx, 0x19db1de
push ecx
push eax
mov dword [esi + 0xc], edx
call fcn.004b1fa0
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], edx
mov esi, dword [ebp + 0x14]
test esi, esi
je 0x48d721
push edi
push ebx
lea edx, [ebp - 8]
push edx
lea eax, [ebp - 4]
push eax
call fcn.0048d4e0
movzx ecx, word [ebp - 4]
movzx edx, word [ebp - 8]
shl ecx, 0x10
add esp, 0x10
or ecx, edx
mov dword [esi], ecx
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x48d7d0
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg
Hash data with crc32
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, ecx
cmp byte [esi + 0x2d], 0
push edi
mov edi, dword [ebp + 0xc]
mov eax, ebx
je 0x48d8bb
mov eax, dword [esi + 0x3c]
test eax, eax
je 0x48d807
cmp dword [esi + 0x40], edi
jae 0x48d807
push eax
call fcn.0049cb19
add esp, 4
mov dword [esi + 0x3c], 0
cmp dword [esi + 0x3c], 0
jne 0x48d81f
lea eax, [edi + edi]
push eax
call fcn.0049cb24
add esp, 4
mov dword [esi + 0x3c], eax
mov dword [esi + 0x40], edi
mov ecx, dword [esi + 0x3c]
push edi
push ebx
push ecx
call fcn.004abb70
add esp, 0xc
xor ebx, ebx
test edi, edi
jbe 0x48d8b8
mov edx, dword [esi + 0x3c]
mov cl, byte [ebx + edx]
mov edi, dword [esi + 0x30]
mov byte [ebp + 8], cl
movsx ecx, cl
xor ecx, edi
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x4ef7b8]
mov dword [ebp - 4], ecx
mov eax, dword [esi + 0x38]
shr edi, 8
xor dword [ebp - 4], edi
mov ecx, dword [ebp - 4]
mov dword [esi + 0x30], ecx
movzx ecx, cl
add ecx, dword [esi + 0x34]
mov edx, eax
imul ecx, ecx, 0x8088405
inc ecx
mov dword [esi + 0x34], ecx
shr ecx, 0x18
xor ecx, eax
shr eax, 8
and ecx, 0xff
xor eax, dword [ecx*4 + 0x4ef7b8]
and edx, 0xfffd
mov dword [esi + 0x38], eax
mov ecx, dword [esi + 0x3c]
or edx, 2
mov eax, edx
xor eax, 1
imul eax, edx
shr eax, 8
xor al, byte [ebp + 8]
inc ebx
mov byte [ebx + ecx - 1], al
cmp ebx, dword [ebp + 0xc]
jb 0x48d837
mov edi, dword [ebp + 0xc]
mov eax, dword [esi + 0x3c]
mov edx, dword [esi + 0x20]
test edx, edx
je 0x48d8fa
mov ecx, dword [esi + 0x24]
lea ebx, [ecx + edi]
cmp ebx, dword [esi + 0x28]
jb 0x48d8df
pop edi
mov dword [esi + 0x14], 0x30000
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 8
push edi
push eax
add ecx, edx
push ecx
call fcn.004abb70
add esp, 0xc
add dword [esi + 0x24], edi
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x48d91c
push 0
lea edx, [ebp + 0xc]
push edx
push edi
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
pop edi
mov dword [esi + 0x14], 0x1000000
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 8
Function at 0x48dbd0
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, dword [esi + 0x84]
push edi
test ecx, ecx
je 0x48dc23
mov eax, dword [esi + 0x8c]
mov edi, dword [esi + 0x88]
cmp eax, edi
jae 0x48dc60
sub edi, eax
cmp edi, edx
jbe 0x48dbf7
mov edi, edx
push edi
add eax, ecx
push eax
push ebx
call fcn.004abb70
mov eax, dword [esi + 0x78]
add dword [esi + 0x8c], edi
add dword [esi + 0x74], edi
add esp, 0xc
mov edx, edi
mov ecx, ebx
call fcn.0048d2a0
mov dword [esi + 0x78], eax
mov eax, edi
pop edi
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x7c]
test eax, eax
je 0x48dc59
push 0
lea ecx, [ebp - 4]
push ecx
push edx
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x48dc60
mov edi, dword [ebp - 4]
mov eax, dword [esi + 0x78]
add dword [esi + 0x74], edi
mov edx, edi
mov ecx, ebx
call fcn.0048d2a0
mov dword [esi + 0x78], eax
mov eax, edi
pop edi
mov esp, ebp
pop ebp
ret
mov dword [esi + 0x14], 0x1000000
xor eax, eax
pop edi
mov esp, ebp
pop ebp
ret
Function at 0x4909c0
Capabilities:
Check http status code

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4ccc08
mov eax, dword fs:[0]
push eax
sub esp, 0xc
push esi
push edi
mov eax, dword [0x504c94]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
xor edi, edi
mov dword [ebp - 4], edi
mov eax, dword [esi + 0xc]
cmp eax, edi
jne 0x490a30
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x490a1b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [ebp + 8]
push edi
push edi
push 0x84000000
push edi
push ecx
push eax
call dword [sym.imp.WININET.dll_InternetOpenUrlW]
push ecx
mov edx, esp
mov dword [ebp - 0x14], esp
push eax
mov dword [esi + 0x10], eax
mov eax, dword [ebp + 8]
push eax
push str.CHttpRemoteFile::SetLocation:_InternetOpenUrl__s__d
push edx
call fcn.00466a00
add esp, 0x10
call fcn.00490950
mov esi, dword [esi + 0x10]
add esp, 4
cmp esi, edi
je 0x490aa0
push edi
lea ecx, [ebp - 0x14]
push ecx
lea edx, [ebp - 0x10]
push edx
push 0x20000013
push esi
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x14], 4
call dword [sym.imp.WININET.dll_HttpQueryInfoW]
test eax, eax
mov eax, dword [ebp - 0x10]
je 0x490adb
cmp eax, 0xc8
jne 0x490adb
mov edi, 1
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x490ac6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4
push ecx
mov ecx, esp
mov dword [ebp - 0x18], esp
push eax
push str.CHttpRemoteFile::SetLocation:_return_code:__d
push ecx
call fcn.00466a00
add esp, 0xc
call fcn.00490950
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
add esp, 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x490a0f

Function at 0x490b20
Capabilities:
Get http content length

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [ebp + 8]
push 0
lea edx, [ebp - 4]
push edx
push eax
mov dword [eax], 0
mov eax, dword [ecx + 0x10]
push 0x20000005
push eax
mov dword [ebp - 4], 4
call dword [sym.imp.WININET.dll_HttpQueryInfoW]
test eax, eax
je 0x490b59
mov eax, 1
mov esp, ebp
pop ebp
ret 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
xor eax, eax
mov esp, ebp
pop ebp
ret 4
Function at 0x490c10
Capabilities:
Read data from internet
Receive data

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
xor edi, edi
push 0x4000
mov ebx, ecx
mov dword [ebp - 4], edi
call fcn.004ac152
mov ecx, dword [ebx + 0x10]
add esp, 4
mov esi, eax
lea eax, [ebp - 4]
push eax
push 0x4000
push esi
push ecx
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
je 0x490c9e
mov eax, dword [ebp - 4]
add edi, eax
cmp eax, 0x4000
jne 0x490c8e
lea edx, [edi + 0x4000]
push edx
push esi
call fcn.004ac3be
mov edx, dword [ebx + 0x10]
add esp, 8
mov esi, eax
lea eax, [ebp - 4]
push eax
push 0x4000
lea ecx, [esi + edi]
push ecx
push edx
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
jne 0x490c45
mov eax, dword [ebp + 8]
mov dword [eax], esi
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [ebp + 8]
mov eax, edi
pop edi
mov dword [ecx], esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edx, dword [ebp + 8]
mov eax, edi
pop edi
mov dword [edx], esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
Function at 0x491120
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4c9d88
mov eax, dword fs:[0]
push eax
sub esp, 0xc
push esi
mov eax, dword [0x504c94]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 4], 0
mov eax, dword [ebp + 8]
mov ecx, dword [ecx + 0xc]
push 0
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x49119b
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x491187
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret 4
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x14]
push ecx
lea edx, [ebp - 0x10]
push edx
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x18], esp
mov esi, esp
push eax
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x14], 0
call fcn.00423f84
add eax, 0x10
add esp, 4
mov dword [esi], eax
call fcn.00469fb0
add esp, 0xc
or edx, 0xffffffff
mov dword [ebp - 4], 0xffffffff
test eax, eax
mov eax, dword [ebp + 8]
jne 0x491211
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x491187
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret 4
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49122a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
mov esp, ebp
pop ebp
ret 4
Function at 0x494540
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, dword [esi + 0x30]
mov eax, 0x5a4d
mov dword [esi + 0xc], ecx
cmp word [ecx], ax
je 0x494591
mov eax, dword [esi + 4]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x494564
push eax
call edi
mov eax, dword [esi]
test eax, eax
je 0x494572
cmp eax, 0xffffffff
je 0x494572
push eax
call edi
mov ecx, dword [esi + 0x30]
push ecx
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
push 0x4f806c
lea edx, [ebp - 4]
push edx
mov dword [ebp - 4], str.Incorrect_PE_file__e_magic___IMAGE_DOS_SIGNATURE_
call fcn.004b1aec
mov eax, dword [ecx + 0x3c]
cmp eax, dword [esi + 0x28]
jl 0x4945dc
mov eax, dword [esi + 4]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x4945a9
push eax
call edi
mov eax, dword [esi]
test eax, eax
je 0x4945b7
cmp eax, 0xffffffff
je 0x4945b7
push eax
call edi
cmp dword [esi + 0x34], 0
je 0x4945c7
mov eax, dword [esi + 0x30]
push eax
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
push 0x4f806c
lea ecx, [ebp - 4]
push ecx
mov dword [ebp - 4], str.Incorrect_PE_file__header___filesize_
call fcn.004b1aec
add eax, ecx
mov dword [esi + 0x40], eax
cmp dword [eax], 0x4550
je 0x49462c
mov eax, dword [esi + 4]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x4945f9
push eax
call edi
mov eax, dword [esi]
test eax, eax
je 0x494607
cmp eax, 0xffffffff
je 0x494607
push eax
call edi
cmp dword [esi + 0x34], 0
je 0x494617
mov edx, dword [esi + 0x30]
push edx
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
push 0x4f806c
lea eax, [ebp - 4]
push eax
mov dword [ebp - 4], str.Incorrect_PE_file__incorrect_signature_
call fcn.004b1aec
add eax, 0x18
push ebx
xor ebx, ebx
mov dword [esi + 0x14], eax
mov edx, 0x20b
cmp word [eax], dx
sete bl
mov eax, ebx
mov dword [esi + 0x3c], eax
pop ebx
test eax, eax
je 0x49465d
mov eax, dword [ecx + 0x3c]
add eax, ecx
mov dword [esi + 0x44], eax
mov ecx, dword [esi + 0x44]
add eax, 0x18
mov dword [esi + 0x18], eax
jmp 0x494660
mov ecx, dword [esi + 0x40]
mov dx, word [ecx + 6]
mov eax, ecx
add eax, 4
cmp dword [esi + 0x3c], 0
mov dword [esi + 0x10], eax
mov word [esi + 8], dx
je 0x494683
mov eax, dword [esi + 0x18]
add eax, 0x70
mov dword [esi + 0x1c], eax
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x14]
add eax, 0x60
mov dword [esi + 0x1c], eax
mov esp, ebp
pop ebp
ret
Function at 0x4949e0
Capabilities:
Enumerate pe sections

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov ebx, dword [edi + 0x3c]
mov ecx, dword [edi + 0xc]
mov eax, dword [edi + 0x30]
mov edx, dword [edi + 0x1c]
mov esi, dword [edx + 0x10]
neg ebx
sbb ebx, ebx
and ebx, 0x10
add ebx, 0xf8
add ebx, dword [ecx + 0x3c]
add ebx, eax
mov eax, dword [edi + 0x34]
test eax, eax
jne 0x494a18
mov eax, esi
jmp 0x494a26
mov di, word [edi + 8]
mov ecx, ebx
call fcn.004942f0
mov edi, dword [ebp + 8]
xor ecx, ecx
cmp ecx, dword [edi + 0x2c]
jb 0x494a34
ja 0x494a73
cmp eax, dword [edi + 0x28]
jae 0x494a73
cmp dword [edi + 0x34], 0
jne 0x494a3e
mov eax, esi
jmp 0x494a4c
mov di, word [edi + 8]
mov ecx, ebx
call fcn.004942f0
mov edi, dword [ebp + 8]
mov ecx, dword [edi + 0x30]
movzx edx, word [ecx + eax + 0xe]
add ecx, eax
movzx eax, word [ecx + 0xc]
add edx, eax
mov eax, 0
je 0x494a73
mov esi, 0x18
cmp dword [ecx + eax*8 + 0x10], esi
je 0x494a7e
inc eax
cmp eax, edx
jb 0x494a68
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [ecx + eax*8 + 0x14]
and eax, 0x7fffffff
mov dx, word [eax + ecx + 0xe]
add dx, word [eax + ecx + 0xc]
add eax, ecx
movzx ebx, dx
lea edx, [eax + 0x10]
mov eax, dword [edx + 4]
test eax, eax
jns 0x494aa9
and eax, 0x7fffffff
lea edx, [eax + ecx + 0x10]
mov esi, dword [edx + 4]
movzx eax, bx
add esi, ecx
mov dword [ebp - 4], esi
test eax, eax
jle 0x494b31
mov dword [ebp - 8], eax
cmp dword [edi + 0x34], 0
mov ebx, dword [esi]
mov ecx, dword [edi + 0xc]
jne 0x494aca
mov eax, ebx
jmp 0x494b10
mov eax, dword [ecx + 0x3c]
movzx edi, word [eax + ecx + 6]
add eax, ecx
movzx ecx, word [eax + 0x14]
lea edx, [ecx + eax + 0x18]
xor ecx, ecx
mov dword [ebp - 0xc], edx
test edi, edi
jle 0x494b0b
lea eax, [edx + 8]
mov edx, dword [eax]
mov esi, edx
test edx, edx
jne 0x494af3
mov esi, dword [eax + 8]
mov edx, dword [eax + 4]
cmp ebx, edx
jb 0x494b00
add edx, esi
cmp ebx, edx
jb 0x494b3f
inc ecx
add eax, 0x28
cmp ecx, edi
jl 0x494ae8
mov esi, dword [ebp - 4]
mov edi, dword [ebp + 8]
xor eax, eax
lea edx, [ebp - 0xc]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 0xc]
push edx
push eax
call fcn.00494b60
mov ecx, dword [esi + 4]
add esi, 0x10
sub dword [ebp - 8], 1
mov dword [eax], ecx
mov dword [ebp - 4], esi
jne 0x494abb
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
lea edx, [ecx + ecx*4]
lea ecx, [eax + edx*8]
mov eax, dword [ecx + 0x14]
sub eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 8]
add eax, dword [ecx + 0xc]
mov edi, ecx
add eax, ebx
jmp 0x494b10

Function at 0x495250
Capabilities:
Encode data using xor

Disassembly:
or edx, 0xffffffff
cmp dword [0x509ecc], 0
jne 0x495261
call fcn.004951b0
xor eax, eax
test esi, esi
jle 0x49528b
jmp 0x495270
movzx ecx, byte [eax + edi]
xor ecx, edx
and ecx, 0xff
shr edx, 8
xor edx, dword [ecx*4 + 0x509a48]
inc eax
cmp eax, esi
jl 0x495270
mov eax, edx
ret
Function at 0x499760
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x118
mov eax, dword [0x504c94]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push 0x110
xor esi, esi
lea eax, [ebp - 0x114]
push esi
push eax
call fcn.004ac220
add esp, 0xc
lea ecx, [ebp - 0x118]
push ecx
mov dword [ebp - 0x118], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x4997b2
cmp dword [ebp - 0x114], 6
lea eax, [esi + 1]
jae 0x4997b4
mov eax, esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop esi
call fcn.004aaf83
mov esp, ebp
pop ebp
ret
Function at 0x49bbf0
Capabilities:
Write clipboard data

Disassembly:
push ebx
push esi
xor ebx, ebx
call dword [sym.imp.USER32.dll_EmptyClipboard]
mov eax, edi
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x49bc00
sub eax, edx
sar eax, 1
lea eax, [eax + eax + 2]
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov esi, eax
test esi, esi
je 0x49bc57
push esi
call dword [sym.imp.KERNEL32.dll_GlobalLock]
test eax, eax
je 0x49bc57
mov edx, eax
mov ecx, edi
sub edx, edi
movzx eax, word [ecx]
mov word [edx + ecx], ax
add ecx, 2
test ax, ax
jne 0x49bc33
push esi
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push esi
push 0xd
call dword [sym.imp.USER32.dll_SetClipboardData]
mov ebx, 1
call dword [sym.imp.USER32.dll_CloseClipboard]
pop esi
mov eax, ebx
pop ebx
ret