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

Disassembly:
sub esp, 0x82c
mov eax, dword [esp + 0x830]
mov ecx, dword [eax + 0x84]
mov eax, dword [0x798c20]
push ebx
push ebp
push esi
push edi
mov edi, 5
xor ebp, ebp
test eax, eax
mov byte [esp + 0x38], 3
mov dword [esp + 0x39], ecx
mov dword [esp + 0x838], edi
jle 0x66bdc6
mov ebx, 0x798b08
push ebp
lea edx, [esp + 0x28]
push str.localip_d
push edx
call fcn.006864ed
lea eax, [esp + 0x30]
add esp, 0xc
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x66bd00
sub eax, edx
mov edx, dword [esp + 0x838]
inc eax
mov ecx, 0x800
sub ecx, edx
cmp eax, ecx
cmovg eax, ecx
test eax, eax
je 0x66bd4e
mov ecx, eax
lea edi, [esp + edx + 0x38]
mov edx, ecx
shr ecx, 2
lea esi, [esp + 0x24]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x838]
add ecx, eax
mov dword [esp + 0x838], ecx
mov byte [esp + ecx + 0x37], 0
mov eax, dword [ebx]
push eax
call sub.WSOCK32.dll_inet_ntoa
mov ecx, eax
lea edi, [ecx + 1]
jmp 0x66bd60
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x66bd60
sub ecx, edi
mov edi, dword [esp + 0x838]
lea edx, [ecx + 1]
mov ecx, 0x800
sub ecx, edi
cmp edx, ecx
cmovg edx, ecx
test edx, edx
je 0x66bdb5
mov esi, eax
mov ecx, edx
mov eax, ecx
shr ecx, 2
lea edi, [esp + edi + 0x38]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x838]
add eax, edx
mov dword [esp + 0x838], eax
mov byte [esp + eax + 0x37], 0
mov edi, dword [esp + 0x838]
mov eax, dword [0x798c20]
inc ebp
add ebx, 4
cmp ebp, eax
jl 0x66bce0
mov ecx, 0x800
mov eax, 0xa
sub ecx, edi
cmp ecx, eax
jge 0x66bddc
mov eax, ecx
test eax, eax
je 0x66be0a
mov ecx, eax
mov edx, ecx
shr ecx, 2
lea edi, [esp + edi + 0x38]
mov esi, str.localport
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x838]
add ecx, eax
mov dword [esp + 0x838], ecx
mov byte [esp + ecx + 0x37], 0
mov eax, dword [esp + 0x840]
mov ecx, dword [eax + 0xc0]
push ecx
lea edx, [esp + 0x14]
push 0x70c658
push edx
call fcn.006864ed
lea eax, [esp + 0x1c]
add esp, 0xc
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x66be31
sub eax, edx
lea edx, [eax + 1]
mov eax, dword [esp + 0x838]
mov ecx, 0x800
sub ecx, eax
cmp edx, ecx
cmovg edx, ecx
test edx, edx
je 0x66be88
lea edi, [esp + eax + 0x38]
mov ecx, edx
mov eax, ecx
shr ecx, 2
lea esi, [esp + 0x10]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x838]
add eax, edx
mov dword [esp + 0x838], eax
mov byte [esp + eax + 0x37], 0
mov eax, dword [esp + 0x838]
mov ecx, 0x800
mov edx, 7
sub ecx, eax
cmp ecx, edx
jge 0x66be9e
mov edx, ecx
test edx, edx
je 0x66bed3
lea edi, [esp + eax + 0x38]
mov ecx, edx
mov eax, ecx
shr ecx, 2
mov esi, str.natneg
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x838]
add eax, edx
mov dword [esp + 0x838], eax
mov byte [esp + eax + 0x37], 0
mov eax, dword [esp + 0x838]
mov ecx, dword [esp + 0x840]
mov edx, dword [ecx + 0xc8]
test edx, edx
mov esi, 0x708634
jne 0x66beee
mov esi, 0x708620
mov ecx, esi
lea edi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x66bef3
sub ecx, edi
lea edx, [ecx + 1]
mov ecx, 0x800
sub ecx, eax
cmp edx, ecx
cmovg edx, ecx
test edx, edx
je 0x66bf3f
lea edi, [esp + eax + 0x38]
mov ecx, edx
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x838]
add eax, edx
mov dword [esp + 0x838], eax
mov byte [esp + eax + 0x37], 0
mov eax, dword [esp + 0x838]
mov ebp, dword [esp + 0x844]
test ebp, ebp
je 0x66c007
mov ecx, 0x800
mov edx, 0xd
sub ecx, eax
cmp ecx, edx
jge 0x66bf64
mov edx, ecx
test edx, edx
je 0x66bf92
lea edi, [esp + eax + 0x38]
mov ecx, edx
mov eax, ecx
shr ecx, 2
mov esi, str.statechanged
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x838]
add eax, edx
mov dword [esp + 0x838], eax
mov byte [esp + eax + 0x37], 0
push ebp
lea ecx, [esp + 0x14]
push 0x70c658
push ecx
call fcn.006864ed
lea eax, [esp + 0x1c]
add esp, 0xc
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x66bfb0
sub eax, edx
lea edx, [eax + 1]
mov eax, dword [esp + 0x838]
mov ecx, 0x800
sub ecx, eax
cmp edx, ecx
cmovg edx, ecx
test edx, edx
je 0x66c007
lea edi, [esp + eax + 0x38]
mov ecx, edx
mov eax, ecx
shr ecx, 2
lea esi, [esp + 0x10]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x838]
add eax, edx
mov dword [esp + 0x838], eax
mov byte [esp + eax + 0x37], 0
mov eax, dword [esp + 0x838]
mov ecx, 0x800
mov edx, 9
sub ecx, eax
cmp ecx, edx
jge 0x66c01d
mov edx, ecx
test edx, edx
je 0x66c052
lea edi, [esp + eax + 0x38]
mov ecx, edx
mov eax, ecx
shr ecx, 2
mov esi, str.gamename
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x838]
add eax, edx
mov dword [esp + 0x838], eax
mov byte [esp + eax + 0x37], 0
mov eax, dword [esp + 0x838]
mov ebx, dword [esp + 0x840]
lea esi, [ebx + 4]
mov ecx, esi
lea edi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x66c061
sub ecx, edi
lea edx, [ecx + 1]
mov ecx, 0x800
sub ecx, eax
cmp edx, ecx
cmovg edx, ecx
test edx, edx
je 0x66c0ad
lea edi, [esp + eax + 0x38]
mov ecx, edx
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x838]
add eax, edx
mov dword [esp + 0x838], eax
mov byte [esp + eax + 0x37], 0
mov eax, dword [esp + 0x838]
mov ecx, dword [ebx + 0xa8]
test ecx, ecx
je 0x66c237
mov ecx, 0x800
mov edx, 9
sub ecx, eax
cmp ecx, edx
jge 0x66c0d1
mov edx, ecx
test edx, edx
je 0x66c0ff
lea edi, [esp + eax + 0x38]
mov ecx, edx
mov eax, ecx
shr ecx, 2
mov esi, str.publicip
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x838]
add eax, edx
mov dword [esp + 0x838], eax
mov byte [esp + eax + 0x37], 0
mov ecx, dword [ebx + 0x10c]
push ecx
lea edx, [esp + 0x14]
push 0x70c658
push edx
call fcn.006864ed
lea eax, [esp + 0x1c]
add esp, 0xc
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x66c120
sub eax, edx
mov edx, dword [esp + 0x838]
inc eax
mov ecx, 0x800
sub ecx, edx
cmp eax, ecx
cmovg eax, ecx
test eax, eax
je 0x66c175
lea edi, [esp + edx + 0x38]
mov ecx, eax
mov edx, ecx
shr ecx, 2
lea esi, [esp + 0x10]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x838]
add ecx, eax
mov dword [esp + 0x838], ecx
mov byte [esp + ecx + 0x37], 0
mov edx, dword [esp + 0x838]
mov ecx, 0x800
mov eax, 0xb
sub ecx, edx
cmp ecx, eax
jge 0x66c18b
mov eax, ecx
test eax, eax
je 0x66c1b9
mov ecx, eax
lea edi, [esp + edx + 0x38]
mov edx, ecx
shr ecx, 2
mov esi, str.publicport
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x838]
add ecx, eax
mov dword [esp + 0x838], ecx
mov byte [esp + ecx + 0x37], 0
movzx eax, word [ebx + 0x110]
push eax
lea ecx, [esp + 0x14]
push 0x70c658
push ecx
call fcn.006864ed
lea eax, [esp + 0x1c]
add esp, 0xc
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x66c1e0
sub eax, edx
lea edx, [eax + 1]
mov eax, dword [esp + 0x838]
mov ecx, 0x800
sub ecx, eax
cmp edx, ecx
cmovg edx, ecx
test edx, edx
je 0x66c237
lea edi, [esp + eax + 0x38]
mov ecx, edx
mov eax, ecx
shr ecx, 2
lea esi, [esp + 0x10]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x838]
add eax, edx
mov dword [esp + 0x838], eax
mov byte [esp + eax + 0x37], 0
mov eax, dword [esp + 0x838]
cmp ebp, 2
je 0x66c281
push 0
push 0xff
lea ecx, [esp + 0x40]
push 0
push ecx
call fcn.0066af40
push 0
push 0xff
lea edx, [esp + 0x50]
push 1
push edx
call fcn.0066af40
push 0
push 0xff
lea eax, [esp + 0x60]
push 2
push eax
call fcn.0066af40
mov eax, dword [esp + 0x868]
add esp, 0x30
jmp 0x66c2a1
mov ecx, 0x800
sub ecx, eax
cmp ecx, 1
jl 0x66c2a1
mov byte [esp + eax + 0x38], 0
mov eax, dword [esp + 0x838]
inc eax
mov dword [esp + 0x838], eax
mov ecx, dword [ebx]
push 0x10
lea edx, [ebx + 0xcc]
push edx
push 0
push eax
lea eax, [esp + 0x48]
push eax
push ecx
call sub.WSOCK32.dll_sendto
call sub.KERNEL32.dll_GetTickCount
test ebp, ebp
mov dword [ebx + 0xac], eax
mov dword [ebx + 0xb0], eax
je 0x66c2d9
mov dword [ebx + 0xb4], 0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x82c
ret