joyce8/EMBER2024-capa huggingface dataset:
Function at 0x4fcc14
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
push esi
push edi
mov edi, ecx
mov ebx, edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
cmp byte [eax + 4], 0
jne 0x4fcc41
mov ecx, 0x1f3
mov edx, 0x4fcce8
mov eax, 0x4fcd78
call fcn.0040542c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
mov dword [ebp - 8], eax
mov esi, ebx
dec edi
test edi, edi
jl 0x4fccba
inc edi
mov eax, dword [ebp - 8]
and eax, 0xffff
or eax, 2
movzx ebx, byte [esi]
mov edx, ebx
mov ecx, eax
xor ecx, 1
imul ecx, eax
shr ecx, 8
xor dl, cl
mov byte [esi], dl
mov edx, dword [ebp - 0x10]
mov eax, ebx
call fcn.004eb650
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
and eax, 0xff
add dword [ebp - 0xc], eax
imul ebx, dword [ebp - 0xc], 0x8088405
inc ebx
mov dword [ebp - 0xc], ebx
mov eax, ebx
shr eax, 0x18
mov edx, dword [ebp - 8]
call fcn.004eb650
mov dword [ebp - 8], eax
inc esi
dec edi
jne 0x4fcc64
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x10]
mov dword [eax + 8], edx
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0xc]
mov dword [eax + 0xc], edx
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 8]
mov dword [eax + 0x10], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret

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

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov dword [ebp - 4], edx
mov ebx, eax
mov eax, dword [ebp - 4]
call fcn.00405c90
xor eax, eax
push ebp
push 0x4fceb6
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebx + 8], 0x12345678
mov dword [ebx + 0xc], 0x23456789
mov dword [ebx + 0x10], 0x34567890
mov eax, dword [ebp - 4]
test eax, eax
je 0x4fce4e
mov edx, eax
sub edx, 0xa
cmp word [edx], 1
je 0x4fce4e
lea eax, [ebp - 4]
xor ecx, ecx
mov edx, dword [ebp - 4]
call fcn.0040571c
test eax, eax
je 0x4fce57
sub eax, 4
mov eax, dword [eax]
mov esi, eax
test esi, esi
jle 0x4fcea0
mov edi, 1
mov eax, dword [ebp - 4]
movzx eax, byte [eax + edi - 1]
mov edx, dword [ebx + 8]
call fcn.004eb650
mov dword [ebx + 8], eax
mov eax, dword [ebx + 8]
and eax, 0xff
add dword [ebx + 0xc], eax
imul eax, dword [ebx + 0xc], 0x8088405
inc eax
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 0xc]
shr eax, 0x18
mov edx, dword [ebx + 0x10]
call fcn.004eb650
mov dword [ebx + 0x10], eax
inc edi
dec esi
jne 0x4fce62
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4fcebd
lea eax, [ebp - 4]
call fcn.00405500
ret
Function at 0x5029b8
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov dword [ebp - 4], edx
mov ebx, eax
mov edi, ecx
dec edi
test edi, edi
jl 0x502a34
inc edi
mov esi, dword [ebp - 4]
movzx eax, word [ebx + 0xc]
or ax, 2
movzx edx, ax
xor ax, 1
movzx eax, ax
imul edx, eax
shr edx, 8
xor byte [esi], dl
mov edx, dword [ebx + 4]
movzx eax, byte [esi]
call fcn.004eb650
mov dword [ebx + 4], eax
mov eax, dword [ebx + 4]
and eax, 0xff
add dword [ebx + 8], eax
imul eax, dword [ebx + 8], 0x8088405
inc eax
mov dword [ebx + 8], eax
shr eax, 0x18
xor al, byte [ebx + 0xc]
movzx eax, al
mov edx, dword [0x577b10]
mov eax, dword [edx + eax*4]
mov edx, dword [ebx + 0xc]
shr edx, 8
and edx, 0xffffff
xor eax, edx
mov dword [ebx + 0xc], eax
inc esi
dec edi
jne 0x5029cf
pop edi
pop esi
pop ebx
pop ecx
pop ebp
ret

Function at 0x502ad8
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push ebx
push esi
mov ebx, eax
mov eax, dword [ebx + 0x38]
call fcn.0042c44c
mov dword [ebp - 8], eax
mov byte [ebp - 1], 0
mov byte [ebp - 2], 0
jmp 0x502b7e
mov eax, ebx
call fcn.00502a88
xor ecx, ecx
mov edx, dword [ebp - 8]
mov eax, dword [ebx + 0x38]
mov esi, dword [eax]
call dword [esi + 0x14]
lea edx, [ebx + 0x10]
mov ecx, 0xc
mov eax, dword [ebx + 0x38]
mov esi, dword [eax]
call dword [esi + 0xc]
xor esi, esi
mov eax, ebx
call fcn.00502a3c
xor byte [ebx + esi + 0x10], al
lea edx, [ebx + 4]
movzx eax, byte [ebx + esi + 0x10]
call fcn.00502bb4
inc esi
cmp esi, 0xc
jne 0x502b20
cmp byte [ebx + 0x20], 0
je 0x502b51
movzx eax, byte [ebx + 0x1b]
cmp al, byte [ebx + 0x1f]
sete byte [ebp - 1]
jmp 0x502b6c
movzx eax, byte [ebx + 0x1b]
cmp al, byte [ebx + 0x1f]
jne 0x502b63
movzx eax, byte [ebx + 0x1a]
cmp al, byte [ebx + 0x1e]
je 0x502b67
xor eax, eax
jmp 0x502b69
mov al, 1
mov byte [ebp - 1], al
cmp byte [ebp - 1], 0
jne 0x502b7b
lea edx, [ebx + 0x30]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx]
inc byte [ebp - 2]
cmp byte [ebp - 1], 0
jne 0x502b91
movzx eax, byte [ebp - 2]
cmp al, byte [ebx + 0x34]
jb 0x502afa
cmp byte [ebp - 1], 0
jne 0x502ba8
mov dl, 1
mov eax, dword [0x4e6f78]
call fcn.004e84ac
call fcn.00404bfc
movzx eax, byte [ebp - 1]
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
ret

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

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov edi, edx
mov ebx, eax
mov edx, dword [edi]
mov eax, ebx
call fcn.004eb650
mov esi, eax
mov dword [edi], esi
and esi, 0xff
add dword [edi + 4], esi
imul esi, dword [edi + 4], 0x8088405
inc esi
mov dword [edi + 4], esi
mov eax, esi
shr eax, 0x18
mov edx, dword [edi + 8]
call fcn.004eb650
mov dword [edi + 8], eax
pop edi
pop esi
pop ebx
pop ebp
ret
Function at 0x509bcc
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffec
push ebx
push esi
push edi
mov esi, ecx
mov ebx, edx
mov edi, eax
mov word [ebx], 0
mov word [esi], 0
mov eax, dword [ebp + 0x10]
mov word [eax], 0
mov eax, dword [ebp + 0xc]
mov word [eax], 0
cmp byte [ebp + 8], 0
je 0x509c0a
mov eax, edi
call fcn.0040de50
test al, al
je 0x509cc0
lea eax, [ebp - 0xc]
push eax
mov eax, edi
call fcn.00406738
push eax
call sub.version.dll_GetFileVersionInfoSizeW
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x509cc0
mov eax, dword [ebp - 4]
call fcn.00403350
mov dword [ebp - 0x10], eax
xor edx, edx
push ebp
push 0x509cb9
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 4]
push eax
push 0
mov eax, edi
call fcn.00406738
push eax
call sub.version.dll_GetFileVersionInfoW
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x14]
push eax
push 0x509ccc
mov eax, dword [ebp - 0x10]
push eax
call sub.version.dll_VerQueryValueW
mov eax, dword [ebp - 0x14]
mov edx, dword [eax + 8]
shr edx, 0x10
mov word [ebx], dx
movzx edx, word [eax + 8]
and dx, 0xffff
mov word [esi], dx
mov edx, dword [eax + 0xc]
shr edx, 0x10
mov ecx, dword [ebp + 0x10]
mov word [ecx], dx
movzx eax, word [eax + 0xc]
and ax, 0xffff
mov edx, dword [ebp + 0xc]
mov word [edx], ax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x509cc0
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x10]
call fcn.0040336c
ret
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc

Function at 0x509fc0
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push 0
push ebx
push esi
mov ebx, eax
xor eax, eax
push ebp
push 0x50a025
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebx + 8]
push eax
call sub.kernel32.dll_LockResource
mov esi, eax
mov dword [ebx + 0xc], esi
test esi, esi
jne 0x50a00f
lea ecx, [ebp - 4]
mov edx, 2
mov eax, dword [0x57eb10]
call fcn.00509e60
mov ecx, dword [ebp - 4]
mov dl, 1
mov eax, dword [0x509cd0]
call fcn.00413460
call fcn.00404bfc
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50a02c
lea eax, [ebp - 4]
call fcn.0040669c
ret
Function at 0x50a034
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffdec
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x214], ebx
mov dword [ebp - 0x210], ebx
mov dword [ebp - 4], ecx
mov ebx, edx
mov edi, eax
xor eax, eax
push ebp
push 0x50a167
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x204]
mov ecx, 0xff
mov edx, dword [ebp - 4]
call fcn.0040ebe8
mov eax, ebx
call fcn.004084b8
mov ebx, eax
push 0xa
lea eax, [ebp - 0x204]
push eax
push ebx
call sub.kernel32.dll_FindResourceW
mov esi, eax
test esi, esi
jne 0x50a0f4
mov ebx, dword [0x57bb50]
push 0xa
lea eax, [ebp - 0x204]
push eax
push ebx
call sub.kernel32.dll_FindResourceW
mov esi, eax
test esi, esi
jne 0x50a0f4
mov eax, dword [ebp - 4]
mov dword [ebp - 0x20c], eax
mov byte [ebp - 0x208], 0x11
lea eax, [ebp - 0x20c]
push eax
push 0
lea ecx, [ebp - 0x210]
mov edx, 3
mov eax, dword [0x57eb10]
call fcn.00509e60
mov ecx, dword [ebp - 0x210]
mov dl, 1
mov eax, dword [0x509cd0]
call fcn.0041349c
call fcn.00404bfc
push esi
push ebx
call sub.kernel32.dll_LoadResource
mov dword [edi + 8], eax
cmp dword [edi + 8], 0
jne 0x50a149
mov eax, dword [ebp - 4]
mov dword [ebp - 0x20c], eax
mov byte [ebp - 0x208], 0x11
lea eax, [ebp - 0x20c]
push eax
push 0
lea ecx, [ebp - 0x214]
mov edx, 4
mov eax, dword [0x57eb10]
call fcn.00509e60
mov ecx, dword [ebp - 0x214]
mov dl, 1
mov eax, dword [0x509cd0]
call fcn.0041349c
call fcn.00404bfc
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50a16e
lea eax, [ebp - 0x214]
mov edx, 2
call fcn.004066a4
ret

Function at 0x50a534
Capabilities:
Encode data using xor

Disassembly:
push esi
push edi
mov esi, eax
mov edi, edx
push ecx
shr ecx, 2
je 0x50a54e
cld
mov eax, dword [edi]
xor dword [esi], eax
add esi, 4
add edi, 4
dec ecx
jne 0x50a541
pop ecx
and ecx, 3
je 0x50a55d
mov al, byte [edi]
xor byte [esi], al
inc esi
inc edi
dec ecx
jne 0x50a554
pop edi
pop esi
ret
Function at 0x50a5ac
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
push edi
add esp, 0xffffffe8
mov byte [esp + 8], cl
mov dword [esp + 4], edx
mov dword [esp], eax
mov eax, dword [esp + 4]
mov eax, dword [eax]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 4]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 4
mov esi, 0x576440
mov edx, dword [esp + 0xc]
movzx eax, byte [esp + 8]
mov ebx, eax
add ebx, ebx
lea ebx, [ebx + ebx*2]
mov eax, dword [esi + ebx*8]
mov ecx, dword [esp]
mov ecx, dword [ecx + eax*4]
mov eax, dword [esi + ebx*8 + 4]
mov edi, dword [esp]
mov eax, dword [edi + eax*4]
mov ebx, dword [esi + ebx*8 + 8]
mov edi, dword [esp]
mov ebx, dword [edi + ebx*4]
add edx, ebx
add ebx, edx
mov edi, edx
shr edi, 7
xor edx, edi
add ecx, edx
add edx, ecx
mov edi, ecx
shl edi, 0xd
xor ecx, edi
add eax, ecx
add ecx, eax
mov edi, eax
shr edi, 0x11
xor eax, edi
add ebx, eax
add eax, ebx
mov edi, ebx
shl edi, 9
xor ebx, edi
add edx, ebx
add ebx, edx
mov edi, edx
shr edi, 3
xor edx, edi
add ecx, edx
mov edx, ecx
shl edx, 7
xor ecx, edx
add eax, ecx
mov edx, ebx
shr edx, 0xf
xor eax, edx
add ebx, eax
mov eax, ebx
shl eax, 0xb
xor ebx, eax
mov eax, dword [esp + 0x10]
xor eax, ebx
mov edx, dword [esp + 0xc]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], eax
add esi, 0xc
dec dword [esp + 0x14]
jne 0x50a5df
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x10]
mov dword [eax], edx
mov eax, dword [esp + 4]
mov edx, dword [esp + 0xc]
mov dword [eax + 4], edx
add esp, 0x18
pop edi
pop esi
pop ebx
ret

Function at 0x50a6e4
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xfffffff8
dec ecx
test ecx, ecx
jl 0x50a7e3
inc ecx
mov dword [esp], ecx
mov dword [esp + 4], edx
mov edx, dword [eax]
mov ecx, dword [esp + 4]
movzx ecx, byte [ecx]
xor byte [eax + edx + 4], cl
inc dword [eax]
cmp dword [eax], 0x100
jne 0x50a717
xor edx, edx
mov dword [eax], edx
mov edx, dword [eax + 0x104]
mov ecx, dword [esp + 4]
movzx ecx, byte [ecx]
xor byte [eax + edx + 0x108], cl
inc dword [eax + 0x104]
cmp dword [eax + 0x104], 8
jne 0x50a7d6
mov ecx, dword [eax + 0x114]
mov ebx, dword [eax + 0x110]
mov esi, dword [eax + 0x10c]
mov edx, dword [eax + 0x108]
mov edi, 4
add ecx, edx
add edx, ecx
mov ebp, ecx
shr ebp, 7
xor ecx, ebp
add ebx, ecx
add ecx, ebx
mov ebp, ebx
shl ebp, 0xd
xor ebx, ebp
add esi, ebx
add ebx, esi
mov ebp, esi
shr ebp, 0x11
xor esi, ebp
add edx, esi
add esi, edx
mov ebp, edx
shl ebp, 9
xor edx, ebp
add ecx, edx
add edx, ecx
mov ebp, ecx
shr ebp, 3
xor ecx, ebp
add ebx, ecx
add ecx, ebx
mov ebp, ebx
shl ebp, 7
xor ebx, ebp
add esi, ebx
add ebx, esi
mov ebp, edx
shr ebp, 0xf
xor esi, ebp
add edx, esi
add esi, edx
mov ebp, edx
shl ebp, 0xb
xor edx, ebp
dec edi
jne 0x50a75b
mov dword [eax + 0x108], ecx
mov dword [eax + 0x10c], ebx
mov dword [eax + 0x110], esi
mov dword [eax + 0x114], edx
xor edx, edx
mov dword [eax + 0x104], edx
inc dword [esp + 4]
dec dword [esp]
jne 0x50a6fc
pop ecx
pop edx
pop ebp
pop edi
pop esi
pop ebx
ret
Function at 0x50ca5c
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0
push 0
push ebx
push esi
push edi
mov edi, ecx
mov ebx, edx
mov esi, eax
xor eax, eax
push ebp
push 0x50caf5
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 4]
mov edx, 0x104
call fcn.00406a28
cmp bl, 1
cmc
sbb eax, eax
push eax
push esi
mov eax, dword [ebp - 4]
call fcn.00406738
push eax
push 0
call sub.shell32.dll_SHGetSpecialFolderPathW
test eax, eax
je 0x50cad1
mov eax, dword [ebp - 4]
call fcn.00406738
call fcn.0040e9e4
mov edx, eax
lea eax, [ebp - 4]
call fcn.00406a28
lea edx, [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.0050ca10
mov eax, dword [ebp - 8]
mov edx, edi
call fcn.00414af4
jmp 0x50cada
mov eax, edi
xor edx, edx
call fcn.004066ac
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50cafc
lea eax, [ebp - 8]
mov edx, 2
call fcn.004066a4
ret

Function at 0x50cb04
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0
push 0
push ebx
mov ebx, eax
xor eax, eax
push ebp
push 0x50cb76
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 4]
mov edx, 0x104
call fcn.00406a28
mov eax, dword [ebp - 4]
call fcn.00406738
push eax
push 0x104
call sub.kernel32.dll_GetTempPathW
mov edx, eax
lea eax, [ebp - 4]
call fcn.00406a28
lea edx, [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.0050ca10
mov eax, dword [ebp - 8]
mov edx, ebx
call fcn.00414af4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50cb7d
lea eax, [ebp - 8]
mov edx, 2
call fcn.004066a4
ret

Function at 0x50cb84
Capabilities:
Delete file
Get common file path

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff4
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 4], ebx
mov byte [ebp - 5], cl
mov edi, edx
mov esi, eax
mov ebx, dword [ebp + 8]
xor eax, eax
push ebp
push 0x50cc52
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, ebx
mov edx, 0x104
call fcn.00406a28
test esi, esi
jne 0x50cbc4
lea eax, [ebp - 4]
call fcn.0050cb04
jmp 0x50cbce
lea eax, [ebp - 4]
mov edx, esi
call fcn.00406700
mov eax, dword [ebp - 4]
call fcn.0040debc
test al, al
jne 0x50cbdf
call fcn.00415a0c
mov eax, dword [ebx]
call fcn.00406738
push eax
push 0
mov eax, edi
call fcn.00406738
push eax
mov eax, dword [ebp - 4]
call fcn.00406738
push eax
call sub.kernel32.dll_GetTempFileNameW
test eax, eax
jne 0x50cc08
call fcn.00415a0c
mov eax, dword [ebx]
call fcn.00406738
call fcn.0040e9e4
mov edx, eax
mov eax, ebx
call fcn.00406a28
cmp byte [ebp - 5], 0
jne 0x50cc3c
mov ebx, dword [ebx]
mov dword [ebp - 0xc], ebx
mov eax, dword [ebp - 0xc]
call fcn.00406738
push eax
call sub.kernel32.dll_DeleteFileW
cmp eax, 1
sbb eax, eax
inc eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50cc59
lea eax, [ebp - 4]
call fcn.0040669c
ret
Function at 0x50de28
Capabilities:
Print debug messages

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
push esi
xor ecx, ecx
mov dword [ebp - 4], ecx
mov ebx, edx
mov dword [ebp - 8], eax
xor eax, eax
push ebp
push 0x50df3e
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x20]
mov dl, 1
mov eax, dword [0x426560]
call fcn.0042cd5c
mov dword [ebp - 0x10], eax
xor edx, edx
push ebp
push 0x50df13
push dword fs:[edx]
mov dword fs:[edx], esp
mov cx, 2
xor edx, edx
mov eax, dword [ebp - 0x10]
mov esi, dword [eax]
call dword [esi + 0x14]
mov eax, dword [ebp - 0x10]
call fcn.0042c44c
push edx
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x1c]
xor edx, edx
cmp edx, dword [esp + 4]
jne 0x50de99
cmp eax, dword [esp]
setbe al
jmp 0x50de9c
setle al
add esp, 8
mov byte [ebp - 9], al
lea eax, [ebp - 4]
mov ecx, 0x50df58
mov edx, ebx
call fcn.00406b80
mov eax, dword [ebp - 4]
call fcn.00406738
push eax
call sub.kernel32.dll_OutputDebugStringW
mov eax, dword [ebp - 4]
test eax, eax
je 0x50dedc
mov edx, eax
sub edx, 0xa
cmp word [edx], 2
je 0x50dedc
lea eax, [ebp - 4]
mov edx, dword [ebp - 4]
call fcn.004056ec
mov ebx, eax
test ebx, ebx
je 0x50dee7
sub ebx, 4
mov ebx, dword [ebx]
mov eax, dword [ebp - 4]
call fcn.00406738
mov edx, eax
mov ecx, ebx
add ecx, ecx
mov eax, dword [ebp - 0x10]
mov ebx, dword [eax]
call dword [ebx + 0x10]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50df1a
mov eax, dword [ebp - 0x10]
call fcn.004040a8
ret
Function at 0x50f150
Capabilities:
Delete file

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffcc
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x34], ebx
mov esi, ecx
mov ebx, edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x50f27b
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [ebp - 8], eax
xor edx, edx
push ebp
push 0x50f25e
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 4]
call fcn.0050f0fc
test al, al
je 0x50f1f2
mov ecx, esi
mov edx, ebx
mov eax, dword [ebp - 4]
call fcn.0050f310
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x50f1b1
call fcn.00404cf0
jmp 0x50f265
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_SetLastError
movzx eax, bl
test eax, eax
jle 0x50f1f2
mov ebx, eax
mov eax, dword [ebp - 4]
call fcn.00406738
push eax
call sub.kernel32.dll_DeleteFileW
cmp eax, 1
sbb eax, eax
inc eax
test al, al
jne 0x50f1f2
call sub.kernel32.dll_GetLastError_1
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 5
jne 0x50f1f2
push esi
call sub.kernel32.dll_Sleep_2
dec ebx
jne 0x50f1c3
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50f265
cmp dword [ebp - 8], 0
je 0x50f25d
mov eax, dword [ebp - 4]
call fcn.0050f654
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], edx
push 0x50f298
mov eax, dword [ebp - 4]
mov dword [ebp - 0x30], eax
mov byte [ebp - 0x2c], 0x11
lea eax, [ebp - 0x10]
mov dword [ebp - 0x28], eax
mov byte [ebp - 0x24], 0x10
mov eax, dword [ebp - 8]
mov dword [ebp - 0x20], eax
mov byte [ebp - 0x1c], 0
lea edx, [ebp - 0x34]
mov eax, dword [ebp - 8]
call fcn.00412954
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x18], eax
mov byte [ebp - 0x14], 0x11
lea edx, [ebp - 0x30]
mov ecx, 3
mov eax, 0x50f2bc
call fcn.0050ce1c
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50f282
lea eax, [ebp - 0x34]
call fcn.0040669c
ret

Function at 0x50f4b8
Capabilities:
Get file size

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffdc
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x24], ebx
mov esi, ecx
mov ebx, edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x50f5e6
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebx], 0xffffffff
mov dword [esi], 0xffffffff
xor eax, eax
push ebp
push 0x50f579
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
call fcn.0050f0fc
test al, al
je 0x50f56f
push 0
push 0x80
push 3
push 0
push 1
push 0x80000000
mov eax, dword [ebp - 4]
call fcn.00406738
push eax
call sub.kernel32.dll_CreateFileW
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0xffffffff
jne 0x50f537
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x50f5d0
xor eax, eax
push ebp
push 0x50f568
push dword fs:[eax]
mov dword fs:[eax], esp
push ebx
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_GetFileSize
mov dword [esi], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50f56f
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_CloseHandle_1
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x50f5d0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50f5ed
lea eax, [ebp - 0x24]
call fcn.0040669c
ret
Function at 0x50f688
Capabilities:
Delete file

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffde0
push ebx
push esi
push edi
mov ebx, eax
xor eax, eax
push ebp
push 0x50f70f
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x1e]
xor ecx, ecx
mov edx, 0x1e
call fcn.00403968
lea eax, [ebp - 0x21e]
xor ecx, ecx
mov edx, 0x200
call fcn.00403968
lea eax, [ebp - 0x21e]
mov edx, ebx
call fcn.0040eb44
xor eax, eax
mov dword [ebp - 0x1e], eax
lea eax, [ebp - 0x21e]
mov dword [ebp - 0x16], eax
mov dword [ebp - 0x1a], 3
mov word [ebp - 0xe], 0x40
or word [ebp - 0xe], 0x10
or word [ebp - 0xe], 4
lea eax, [ebp - 0x1e]
push eax
call sub.shell32.dll_SHFileOperationW
test eax, eax
sete bl
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x50f71b
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
Function at 0x516248
Capabilities:
Hash data with md5

Disassembly:
push ebx
add esp, 0xffffffa8
mov ebx, eax
mov edx, esp
mov eax, ebx
mov ecx, 0x58
call fcn.0040356c
xor eax, eax
mov dword [esp], eax
xor eax, eax
mov dword [esp + 4], eax
mov dword [esp + 8], 0x67452301
mov dword [esp + 0xc], 0xefcdab89
mov dword [esp + 0x10], 0x98badcfe
mov dword [esp + 0x14], 0x10325476
mov edx, ebx
mov eax, esp
mov ecx, 0x58
call fcn.0040356c
add esp, 0x58
pop ebx
ret

Function at 0x516638
Capabilities:
Encode data using base64

Disassembly:
push ebx
push esi
push edi
add esp, 0xffffff88
mov dword [esp + 4], edx
mov dword [esp], eax
lea eax, [esp + 0x39]
xor ecx, ecx
mov edx, 0x3f
call fcn.00403968
lea edx, [esp + 0xc]
mov ecx, 0x2d
mov eax, dword [esp]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov dword [esp + 8], eax
cmp dword [esp + 8], 0
je 0x5167b9
mov edi, 1
xor esi, esi
jmp 0x5166fa
movzx eax, byte [esp + edi + 0xb]
movzx edx, al
shr edx, 2
and dl, 0x3f
movzx edx, dl
movzx edx, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [esp + esi + 0x39], dl
mov edx, eax
shl edx, 4
movzx eax, byte [esp + edi + 0xc]
shr eax, 4
or dl, al
and dl, 0x3f
movzx eax, dl
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [esp + esi + 0x3a], al
movzx edx, byte [esp + edi + 0xc]
add edx, edx
add edx, edx
movzx eax, byte [esp + edi + 0xd]
shr eax, 6
or dl, al
and dl, 0x3f
movzx eax, dl
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [esp + esi + 0x3b], al
movzx edx, byte [esp + edi + 0xd]
and dl, 0x3f
movzx eax, dl
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [esp + esi + 0x3c], al
add edi, 3
add esi, 4
mov eax, dword [esp + 8]
sub eax, 2
cmp edi, eax
jle 0x51667e
cmp edi, dword [esp + 8]
jg 0x51679f
movzx eax, byte [esp + edi + 0xb]
movzx edx, al
shr edx, 2
and dl, 0x3f
movzx edx, dl
movzx edx, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [esp + esi + 0x39], dl
cmp edi, dword [esp + 8]
jne 0x516755
mov edx, eax
shl edx, 4
and dl, 0x30
and dl, 0x3f
movzx eax, dl
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [esp + esi + 0x3a], al
mov byte [esp + esi + 0x3b], 0x3d
jmp 0x516797
mov edx, eax
shl edx, 4
and dl, 0x30
movzx eax, byte [esp + edi + 0xc]
shr eax, 4
and al, 0xf
or dl, al
and dl, 0x3f
movzx eax, dl
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [esp + esi + 0x3a], al
movzx edx, byte [esp + edi + 0xc]
add edx, edx
add edx, edx
and dl, 0x3c
and dl, 0x3f
movzx eax, dl
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [esp + esi + 0x3b], al
mov byte [esp + esi + 0x3c], 0x3d
add esi, 4
lea edx, [esp + 0x39]
mov ecx, esi
mov eax, dword [esp + 4]
mov ebx, dword [eax]
call dword [ebx + 0x10]
cmp dword [esp + 8], 0x2d
jge 0x516655
add esp, 0x78
pop edi
pop esi
pop ebx
ret