Function at 0x40c9f0
Capabilities:
Send data
Send data on socket

Disassembly:
push 0xffffffffffffffff
push 0x43af28
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x40
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x60]
mov esi, ecx
xor eax, eax
xor ecx, ecx
mov ax, word [edi + 6]
mov cx, word [edi + 4]
push eax
push ecx
push str.Receiving_cursor_shape_update__cursor__dx_d_n
push 6
push 0x44a3a0
call fcn.004063e0
xor ecx, ecx
add esp, 0x14
mov cx, word [edi + 4]
lea eax, [ecx + 7]
cdq
and edx, 7
add eax, edx
xor edx, edx
mov dx, word [edi + 6]
sar eax, 3
mov ebx, edx
mov dword [esp + 0x30], eax
imul ebx, eax
xor eax, eax
push ebx
mov al, byte [esi + 0x4418]
mov dword [esp + 0x40], ebx
mov ebp, eax
shr ebp, 3
imul ebp, ecx
mov ecx, esi
imul ebp, edx
call fcn.0040bb90
mov ecx, esi
call fcn.0040d3b0
xor eax, eax
xor ecx, ecx
mov ax, word [edi + 6]
mov cx, word [edi + 4]
imul eax, ecx
test eax, eax
je 0x40d0b9
mov cl, byte [esi + 0x3d81]
test cl, cl
je 0x40ca39
cmp dword [edi + 8], 0xffffff10
jne 0x40ca1b
lea ebp, [ebx + ebx + 6]
jmp 0x40ca1d
add ebp, ebx
push ebp
mov ecx, esi
call fcn.0040bb90
mov edx, dword [esi + 0x1c4]
push ebp
push edx
mov ecx, esi
call fcn.0040b880
jmp 0x40d0b9
shl eax, 2
push eax
call fcn.0043060b
mov dword [esi + 0x190], eax
mov eax, dword [edi + 8]
add esp, 4
cmp eax, 0xffffff10
jne 0x40cbd2
lea ecx, [esp + 0x44]
push 6
push ecx
mov ecx, esi
call fcn.0040b880
mov edx, dword [esp + 0x46]
mov eax, dword [esp + 0x45]
mov ecx, dword [esp + 0x44]
and edx, 0xff
or dh, 2
and eax, 0xff
shl edx, 8
or edx, eax
and ecx, 0xff
shl edx, 8
mov eax, dword [esp + 0x48]
or edx, ecx
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x49]
mov ecx, dword [esp + 0x47]
and edx, 0xff
or dh, 2
and eax, 0xff
shl edx, 8
or edx, eax
and ecx, 0xff
shl edx, 8
or edx, ecx
push ebx
mov dword [esp + 0x38], edx
mov edx, dword [esi + 0x1c4]
push edx
mov ecx, esi
call fcn.0040b880
xor eax, eax
cmp word [edi + 6], ax
mov dword [esp + 0x1c], eax
jbe 0x40ce60
mov dword [esp + 0x60], eax
mov cx, word [edi + 4]
xor ebp, ebp
and ecx, 0xfff8
mov dword [esp + 0x20], ebp
test cx, cx
jbe 0x40cb3f
mov edx, dword [esi + 0x1c4]
mov ecx, dword [esp + 0x60]
add edx, ecx
mov ecx, 7
movsx edx, byte [edx + ebp]
mov ebx, edx
mov ebp, dword [esi + 0x190]
sar ebx, cl
and ebx, 1
inc eax
dec ecx
mov ebx, dword [esp + ebx*4 + 0x34]
mov dword [ebp + eax*4 - 4], ebx
jns 0x40cb10
mov ebp, dword [esp + 0x20]
xor ecx, ecx
mov cx, word [edi + 4]
inc ebp
shr ecx, 3
cmp ebp, ecx
mov dword [esp + 0x20], ebp
jl 0x40cafb
xor ecx, ecx
mov edx, 7
mov cx, word [edi + 4]
and ecx, 0x80000007
jns 0x40cb57
dec ecx
or ecx, 0xfffffff8
inc ecx
mov ebx, 8
sub ebx, ecx
cmp ebx, 7
jg 0x40cba8
mov ecx, dword [esi + 0x1c4]
mov ebx, dword [esp + 0x60]
add ecx, ebx
movsx ebx, byte [ecx + ebp]
mov cl, dl
sar ebx, cl
mov ecx, dword [esi + 0x190]
and ebx, 1
inc eax
dec edx
mov ebx, dword [esp + ebx*4 + 0x34]
mov dword [ecx + eax*4 - 4], ebx
xor ecx, ecx
mov cx, word [edi + 4]
and ecx, 0x80000007
jns 0x40cb9d
dec ecx
or ecx, 0xfffffff8
inc ecx
mov ebx, 8
sub ebx, ecx
cmp edx, ebx
jge 0x40cb63
mov edx, dword [esp + 0x30]
mov ebp, dword [esp + 0x60]
mov ecx, dword [esp + 0x1c]
add ebp, edx
xor edx, edx
inc ecx
mov dx, word [edi + 6]
mov dword [esp + 0x1c], ecx
cmp ecx, edx
mov dword [esp + 0x60], ebp
jl 0x40cae6
jmp 0x40ce60
push ebp
mov ecx, esi
call fcn.0040bb90
mov eax, dword [esi + 0x1c4]
push ebp
push eax
mov ecx, esi
call fcn.0040b880
mov cl, byte [esi + 0x4422]
mov al, byte [esi + 0x4423]
mov byte [esp + 0x13], cl
mov cx, word [esi + 0x441e]
mov word [esp + 0x20], cx
mov cx, word [esi + 0x4420]
mov word [esp + 0x28], cx
xor ecx, ecx
mov cx, word [edi + 6]
xor ebx, ebx
mov bx, word [edi + 4]
mov dx, word [esi + 0x441c]
imul ecx, ebx
mov ebp, dword [esi + 0x1c4]
mov byte [esp + 0x12], al
mov al, byte [esi + 0x4424]
mov dword [esp + 0x34], edx
mov byte [esp + 0x11], al
xor eax, eax
test ecx, ecx
mov dword [esp + 0x1c], eax
jle 0x40ce60
jmp 0x40cc53
mov edx, dword [esp + 0x34]
mov cl, byte [esi + 0x4418]
mov ebx, dword [esp + 0x28]
cmp cl, 8
je 0x40cdac
cmp cl, 0x10
je 0x40cd12
cmp cl, 0x20
jne 0x40ce44
mov eax, dword [esp + 0x20]
mov edi, dword [ebp]
mov cl, byte [esp + 0x11]
and eax, 0xffff
mov dword [esp + 0x14], eax
mov eax, edx
mov edx, edi
and ebx, 0xffff
shr edx, cl
and eax, 0xffff
mov cl, byte [esp + 0x12]
mov dword [esp + 0x18], eax
and edx, ebx
mov eax, edx
shl eax, 8
sub eax, edx
xor edx, edx
div ebx
mov edx, edi
shr edx, cl
mov ecx, dword [esp + 0x14]
and edx, ecx
mov ebx, eax
mov eax, edx
shl eax, 8
sub eax, edx
xor edx, edx
div ecx
mov cl, byte [esp + 0x13]
and ebx, 0xff
shr edi, cl
mov ecx, dword [esp + 0x18]
or bh, 2
shl ebx, 8
xor edx, edx
and edi, ecx
and eax, 0xff
or ebx, eax
mov eax, edi
shl eax, 8
sub eax, edi
div ecx
mov edx, dword [esi + 0x190]
shl ebx, 8
and eax, 0xff
or ebx, eax
mov eax, dword [esp + 0x1c]
add ebp, 4
mov dword [edx + eax*4], ebx
jmp 0x40ce40
mov eax, dword [esp + 0x20]
mov cl, byte [esp + 0x11]
xor edi, edi
and eax, 0xffff
mov di, word [ebp]
mov dword [esp + 0x14], eax
mov eax, edx
mov edx, edi
shr edx, cl
and ebx, 0xffff
and eax, 0xffff
mov dword [esp + 0x18], eax
mov cl, byte [esp + 0x12]
and edx, ebx
mov eax, edx
shl eax, 8
sub eax, edx
cdq
idiv ebx
mov edx, edi
shr edx, cl
mov ecx, dword [esp + 0x14]
and edx, ecx
mov ebx, eax
mov eax, edx
shl eax, 8
sub eax, edx
and ebx, 0xff
cdq
idiv ecx
mov cl, byte [esp + 0x13]
or bh, 2
shr edi, cl
mov ecx, dword [esp + 0x18]
shl ebx, 8
and edi, ecx
and eax, 0xff
or ebx, eax
mov eax, edi
shl eax, 8
sub eax, edi
cdq
idiv ecx
mov ecx, dword [esi + 0x190]
shl ebx, 8
and eax, 0xff
or ebx, eax
mov eax, dword [esp + 0x1c]
add ebp, 2
mov dword [ecx + eax*4], ebx
jmp 0x40ce40
xor eax, eax
mov cl, byte [esp + 0x11]
mov al, byte [ebp]
and ebx, 0xffff
mov edi, eax
mov eax, dword [esp + 0x20]
and eax, 0xffff
mov dword [esp + 0x14], eax
mov eax, edx
mov edx, edi
and eax, 0xffff
shr edx, cl
mov dword [esp + 0x18], eax
mov cl, byte [esp + 0x12]
and edx, ebx
mov eax, edx
shl eax, 8
sub eax, edx
cdq
idiv ebx
mov edx, edi
shr edx, cl
mov ecx, dword [esp + 0x14]
and edx, ecx
mov ebx, eax
mov eax, edx
shl eax, 8
sub eax, edx
and ebx, 0xff
cdq
idiv ecx
mov cl, byte [esp + 0x13]
or bh, 2
shr edi, cl
mov ecx, dword [esp + 0x18]
shl ebx, 8
and edi, ecx
and eax, 0xff
or ebx, eax
mov eax, edi
shl eax, 8
sub eax, edi
cdq
idiv ecx
mov ecx, dword [esi + 0x190]
shl ebx, 8
and eax, 0xff
or ebx, eax
mov eax, dword [esp + 0x1c]
inc ebp
mov dword [ecx + eax*4], ebx
mov edi, dword [esp + 0x60]
xor edx, edx
xor ecx, ecx
mov dx, word [edi + 6]
mov cx, word [edi + 4]
imul edx, ecx
inc eax
cmp eax, edx
mov dword [esp + 0x1c], eax
jl 0x40cc4f
mov edx, dword [esp + 0x3c]
mov eax, dword [esi + 0x1c4]
push edx
push eax
mov ecx, esi
call fcn.0040b880
xor ecx, ecx
xor edx, edx
mov cx, word [edi + 6]
mov dx, word [edi + 4]
imul ecx, edx
push ecx
call fcn.0043060b
mov dword [esi + 0x194], eax
xor eax, eax
add esp, 4
cmp word [edi + 6], ax
mov dword [esp + 0x28], eax
jbe 0x40cf89
mov dword [esp + 0x60], eax
mov cx, word [edi + 4]
xor ebp, ebp
and ecx, 0xfff8
mov dword [esp + 0x20], ebp
test cx, cx
jbe 0x40cefb
mov edx, dword [esi + 0x1c4]
mov ecx, dword [esp + 0x60]
add edx, ecx
movsx edx, byte [edx + ebp]
mov ebp, 7
mov ebx, edx
mov ecx, ebp
sar ebx, cl
mov ecx, dword [esi + 0x194]
and bl, 1
mov byte [eax + ecx], bl
inc eax
dec ebp
jns 0x40cecf
mov ebp, dword [esp + 0x20]
xor edx, edx
mov dx, word [edi + 4]
inc ebp
shr edx, 3
cmp ebp, edx
mov dword [esp + 0x20], ebp
jl 0x40ceba
xor ecx, ecx
mov edx, 7
mov cx, word [edi + 4]
and ecx, 0x80000007
jns 0x40cf13
dec ecx
or ecx, 0xfffffff8
inc ecx
mov ebx, 8
sub ebx, ecx
cmp ebx, 7
jg 0x40cf64
jmp 0x40cf25
mov ebp, dword [esp + 0x20]
mov ecx, dword [esi + 0x1c4]
mov ebx, dword [esp + 0x60]
add ecx, ebx
mov bl, byte [ecx + ebp]
mov cl, dl
sar bl, cl
mov ecx, dword [esi + 0x194]
and bl, 1
mov byte [eax + ecx], bl
xor ecx, ecx
mov cx, word [edi + 4]
inc eax
dec edx
and ecx, 0x80000007
jns 0x40cf59
dec ecx
or ecx, 0xfffffff8
inc ecx
mov ebx, 8
sub ebx, ecx
cmp edx, ebx
jge 0x40cf21
mov edx, dword [esp + 0x30]
mov ebp, dword [esp + 0x60]
mov ecx, dword [esp + 0x28]
add ebp, edx
xor edx, edx
inc ecx
mov dx, word [edi + 6]
mov dword [esp + 0x28], ecx
cmp ecx, edx
mov dword [esp + 0x60], ebp
jl 0x40cea5
lea eax, [esi + 0x25c]
lea ecx, [esp + 0x40]
push eax
call fcn.00408cb0
xor ecx, ecx
xor edx, edx
mov cx, word [edi + 4]
xor eax, eax
mov dword [esi + 0x1a0], ecx
mov dx, word [edi + 6]
mov dword [esi + 0x1a4], edx
mov ax, word [edi]
cmp eax, ecx
mov dword [esp + 0x58], 0
jl 0x40cfc5
lea eax, [ecx - 1]
mov ecx, dword [esi + 0x1a4]
mov dword [esi + 0x198], eax
xor eax, eax
mov ax, word [edi + 2]
cmp eax, ecx
jl 0x40cfde
lea eax, [ecx - 1]
mov dword [esi + 0x19c], eax
lea eax, [esi + 0x1e4]
push eax
lea ecx, [esp + 0x64]
call fcn.00408cb0
mov ecx, dword [esi + 0x3a1c]
mov edx, dword [esi + 0x3a20]
push ecx
push edx
lea ecx, [esp + 0x28]
mov byte [esp + 0x60], 1
call fcn.00408d20
mov eax, dword [esi + 0x3a24]
mov ecx, dword [esi + 0x3a20]
push eax
push ecx
lea ecx, [esp + 0x30]
mov byte [esp + 0x60], 2
call fcn.00408d60
mov edx, dword [esi + 0x3a20]
push edx
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov ecx, dword [esi + 0x1a0]
mov edx, dword [esi + 0x3a20]
mov dword [esi + 0x188], eax
mov eax, dword [esi + 0x1a4]
push eax
push ecx
push edx
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
lea ecx, [esp + 0x28]
mov dword [esi + 0x18c], eax
call fcn.00408d90
lea ecx, [esp + 0x20]
mov byte [esp + 0x58], 1
call fcn.00408d40
lea ecx, [esp + 0x60]
mov byte [esp + 0x58], 0
call fcn.00408cd0
mov ecx, esi
call fcn.0040d4d0
mov ecx, esi
call fcn.0040d770
lea ecx, [esp + 0x40]
mov byte [esi + 0x1c0], 0
mov byte [esi + 0x1c1], 0
mov byte [esi + 0x184], 1
mov dword [esp + 0x58], 0xffffffff
call fcn.00408cd0
mov ecx, dword [esp + 0x50]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x4c
ret 4