Function at 0x403860
Capabilities:
Encode data using xor

Disassembly:
push edx
push ebx
push ebp
mov ebp, esp
call 0xa8e14d54
add cl, byte [ebp]
je 0x40387a
adc al, dl
inc eax
push ds
push ebx
push esi
cmp eax, ecx
push edi
jge 0x40c67a
add byte [eax], al
mov esi, dword [ebp + 8]
xor ebx, ebx
mov eax, dword [esi]
mov dword [esi + 0xc], ebx
cmp eax, ebx
jnp 0x4038e8
adc byte [edx + 0x3908249e], ch
xchg edx, eax
mov dword [esi + 0x8a6], ebx
mov dword [esi + 0x828], ebx
mov dword [esi - 0x6b], ebx
je 0x40383d
push eax
call 0xe2407862
sub dword [edi], ecx
mov ecx, dword [0x41534c]
push ebx
push ebx
push ecx
push esi
call fcn.00404f60
mov edx, dword [esi]
mov eax, dword [0x354154e8]
push edx
push ebx
mov ecx, dword [eax - 0x51]
xor eax, 0x488b5352
scasd eax, dword es:[edi]
lea edi, [esi + 4]
push 0xffffffffffffffa9
jge 0x403923
call 0xa165f0
cmp eax, ebx
je 0x4038e3
push eax
push 0x3ee80b
call fcn.00401e40
add esp, 8
mov eax, dword [ecx]
push 1
push 8
push edx
call fcn.00408db0
cmp eax, ebx
je 0x4038e8
or byte [edx - 0x18], dl
rcl dword [eax + eax], 0x3b
ret
push eax
push str.socket_nonblock
call 0xffa51e40
xor esi, 0x6a
pop ecx
insb byte es:[edi], dx
add ah, byte [ebp]
cmp eax, ebx
je 0x4038fe
push eax
mov eax, dword [edi]
push 0x40
push eax
mov ecx, 0x2954cf
cmp eax, ebx
je 0x4038bf
cmp eax, 0xa1011187
inc ebx
push cs
mov eax, dword [0xcfe81468]
add al, ch
or cl, byte [ebp - 1]
inc dword [ebx + 0xd8b08c4]
insb byte es:[edi], dx
add al, byte [ecx]
mov esp, edi
fisubr dword [eax - 0x80]
add ah, bl
add byte [edx - 0x18], dl
outsb dx, byte [esi]
push esp
add byte [eax], al
cmp eax, ebx
je 0x40395b
call 0xb2839f7
dec ebp
invalid
cmp eax, 0x11987
je 0x40395b
push eax
push str.socket_receive_buffer
invalid
call 0x4069ee
test al, 0xa0
or eax, dword [ecx + 0xc]
mov dword [0x410bbd], edx
mov edx, dword [edi]
mov dword [esi + 0x830], eax
mov eax, dword [0x410ba4]
xor dword [esi + 0x4934], eax
mov ecx, dword [0xbb17fc]
push ecx
push edx
das
mov ch, 0x2e
add byte [eax], al
mov edx, dword [eax - 0x7bf0247b]
enter 0, 0xffffffffffffffc2
cmp ebx, 0x940975f1
je 0x403a26
aam 0xfb
mov ah, 0x23
or eax, dword [eax]
je 0x403984
mov edx, dword [0x4117f8]
rol dword [edi], 1
lea ecx, [ebp - 0x14]
mov dword [ebp - 0x10], 0x60000001
push ecx
adc dh, byte [edi]
inc ebp
clc
call 0x8bba00
mov eax, dword [edi]
push eax
call fcn.00406810
mov edi, dword [0x4102c4]
mov eax, dword [0x4102b8]
inc edi
mov eax, dword [edi + 0xaf98340]
sbb dword [0x410279], edi
mov dword [0x4102b8], eax
jle 0x403a0f
mov edx, dword [0x4340c0c8]
push str._nTest_aborted_after_10_failures_n_n
add edx, 0x40
push edx
mov ch, 0x15
add cl, 0x40
add byte [ebx + 0x68], dl
cwde
rol byte [eax], cl
call 0x58401e40
add dword [edi + 0x46c75610], 0xffffffd1
mov ebp, 0xe8003500
inc esp
inc byte [ebx + 0x37]
push esi
mov dword [esi - 0x2f], 0x3500bd
call 0x37843860
or eax, 4
pop edi
pop esi
pop ebx
mov esp, ebp
ret
mov eax, 1
mov dword [esi + 0x1b], 0xd3b00
mov dword [esi - 0x41], eax
mov ebx, dword [ebx - 8]
pop ss
fld qword [eax]
lea ecx, [ebp - 0x14]
mov dword [ebp - 0x10], eax
mov ebx, dword [ecx]
push ecx
push edx
sbb ax, 0xf484
add al, 0xae
mov dword [ebp - 8], eax
mov dword [ebp - 4], esi
call 0x11760c0
pop edi
sahf
pop ebx
mov esp, ebp
pop ebp
fadd st(7)
inc esi
or byte [edx], al
add byte [eax], al
add byte [ebx + 0x4102a814], cl
add byte [edx + 0x56], al
inc eax
adc eax, 0x41a707
call fcn.00401ea0
add esp, 0x2a
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
sbb ebx, dword [ebx + 0x21201f1e]
and byte [ecx], ah
and ah, byte [ebx]
and al, 0x25
daa
sub byte [ecx], ch
sub ch, byte [ebx]
sub al, 0x2d
das
xor byte [ecx], dh
xor dh, byte [ebx]
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc eax
inc ecx
inc edx
inc ebx
inc esp
inc ebp
inc esi
inc edi
dec eax
dec ecx
dec edx
dec ebx
dec esp
dec ebp
dec esi
dec edi
push eax
push ecx
push edx
push ebx
push esp
push ebp
push esi
push edi
pop eax
pop ecx
pop edx
popal
bound esp, qword [ebx + 0x64]
push 0x6a69
imul ebp, dword [ebp + ebp*2 + 0x6e], 0x6f
jo 0x40c7b4
jb 0x40c7b8
je 0x40c7bc
jbe 0x40c7c0
js 0x40c7c4
jp 0x40c77d
xor dword [edx], esi
xor esi, dword [esi + 0x39383736]
sub ebp, dword [edi]
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
rol byte [eax], 0
invalid
add byte [eax], al
add byte [eax], al
add byte [edx - 0x31], ah
add byte [eax], al
or al, 0xc0
add byte [eax], al
in al, 0xc7
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
xchg esi, eax
iretd
movsb byte es:[edi], byte [esi]
iretd
mov al, byte [0x780000c1]
leave
js 0x40c787
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
invalid