Function at 0x588aa0
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x90
mov eax, dword [0x6480b4]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push edi
lea eax, [ebp - 0x8c]
mov edi, ecx
push eax
push 0x40
lea eax, [ebp - 0x88]
push eax
lea ecx, [edi + 0x10]
call fcn.0058aa80
test eax, eax
je 0x588c9b
mov edx, 0xfffffffd
mov ecx, 0xffffefff
push esi
mov eax, dword [ebp - 0x8c]
lea esi, [ebp - 0x88]
test eax, eax
cmovne esi, eax
movzx eax, byte [esi + 1]
add eax, 0xfffffffa
cmp eax, 0x82
ja case.0x588b0c.7
movzx eax, byte [eax + 0x588e6c]
jmp dword [eax*4 + 0x588e44]
test byte [edi + 0x254], 1
lea esi, [edi + 0x254]
je case.0x588b0c.7
mov eax, 0xfffffffe
lock and dword [esi], eax
push 0x40
lea eax, [edi + 0x280]
mov byte [ebp - 0x47], 2
push eax
lea eax, [ebp - 0x46]
push eax
call fcn.0055dcc0
lea eax, [ebp - 0x46]
add esp, 0xc
lea edx, [eax + 1]
nop dword [eax]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x588b50
sub eax, edx
add al, 3
cmp dword [edi + 0x1cc], 0
mov byte [ebp - 0x48], al
je 0x588c62
movzx eax, al
lea ecx, [edi + 0x10]
push eax
lea eax, [ebp - 0x48]
push eax
call fcn.0058abe0
test eax, eax
je 0x588c62
mov eax, 2
lock or dword [esi], eax
push 1
lea ecx, [edi + 0x1ec]
call fcn.00515980
jmp 0x588c62
test byte [edi + 0x254], 2
lea eax, [edi + 0x254]
je case.0x588b0c.7
lock and dword [eax], edx
cmp byte [esi], 9
jb case.0x588b0c.7
movzx eax, word [esi + 6]
mov dword [edi + 0x2f4], eax
mov eax, dword [esi + 2]
mov dword [edi + 0x3f0], eax
lea eax, [esi + 8]
push 0x2f
push eax
lea eax, [edi + 0x2c1]
push eax
call fcn.0055dcc0
mov eax, dword [edi + 0x3f0]
add esp, 0xc
test eax, eax
je case.0x588b0c.7
add eax, 0xfffffff8
mov ecx, edi
mov dword [edi + 0x3f4], eax
call fcn.005889c0
push edi
push 0
push 0x58a510
call fcn.005d21c2
add esp, 0xc
cmp eax, 0xffffffff
je 0x588c24
mov dword [edi + 0x378], 1
mov ecx, 1
jmp 0x588c26
xor ecx, ecx
test ecx, ecx
mov eax, 0x80
mov ecx, 0x89
cmove eax, ecx
mov ecx, edi
movzx eax, al
push eax
call fcn.0058a310
jmp 0x588c62
test byte [edi + 0x254], 1
je case.0x588b0c.7
push 0x624128
push 9
call fcn.004da370
add esp, 8
lea ecx, [edi + 0x10]
call fcn.0058a7e0
push dword [ebp - 0x8c]
call fcn.0058bb5f
add esp, 4
lea eax, [ebp - 0x8c]
lea ecx, [edi + 0x10]
push eax
push 0x40
lea eax, [ebp - 0x88]
push eax
call fcn.0058aa80
mov ecx, 0xffffefff
mov edx, 0xfffffffd
test eax, eax
jne 0x588ae2
pop esi
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop ebx
call fcn.0058bb64
mov esp, ebp
pop ebp
ret
test byte [edi + 0x254], 1
je case.0x588b0c.7
push str.Server_rejected_connection_n
jmp 0x588c50
test byte [edi + 0x254], 2
je case.0x588b0c.7
lea eax, [edi + 0x280]
push eax
push str.Server_does_not_have_multicast_session___hs__n
push 9
call fcn.004da370
add esp, 0xc
jmp case.0x588b0c.7
cmp byte [esi], 6
jne case.0x588b0c.7
mov eax, dword [esi + 2]
mov ecx, edi
push 0x100
mov dword [edi + 0x3f8], eax
call fcn.00515980
jmp 0x588c62
test byte [edi + 0x254], 4
lea eax, [edi + 0x254]
je case.0x588b0c.7
mov al, byte [esi]
movzx ecx, al
test al, al
je 0x588d3f
cmp al, 3
jb 0x588d35
test cl, cl
jns 0x588d35
movzx eax, byte [esi + 2]
and ecx, 0xffffff7f
shl ecx, 8
or ecx, eax
cmp ecx, 0xd
jae 0x588d42
jmp case.0x588b0c.7
or ecx, 0xffffffff
lea eax, [edi + 0x35c]
add ecx, 0xfffffff4
push eax
mov dword [ebp - 0x90], ecx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [edi + 0x278], 0
je 0x588dfa
mov eax, dword [edi + 0x260]
cmp eax, dword [esi + 4]
jne 0x588dfa
mov eax, dword [edi + 0x264]
cmp eax, dword [esi + 8]
jne 0x588dfa
mov eax, dword [ebp - 0x90]
cmp dword [edi + 0x274], eax
jb 0x588dfa
lea ecx, [edi + 0x254]
mov edx, 0xfffffffb
lock and dword [ecx], edx
push eax
lea eax, [esi + 0xc]
push eax
push dword [edi + 0x278]
call fcn.005c9900
mov ecx, dword [ebp - 0x90]
lea esi, [edi + 0x260]
add esp, 0xc
mov dword [edi + 0x274], ecx
lea ecx, [edi + 0x300]
push esi
call fcn.00588920
push 4
lea ecx, [edi + 0x32c]
mov dword [edi + 0x278], 0
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [edi + 0x274], 0
call fcn.00515980
lea eax, [edi + 0x35c]
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x588c62
test dword [edi + 0x254], 0x1000
lea eax, [edi + 0x254]
je 0x588c62
lock and dword [eax], ecx
jmp 0x588c62
cmp byte [esi], 6
jne 0x588c62
push dword [esi + 2]
mov ecx, edi
call fcn.0058a370
jmp 0x588c62