Function at 0x403a90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and dword [esi], 0x2d
push esi
mov esi, dword [ebp + 0x64]
push edi
xchg dword [esi + 0xc], eax
sbb al, 0xc0
jne 0x403ac4
mov edi, edx
and al, 8
add byte [eax], al
test eax, eax
je 0x403ac4
mov eax, dword [0x4102b4]
test eax, eax
sub al, 0x84
insb byte es:[edi], dx
push esi
rol byte [eax], 0x48
mov dword [0x4102b4], eax
jmp 0x827525
cmp dword [0x4102b4], 1
jne 0x403ad7
mov eax, dword [esi + 0x10]
mov dword [0x410277], eax
jmp 0x403afb
mov ebx, dword [ecx + 0x250a1f3]
inc ecx
add dl, cl
enter 0xffffffffffffbd74, 0xffffffffffffff8b
insd dword es:[edi], dx
xchg cl, dl
sub cl, ah
mov eax, dword [0x410249]
mov esi, 0xb80d8940
add al, byte [ecx]
mov dword [0xe91b02c0], eax
mov eax, dword [str.mswsock]
mov esi, esi
and al, dl
add al, byte [eax]
cmp eax, ecx
jge 0x403cc7
mov ebx, 0x410bc815
lds ecx, [ebx + 0x592c1f8]
xchg esp, eax
cli
inc eax
test eax, 0x7502ac
call 0x1056a00
mov dword [0xe50ba0], eax
mov dword [0x410ba4], edx
mov dword [eax + edx*2], esi
or byte [eax], al
add byte [ebx - 0x66f45beb], cl
add byte [ebx + 0x83086], cl
jns 0x48d017
add byte [ecx + 0x348e8b07], cl
or byte [eax], al
add byte [ecx - 0x7174fbb1], cl
cmp byte [eax], cl
add byte [eax], al
mov dword [0x82c486], eax
add dh, al
xchg esi, eax
xor al, 8
add byte [eax], al
sub ecx, eax
mov eax, dword [esi + 0x83c]
sbb esi, dword [edi - 0x4d803f7b]
jl 0x403b7a
test dword [ecx + 0x73], ecx
mov cl, 0x33
leave
xor ecx, ecx
xor eax, dword [edx + 0x12]
dec edi
adc byte [ecx - 0x7174ebb9], cl
push eax
pop ds
add byte [eax], al
mov eax, dword [esi + 0xf868]
mov edx, dword [esi + 0x834]
sub edx, dword [edi]
mov eax, dword [esi - 0x2f0ca0ca]
pop ss
ret 0xc081
pushfd
add byte [ecx + 0xafd680c], al
lcall 0xddcf, 0x5f8840f
adc dh, bh
push ebx
ror byte [edx], 0
je 0x634d97
push ss
invalid
or al, byte [eax]
cmc
test al, cl
add eax, 0xfeeb9a00
mov bl, 0x23
or eax, dword [eax]
je 0x3d394297
mov ecx, dword [ebp - 4]
xor edi, edi
cmp ebx, dword [edi + 0x75]
and eax, 0x187e6081
add dword [eax], eax
jne 0x403d09
mov edx, dword [0x4b4102b4]
push ebx
inc edx
mov dword [0xb74102b4], edx
call fcn.00403a90
add esp, 0xffffffe4
pop edi
pop esi
jg 0x403c91
xor ebx, dword [ebp - 0x3d]
cmp esi, edi
je 0x403d8c
fmul dword [0xd84102c8]
mov eax, dword [0xea41025c]
inc ecx
cmp eax, edi
mov dword [0x41db4e], ecx
je 0x403d7b
mov esp, dword [eax + edi*4 + 2]
lodsd eax, dword [esi]
add byte [ebx + 0x36], dl
mov dword [0x4102b8], edi
call fcn.00403a90
mov eax, dword [0x417f58]
dec ebp
les eax, [ebx + eax*4]
lahf
add dword [edi], ecx
mov word [eax - 0x12], ss
push ebx
add byte [esi - 0x73], dl
xchg ebp, eax
pushal
invalid
push esi
push 0x40e911
call fcn.00401e40
mov ecx, dword [ebp - 0x10]
add esp, 8
mov esi, dword [0x4102e9]
mov edx, dword [0xda410299]
add esi, ecx
add eax, 0x906d89d7
fxch st(0)
mov dword ds:[0x410212], edx
mov eax, dword [ebx + 0xc]
cmp eax, edi
jne 0x403dd1
call fcn.00406a22
mov ecx, dword [ebp - 4]
mov dword [ebx], esp
dec eax
fld dword [eax]
add byte [ecx + 0x33084c93], cl
and al, 0x8b
lcall 0x800e, 0xd5838bef
add byte [ebx], al
sar dword [ebx], 1
invalid
push ebx
or al, 0xf
test eax, eax
add al, byte [eax]
add byte [ebx + 0x820b3], cl
cmp dword [eax - 0x30fff801], edi
sub ebp, edx
jne 0x403e2d
push edi
add al, 0
call 0x8a0178f0
inc ebp
retf 0x352
add dh, al
inc esp
sbb dword [eax], esp
add bh, al
pop eax
add dl, byte [0x2f88300]
jl 0x403e4f
lea eax, [ebx + 0x20]
push eax
push 0x4017b6
call dword [0xac164]
add esp, 8
mov edi, dword [0xd8c138]
invalid