Function at 0x258c0
Capabilities:
Encode data using xor

Disassembly:
insd dword es:[edi], dx
popal
jo fcn.000256f5
push esi
add al, byte [eax]
pop es
pop es
push esp
inc edx
imul esi, dword [ebp + ebp*2 + 0x61], 0x2568470
add byte [eax + 0x53], dh
add al, byte [eax]
add byte [eax], al
or byte [edi + 0x72], al
popal
jo 0x2577d
imul esp, dword [ebx + 0x73], 0xc08b0000
push 0x257
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [edi + edx*2 + 2], ch
add byte [eax], bl
add byte [eax], al
add byte [esp + edx*2], bh
add al, byte [eax]
lock xor dword [ecx], eax
add ah, bh
xor dword [ecx], eax
add byte [eax], al
xor al, byte [ecx]
add byte [edx + esi], al
add dword [eax], eax
clc
xor dword [ecx], eax
add byte [eax + 0x2f], ah
add dword [eax], eax
je 0x25791
add dword [eax], eax
enter 0x2cc, 0
clc
int3
add byte [edx], cl
push esp
dec ecx
arpl word [edi + 0x6e], bp
dec ecx
insd dword es:[edi], dx
popal
nop
les edx, [edi + 2]
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], dh
pop eax
add al, byte [eax]
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
and al, 0x58
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax + ebx*2], ah
add al, byte [eax]
sub al, 0
add byte [eax], al
mov al, 0x52
add al, byte [eax]
lock xor dword [ecx], eax
add ah, bh
xor dword [ecx], eax
add byte [eax], al
xor al, byte [ecx]
add byte [edx + esi], al
add dword [eax], eax
clc
xor dword [ecx], eax
add byte [eax + 0x2f], ah
add dword [eax], eax
je 0x257ed
add dword [eax], eax
int 2
add byte [esi + ebp*8], bh
add dword [eax], eax
xor byte [ebp - 0x326bfffe], cl
add al, byte [eax]
adc ch, cl
add al, byte [eax]
ror byte [edx + eax + 0x2cdf400], 0
jl 0x2576b
add al, byte [eax]
xor al, 0xce
add al, byte [eax]
pushal
into
add al, byte [eax]
ror byte [esi - 0x713bfffe], 2
mov es, word [edx]
add byte [esi + ecx*8 + 2], dh
add byte [edi + ecx*4 + 2], al
add al, bh
rol byte [edx], 1
add byte [eax + 0x1000028f], ch
rol dword [edx], 1
add byte [ecx + edx*8], dl
add al, byte [eax]
mov esp, 0xc800028f
mov es, word [edx]
add byte [eax - 0x71], dl
add al, byte [eax]
mov ah, 0xcf
add al, byte [eax]
sub al, 0xd1
add al, byte [eax]
pop eax
rol dword [edx], 1
add byte [ecx + edx*8 + 2], ch
add byte [0x6f634954], al
outsb dx, byte [esi]
mov eax, eax
xor byte [eax + 2], bl
add byte [edi], al
add eax, 0x6f634954
outsb dx, byte [esi]
les edx, [edi + 2]
add byte [eax + 0x53], dh
add al, byte [eax]
add byte [eax], al
or byte [edi + 0x72], al
popal
jo 0x258af
imul esp, dword [ebx + 0x73], 0xc0850000
add byte [ebp + 0x3b0e74c0], al
add eax, 0xbfe684
je 0x2585e
cmp eax, dword [0xbfe684]
je 0x2585e
push eax
call sub.gdi32.dll_DeleteObject
ret
jae 0x25921
jne 0x25926
arpl word [ebp + 0x4d], sp
popal
outsb dx, byte [esi]
popal
jb 0x2584b
inc eax
add byte [ecx + 0x31c289d1], cl
mov ecx, edx
mov edx, eax
xor eax, eax
rol ax, 5
xor al, byte [edx]
inc edx
dec ecx
rol ax, 5
xor al, byte [edx]
inc edx
dec ecx
jne 0x258c6
ret
or al, 0xff
inc dword [ebx + ebx*8 - 0x3974f882]
jle 0x2592f
mov eax, esi
call fcn.0001331c
pop esi
pop ebx
ret