Function at 0x409860
Capabilities:
Encode data using xor

Disassembly:
nop
nop
push ebp
mov ebp, esp
jecxz 0x4098bb
mov esi, dword [ebp + 0x10]
push edi
mov edi, esp
pop edx
xor ebx, ebx
mov ebx, ebx
or byte [ebp + 0x57501045], cl
push ecx
mov dword [ebp + 0x24], esi
call 0x40c950
mov ebp, dword [eax + 0x10]
add edi, ecx
sub esi, ecx
push 0x2bf90310
int1
add ebx, ecx
test eax, eax
jne 0x409890
test esi, esi
ja 0x40986e
mov ecx, dword [ebp - 0x29]
jo 0x40985e
sub dword [edx], eax
mov dword [ecx], ebx
out 0xac, al
fistp dword [ebp - 0x3e]
fld dword [eax]
push ds
mov ebp, esp
and dword [eax], 0x3c
mov eax, dword [0x9908dc]
push ebx
jp 0x409880
push esi
cmp eax, 0xffffffd5
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 0x22], edx
mov dword [ebp - 0x75], edx
jge 0x4098d5
mov edi, dword [ebp + 0x17]
mov ecx, edx
lodsb al, byte [esi]
mov ecx, dword [ebp + 0x3c]
pop es
push ecx
call fcn.00409f11
add esp, 8
lcall 0xc35d, 0xd15bac5e
mov ecx, dword [ebp + 0x10]
test ecx, 0x72730000
je 0x409d10
mov esi, ecx
invalid
add byte [ebx - 0x3808f75c], cl
add byte [eax], al
ljmp 0xbf46:0xf76f1d00
and al, 0x60
mov esi, 0xc7c33b10
inc ebp
in al, dx
add dword [eax], eax
dec ecx
pop ss
mov dword [eax - 0x52], esp
jne 0x409d3f
push ebx
push 0x9941018c
push 1
call 0xf4a940
add esp, 0xc
cmp eax, ebx
mov dword [0xf80648], eax
je 0x409dc6
inc esp
dec ebp
or al, 0x8d
push ebp
loopne 0x409cf7
mov edi, dword [eax]
movsd dword es:[edi], dword [esi]
push edx
push ecx
call eax
cmp eax, ebx
jne 0x409d72
mov byte [ebp + 0xc], dl
push 0x34
push edx
call 0xd49ea0
lea ecx, [esi + 0x47]
mov bh, 0xc4
inc edx
or ecx, eax
mov eax, dword [esi + 4]
or eax, 0xc0100000
jae 0x409d93
or byte [ecx - 0x3808fbba], cl
add byte [eax], al
and byte [eax], al
test edi, 0x200000
cmovno eax, dword [ecx - 0x8831400]
jg 0x409d85
inc ecx
add dword [eax], 0x7ff77cec
add al, 0
add byte [edx], al
add byte [eax + edi*2 - 0x75], dh
inc esp
adc al, 0xc7
add byte [eax], al
add al, byte [eax]
je 0x409dff
mov eax, dword [esp + edx - 0x39]
inc ebp
in al, dx
add al, byte [eax]
add byte [eax], al
mov dword [eax + esi*8 + 0x410616a1], eax
add byte [ebx], bh
pop es
jne 0x409db6
invalid
push ebx
push 0x7e013a
push 1
xor dl, byte [esi - 0x1dcbff02]
jns 0x409d79
cmp edx, dword [0x410648a3]
add byte [edx + ebx - 0x73], dh
das
lea ebp, [edi]
dec ecx
lea edx, [ebp + 0x6c]
push ecx
mov esi, esp
adc byte [edx + 0x51], dl
call eax
jmp 0x409dda
pop edx
imul edi, edi, 0x15
dec esp
rol byte [eax], 0xeb
sub dword [edx + 1], 0xc04c1518
inc eax
add bl, ch
add al, 0x3b
ret
cmp eax, ebx
jne 0x409dff
and dword [ebp + 0xc], edx
and dh, 0x52
call 0x418db0
mov ecx, eax
xchg ecx, eax
add esp, 8
xchg eax, ecx
mov eax, esi
add al, 0xd
add byte [eax], al
and byte [eax], al
mov dword [esi + 8], ecx
sbb al, 0x46
add al, 0x91
xchg ecx, eax
pop ebp
adc esi, dword [edi + ebp - 0x5f]
test byte [esi], al
mov esi, 0x74c33b00
pop esi
mov dword [esi - 0x10], edi
mov eax, dword [0x41ca48]
cmp eax, ebx
inc ebx
pushal
in al, dx
sti
add byte [eax], al
add dh, cl
mov ecx, 0x16e6853
inc ecx
add byte [edx + 0x65], ch
or dl, byte [ebx]
or eax, dword [eax]
add byte [ebx - 0x68c4f33c], al
les ecx, [ebx + edi]
xchg edi, eax
mov dword [0x410648], eax
je 0x409e2e
lea ecx, [ebp - 0x14]
lea edx, [ebp - 0x20]
push ecx
stosd dword es:[edi], eax
dec ebp
lcall 0xc33b, 0xd0ff5152
jne 0x409e7a
mov edx, dword [ebp + 0xc]
push ebx
push edx
call 0xe7409eb6
mov ecx, dword [esi + 8]
add esp, 8
or ecx, eax
sbb al, byte [esi + 4]
leave
add byte [eax], al
xor edi, ebp
mov dword [esi + 8], ecx
mov dword [esi + 4], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
inc ecx
push 1
xor edx, dword [0x40c0ce]
jmp 0x409e4b