Function at 0x52a630
Capabilities:
Get thread local storage value
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x140
push ebx
mov ebx, dword [esp + 0x148]
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_TlsGetValue]
push esi
push edi
push dword [0x884adc]
mov edi, dword [ebx + 0x50]
call ebp
lea ecx, [edi*4 + 0x7f]
and ecx, 0xffffff80
mov edx, dword [eax + 0xc]
lea esi, [edx + ecx]
cmp ecx, dword [eax + 8]
jg 0x52a671
cmp esi, dword [eax + 0x10]
ja 0x52a671
mov dword [eax + 0xc], esi
jmp 0x52a67b
push ecx
mov ecx, eax
call fcn.0046a3c0
mov edx, eax
push dword [ebx + 0x50]
lea eax, [esp + 0x70]
mov dword [esp + 0x70], edx
push eax
lea ecx, [esp + 0x50]
mov dword [esp + 0x78], edi
call fcn.006513e0
lea eax, [esp + 0x48]
mov ecx, ebx
push eax
call fcn.00535f70
test al, al
je 0x52a6ad
and byte [ebx + 0x25], 0xf3
jmp 0x52b915
lea eax, [esp + 0x84]
mov dword [esp + 0x7c], 0
mov dword [esp + 0x78], eax
lea ecx, [esp + 0x48]
lea eax, [esp + 0x78]
mov dword [esp + 0x80], 0x80000020
push eax
call fcn.006514d0
push dword [0x884adc]
mov esi, dword [esp + 0x80]
call ebp
lea edx, [esi + 0x80]
and edx, 0xffffff80
mov dword [esp + 0x74], edx
mov edi, dword [eax + 0xc]
mov dword [esp + 0x20], edi
lea ecx, [edi + edx]
cmp edx, dword [eax + 8]
jg 0x52a70e
cmp ecx, dword [eax + 0x10]
ja 0x52a70e
mov dword [eax + 0xc], ecx
jmp 0x52a71c
push edx
mov ecx, eax
call fcn.0046a3c0
mov edi, eax
mov dword [esp + 0x20], eax
test byte [ebx + 0x25], 0xc
mov eax, dword [esp + 0x158]
je 0x52ac92
cmp byte [eax + 0xd9], 0
push dword [0x884adc]
je 0x52a8c8
mov esi, dword [esp + 0x80]
mov dword [esp + 0x14], esi
call ebp
lea ebp, [esi*4]
lea ecx, [ebp + 0x7f]
and ecx, 0xffffff80
mov edi, dword [eax + 0xc]
lea edx, [edi + ecx]
cmp ecx, dword [eax + 8]
jg 0x52a76f
cmp edx, dword [eax + 0x10]
ja 0x52a76f
mov dword [eax + 0xc], edx
jmp 0x52a779
push ecx
mov ecx, eax
call fcn.0046a3c0
mov edi, eax
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], esi
test esi, esi
jle 0x52a792
shr ebp, 2
xor eax, eax
mov ecx, ebp
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x24]
xor ebp, ebp
cmp dword [ebx + 0x50], ebp
jle 0x52a81c
nop dword [eax]
mov eax, dword [ebx + 0x4c]
mov esi, dword [eax + ebp*4]
mov eax, dword [esp + 0x158]
movzx edx, word [esi + 0xec]
movzx eax, byte [eax + 0x316]
mov ecx, edx
sar ecx, 0xe
cmp eax, ecx
jne 0x52a7c7
sar edx, 7
mov eax, dword [esp + 0x158]
and edx, 0x7f
movzx esi, word [esi + 0xea]
mov ecx, esi
sar ecx, 0xe
movzx eax, byte [eax + 0x315]
cmp eax, ecx
jne 0x52a7eb
sar esi, 7
and esi, 0x7f
and edx, 0x7f
and esi, 0x7f
cmp esi, edx
cmovg edx, esi
cmp edx, 5
jg 0x52a812
mov eax, dword [esp + 0x48]
mov eax, dword [eax]
mov eax, dword [eax + ebp*4]
mov dword [edi + eax*4], 1
mov edi, dword [esp + 0x24]
inc ebp
cmp ebp, dword [ebx + 0x50]
jl 0x52a7a0
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x20]
mov ecx, 1
xor edx, edx
mov byte [ebp], cl
test esi, esi
jle 0x52a850
nop
mov eax, dword [esp + 0x24]
cmp dword [eax + edx*4], 0
je 0x52a843
mov dword [edi + edx*4], 0
jmp 0x52a84b
mov dword [edi + edx*4], ecx
mov byte [ecx + ebp], 0
inc ecx
inc edx
cmp edx, esi
jl 0x52a830
cmp ecx, esi
jle 0x52a85a
mov byte [ebp], 0
jmp 0x52a86e
lea eax, [esp + 0x78]
push eax
push ecx
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x54]
call fcn.00651660
mov eax, dword [esp + 0x28]
push dword [0x884adc]
mov edi, dword [esp + 0x28]
mov ebp, dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea esi, [eax*4 + 0x7f]
and esi, 0xffffff80
call ebp
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
jg 0x52a8ab
lea ecx, [edx + edi]
cmp ecx, dword [eax + 0xc]
jne 0x52a8ab
cmp dword [eax + 0x14], edi
je 0x52a8ab
mov dword [eax + 0xc], edi
jmp 0x52a8b4
push edx
push edi
mov ecx, eax
call fcn.0046a590
cmp dword [esp + 0x7c], 1
mov edi, dword [esp + 0x20]
je 0x52b8a3
jmp 0x52b065
mov ebp, dword [esp + 0x80]
mov dword [esp + 0x1c], ebp
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea esi, [ebp*4 + 0x7f]
and esi, 0xffffff80
mov dword [esp + 0x30], esi
mov edi, dword [eax + 0xc]
mov dword [esp + 0x14], edi
lea ecx, [esi + edi]
cmp esi, dword [eax + 8]
jg 0x52a900
cmp ecx, dword [eax + 0x10]
ja 0x52a900
mov dword [eax + 0xc], ecx
jmp 0x52a90e
push esi
mov ecx, eax
call fcn.0046a3c0
mov edi, eax
mov dword [esp + 0x14], eax
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x1c], ecx
lea edx, [esi + ecx]
cmp esi, dword [eax + 8]
jg 0x52a933
cmp edx, dword [eax + 0x10]
ja 0x52a933
mov dword [eax + 0xc], edx
jmp 0x52a941
push esi
mov ecx, eax
call fcn.0046a3c0
mov ecx, eax
mov dword [esp + 0x1c], eax
xor esi, esi
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], ebp
test ebp, ebp
jle 0x52a9d9
cmp ebp, 4
jb 0x52a9ae
lea eax, [ebp - 1]
lea eax, [ecx + eax*4]
lea edx, [ebp - 1]
lea edx, [edi + edx*4]
cmp edi, eax
ja 0x52a96c
cmp edx, ecx
jae 0x52a9ae
mov eax, ebp
and eax, reloc.WSOCK32.dll_closesocket
jns 0x52a97a
dec eax
or eax, 0xfffffffc
inc eax
mov ecx, ebp
sub ecx, eax
nop
add esi, 4
cmp esi, ecx
jl 0x52a980
mov edi, dword [esp + 0x1c]
lea eax, [ecx + 3]
cdq
and edx, 3
add edx, eax
xor eax, eax
sar edx, 2
shl edx, 4
mov ecx, edx
shr ecx, 2
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x14]
shr edx, 2
mov ecx, edx
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x14]
cmp esi, ebp
jge 0x52a9dd
nop word [eax + eax]
mov eax, dword [esp + 0x24]
mov dword [eax + esi*4], 0
mov dword [edi + esi*4], 0
inc esi
cmp esi, ebp
jl 0x52a9c0
jmp 0x52a9dd
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x158]
cmp byte [eax + 0xd9], 0
je 0x52aaa3
cmp dword [ebx + 0x50], 0
jle 0x52aae7
xor ebp, ebp
nop dword [eax]
mov eax, dword [ebx + 0x4c]
mov esi, dword [eax + ebp*4]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x10], esi
movzx edx, word [esi + 0xec]
mov eax, dword [eax]
mov ecx, edx
sar ecx, 0xe
mov eax, dword [eax + ebp*4]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x158]
movzx eax, byte [eax + 0x316]
cmp eax, ecx
jne 0x52aa38
sar edx, 7
mov eax, dword [esp + 0x158]
and edx, 0x7f
movzx esi, word [esi + 0xea]
mov ecx, esi
sar ecx, 0xe
movzx eax, byte [eax + 0x315]
cmp eax, ecx
jne 0x52aa5c
sar esi, 7
and esi, 0x7f
and edx, 0x7f
and esi, 0x7f
cmp esi, edx
cmovg edx, esi
cmp edx, 5
mov edx, dword [esp + 0x1c]
jg 0x52aa7e
mov eax, dword [esp + 0x24]
mov dword [eax + edx*4], 1
mov eax, dword [esp + 0x10]
mov ecx, 1
movzx eax, word [eax + 0xb0]
cmp eax, 1
cmovl eax, ecx
inc ebp
add dword [edi + edx*4], eax
cmp ebp, dword [ebx + 0x50]
jl 0x52aa00
jmp 0x52aae3
xor esi, esi
cmp dword [ebx + 0x50], esi
jle 0x52aae7
lea ebp, [esi + 1]
nop dword [eax]
mov eax, dword [ebx + 0x4c]
mov edx, dword [eax + esi*4]
mov eax, dword [esp + 0x48]
mov eax, dword [eax]
mov eax, dword [eax + esi*4]
lea ecx, [eax*4]
mov eax, dword [esp + 0x24]
mov dword [eax + ecx], ebp
movzx eax, word [edx + 0xb0]
cmp eax, 1
cmovl eax, ebp
inc esi
add dword [edi + ecx], eax
cmp esi, dword [ebx + 0x50]
jl 0x52aab0
mov ebp, dword [esp + 0x18]
xor ecx, ecx
test ebp, ebp
jle 0x52ab06
nop dword [eax]
mov eax, dword [esp + 0x24]
cmp dword [eax + ecx*4], 0
jne 0x52ab01
mov dword [edi + ecx*4], 0xffffffff
inc ecx
cmp ecx, ebp
jl 0x52aaf0
mov ecx, dword [esp + 0x24]
xor eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x40], ecx
test ebp, ebp
jle 0x52abf8
mov esi, ecx
mov dword [esp + 0x10], ebp
mov ebx, 1
mov dword [esp + 0x1c], esi
mov ecx, edi
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x34], ecx
mov edx, dword [ecx]
cmp edx, 0xfffffffe
je 0x52abd3
mov edi, dword [esp + 0x20]
inc dword [esp + 0x18]
mov dword [esp + 0x38], eax
mov byte [eax + edi], 0
mov edi, dword [esp + 0x14]
mov dword [esi], eax
test edx, edx
js 0x52abcf
mov esi, ebx
cmp ebx, ebp
jge 0x52abcb
mov eax, dword [esp + 0x40]
add ecx, 4
mov ebx, dword [esp + 0x38]
sub eax, edi
mov dword [esp + 0x3c], eax
nop dword [eax]
nop word [eax + eax]
mov eax, dword [esp + 0x158]
mov edi, dword [eax + 0xb8]
lea eax, [edx + 0xa]
cmp eax, edi
jge 0x52abbf
mov eax, dword [ecx]
test eax, eax
js 0x52abb7
add eax, edx
cmp eax, edi
jge 0x52abb7
mov edx, dword [esp + 0x20]
mov byte [ebx + edx], 1
mov edx, dword [esp + 0x3c]
mov dword [edx + ecx], ebx
mov edx, eax
mov dword [ecx], 0xfffffffe
inc esi
add ecx, 4
cmp esi, ebp
jl 0x52ab80
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x34]
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
add ecx, 4
add esi, 4
inc ebx
mov dword [esp + 0x34], ecx
sub dword [esp + 0x10], 1
mov dword [esp + 0x1c], esi
mov dword [esp + 0x2c], ebx
jne 0x52ab35
mov ebx, dword [esp + 0x154]
lea ecx, [esp + 0x78]
push ecx
push eax
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x54]
call fcn.00651660
mov eax, dword [esp + 0x28]
push dword [0x884adc]
mov ebp, dword [esp + 0x28]
lea esi, [eax*4 + 0x7f]
and esi, 0xffffff80
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
jg 0x52ac47
lea ecx, [edx + ebp]
cmp ecx, dword [eax + 0xc]
jne 0x52ac47
cmp dword [eax + 0x14], ebp
je 0x52ac47
mov dword [eax + 0xc], ebp
jmp 0x52ac50
push edx
push ebp
mov ecx, eax
call fcn.0046a590
push dword [0x884adc]
mov ebp, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call ebp
mov ecx, dword [esp + 0x30]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x52b045
lea ecx, [edi + edx]
cmp ecx, dword [eax + 0xc]
jne 0x52b045
cmp dword [eax + 0x14], edi
je 0x52b045
mov dword [eax + 0xc], edi
mov edi, dword [esp + 0x20]
jmp 0x52b065
cmp dword [eax + 0xb8], 0
je 0x52b054
mov ebp, dword [esp + 0x7c]
push dword [0x884adc]
mov dword [esp + 0x30], ebp
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea esi, [ebp*4 + 0x7f]
and esi, 0xffffff80
mov dword [esp + 0x40], esi
mov edi, dword [eax + 0xc]
mov dword [esp + 0x14], edi
lea ecx, [edi + esi]
cmp esi, dword [eax + 8]
jg 0x52acda
cmp ecx, dword [eax + 0x10]
ja 0x52acda
mov dword [eax + 0xc], ecx
jmp 0x52ace8
push esi
mov ecx, eax
call fcn.0046a3c0
mov edi, eax
mov dword [esp + 0x14], eax
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x10], ecx
lea edx, [ecx + esi]
cmp esi, dword [eax + 8]
jg 0x52ad0d
cmp edx, dword [eax + 0x10]
ja 0x52ad0d
mov dword [eax + 0xc], edx
jmp 0x52ad1b
push esi
mov ecx, eax
call fcn.0046a3c0
mov ecx, eax
mov dword [esp + 0x10], eax
xor esi, esi
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], ebp
test ebp, ebp
jle 0x52ada9
cmp ebp, 4
jb 0x52ad86
lea eax, [ebp - 1]
lea eax, [ecx + eax*4]
lea edx, [ebp - 1]
lea edx, [edi + edx*4]
cmp edi, eax
ja 0x52ad46
cmp edx, ecx
jae 0x52ad86
mov eax, ebp
and eax, reloc.WSOCK32.dll_closesocket
jns 0x52ad54
dec eax
or eax, 0xfffffffc
inc eax
mov ecx, ebp
sub ecx, eax
add esi, 4
cmp esi, ecx
jl 0x52ad58
mov edi, dword [esp + 0x10]
lea eax, [ecx + 3]
cdq
and edx, 3
add edx, eax
xor eax, eax
sar edx, 2
shl edx, 4
mov ecx, edx
shr ecx, 2
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x14]
shr edx, 2
mov ecx, edx
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x14]
cmp esi, ebp
jge 0x52adad
nop
mov eax, dword [esp + 0x24]
mov dword [eax + esi*4], 0
mov dword [edi + esi*4], 0
inc esi
cmp esi, ebp
jl 0x52ad90
jmp 0x52adad
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x158]
cmp byte [eax + 0xd9], 0
je 0x52ae73
cmp dword [ebx + 0x50], 0
jle 0x52aeb7
xor ebp, ebp
nop dword [eax]
mov eax, dword [ebx + 0x4c]
mov esi, dword [eax + ebp*4]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x30], esi
movzx edx, word [esi + 0xec]
mov eax, dword [eax]
mov ecx, edx
sar ecx, 0xe
mov eax, dword [eax + ebp*4]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x158]
movzx eax, byte [eax + 0x316]
cmp eax, ecx
jne 0x52ae08
sar edx, 7
mov eax, dword [esp + 0x158]
and edx, 0x7f
movzx esi, word [esi + 0xea]
mov ecx, esi
sar ecx, 0xe
movzx eax, byte [eax + 0x315]
cmp eax, ecx
jne 0x52ae2c
sar esi, 7
and esi, 0x7f
and edx, 0x7f
and esi, 0x7f
cmp esi, edx
cmovg edx, esi
cmp edx, 5
mov edx, dword [esp + 0x10]
jg 0x52ae4e
mov eax, dword [esp + 0x24]
mov dword [eax + edx*4], 1
mov eax, dword [esp + 0x30]
mov ecx, 1
movzx eax, word [eax + 0xb0]
cmp eax, 1
cmovl eax, ecx
inc ebp
add dword [edi + edx*4], eax
cmp ebp, dword [ebx + 0x50]
jl 0x52add0
jmp 0x52aeb3
xor esi, esi
cmp dword [ebx + 0x50], esi
jle 0x52aeb7
lea ebp, [esi + 1]
nop dword [eax]
mov eax, dword [ebx + 0x4c]
mov edx, dword [eax + esi*4]
mov eax, dword [esp + 0x48]
mov eax, dword [eax]
mov eax, dword [eax + esi*4]
lea ecx, [eax*4]
mov eax, dword [esp + 0x24]
mov dword [eax + ecx], ebp
movzx eax, word [edx + 0xb0]
cmp eax, 1
cmovl eax, ebp
inc esi
add dword [ecx + edi], eax
cmp esi, dword [ebx + 0x50]
jl 0x52ae80
mov ebp, dword [esp + 0x2c]
xor ecx, ecx
test ebp, ebp
jle 0x52aed6
nop dword [eax]
mov eax, dword [esp + 0x24]
cmp dword [eax + ecx*4], 0
jne 0x52aed1
mov dword [edi + ecx*4], 0xffffffff
inc ecx
cmp ecx, ebp
jl 0x52aec0
mov ecx, dword [esp + 0x24]
xor eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x30], ecx
test ebp, ebp
jle 0x52afc8
mov esi, ecx
mov dword [esp + 0x34], ebp
mov ebx, 1
mov dword [esp + 0x1c], esi
mov ecx, edi
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x10], ecx
mov edx, dword [ecx]
cmp edx, 0xfffffffe
je 0x52afa3
mov edi, dword [esp + 0x20]
inc dword [esp + 0x18]
mov dword [esp + 0x3c], eax
mov byte [edi + eax], 0
mov edi, dword [esp + 0x14]
mov dword [esi], eax
test edx, edx
js 0x52af9f
mov esi, ebx
cmp ebx, ebp
jge 0x52af9b
mov eax, dword [esp + 0x30]
add ecx, 4
mov ebx, dword [esp + 0x3c]
sub eax, edi
mov dword [esp + 0x38], eax
nop dword [eax]
nop word [eax + eax]
mov eax, dword [esp + 0x158]
mov edi, dword [eax + 0xb8]
lea eax, [edx + 0xa]
cmp eax, edi
jge 0x52af8f
mov eax, dword [ecx]
test eax, eax
js 0x52af87
add eax, edx
cmp eax, edi
jge 0x52af87
mov edx, dword [esp + 0x20]
mov byte [edx + ebx], 1
mov edx, dword [esp + 0x38]
mov dword [edx + ecx], ebx
mov edx, eax
mov dword [ecx], 0xfffffffe
inc esi
add ecx, 4
cmp esi, ebp
jl 0x52af50
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
add ecx, 4
add esi, 4
inc ebx
mov dword [esp + 0x10], ecx
sub dword [esp + 0x34], 1
mov dword [esp + 0x1c], esi
mov dword [esp + 0x2c], ebx
jne 0x52af05
mov ebx, dword [esp + 0x154]
lea ecx, [esp + 0x78]
push ecx
push eax
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x54]
call fcn.00651660
mov eax, dword [esp + 0x28]
push dword [0x884adc]
mov ebp, dword [esp + 0x28]
lea esi, [eax*4 + 0x7f]
and esi, 0xffffff80
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
jg 0x52b017
lea ecx, [edx + ebp]
cmp ecx, dword [eax + 0xc]
jne 0x52b017
cmp dword [eax + 0x14], ebp
je 0x52b017
mov dword [eax + 0xc], ebp
jmp 0x52b020
push edx
push ebp
mov ecx, eax
call fcn.0046a590
push dword [0x884adc]
mov ebp, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call ebp
mov ecx, dword [esp + 0x40]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x52b045
lea ecx, [edx + edi]
jmp 0x52ac74
push edx
push edi
mov ecx, eax
call fcn.0046a590
mov edi, dword [esp + 0x20]
jmp 0x52b065
mov eax, dword [esp + 0x7c]
inc eax
push eax
push 0
push edi
call fcn.0045d830
add esp, 0xc
lea eax, [esp + 0x78]
push eax
lea ecx, [esp + 0x4c]
call fcn.00651780
mov dl, byte [edi]
lea ecx, [edi + eax]
mov al, byte [ecx]
mov byte [edi], al
mov byte [ecx], dl
mov eax, dword [esp + 0x78]
mov esi, dword [esp + 0x7c]
mov dword [esp + 0x34], esi
mov eax, dword [eax]
mov dword [esp + 0x44], eax
mov eax, dword [ebx + 0x50]
mov dword [esp + 0x50], eax
cmp esi, 1
je 0x52b8a3
push dword [0x884adc]
call ebp
lea edx, [esi*4 + 0x7f]
and edx, 0xffffff80
mov dword [esp + 0x24], edx
mov edi, dword [eax + 0xc]
mov dword [esp + 0x14], edi
lea ecx, [edi + edx]
cmp edx, dword [eax + 8]
jg 0x52b0cf
cmp ecx, dword [eax + 0x10]
ja 0x52b0cf
mov dword [eax + 0xc], ecx
jmp 0x52b0dd
push edx
mov ecx, eax
call fcn.0046a3c0
mov edi, eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x20]
mov ebp, 1
cmp byte [eax], 0
setne cl
shl cl, 2
xor cl, byte [ebx + 0x25]
and cl, 0xc
xor byte [ebx + 0x25], cl
mov dword [edi], ebx
cmp esi, ebp
jle 0x52b1ec
mov edi, dword [esp + 0x15c]
mov esi, 0x84
mov ebx, dword [esp + 0x158]
nop word [eax + eax]
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push 0x84
mov ecx, dword [eax + 0x2c]
mov eax, dword [ecx]
call dword [eax + 4]
push ebx
mov ecx, eax
mov word [eax + 4], si
call fcn.00535bf0
mov esi, eax
mov eax, dword [esp + 0x20]
mov dl, byte [esi + 0x26]
and dl, 0xf5
or dl, 5
mov byte [esi + 0x26], dl
cmp byte [eax + ebp], 0
setne cl
and dl, 0xdf
shl cl, 2
or dl, 0x10
xor cl, byte [esi + 0x25]
and cl, 0xc
mov byte [esi + 0x26], dl
xor byte [esi + 0x25], cl
mov ax, word [edi + 4]
mov word [esi + 0x20], ax
mov eax, dword [edi + 8]
and eax, 0x3fffffff
cmp dword [edi + 4], eax
jne 0x52b198
push 4
push edi
push 0x7d8954
call fcn.00467c00
add esp, 0xc
mov ecx, dword [edi + 4]
mov eax, dword [edi]
mov dword [eax + ecx*4], esi
mov eax, dword [esp + 0x14]
inc dword [edi + 4]
mov dword [eax + ebp*4], esi
add esi, 0x4c
mov eax, dword [esp + 0x78]
mov ecx, dword [eax + ebp*4]
mov eax, dword [esi + 8]
and eax, 0x3fffffff
cmp eax, ecx
jge 0x52b1d1
push 4
push ecx
push esi
push 0x7d8954
call fcn.00467b80
add esp, 0x10
inc ebp
mov esi, 0x84
cmp ebp, dword [esp + 0x34]
jl 0x52b120
mov ebx, dword [esp + 0x154]
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x160]
lea esi, [ebx + 0x4c]
mov edx, dword [esi]
mov ebp, dword [ebx + 0x50]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x40], ebp
test eax, eax
je 0x52b578
push eax
mov ecx, esi
call fcn.0052ce00
mov eax, dword [esp + 0x78]
mov dword [ebx + 0x50], 0
mov ecx, dword [eax]
mov eax, dword [esi + 8]
and eax, 0x3fffffff
cmp eax, ecx
jge 0x52b23d
push 4
push ecx
push esi
push 0x7d8954
call fcn.00467b80
add esp, 0x10
mov edx, dword [esp + 0x1c]
xor ecx, ecx
mov dword [esp + 0x2c], ecx
test ebp, ebp
jle 0x52b38c
nop
mov eax, dword [esp + 0x6c]
mov ebp, dword [edx + ecx*4]
mov dword [esp + 0x38], ebp
mov eax, dword [eax + ecx*4]
mov esi, dword [edi + eax*4]
mov dword [ebp + 0xcc], esi
mov ax, word [esi + 0x50]
mov word [ebp + 0xa8], ax
mov ecx, dword [esi + 0x50]
mov eax, dword [esi + 0x4c]
mov dword [eax + ecx*4], ebp
inc dword [esi + 0x50]
cmp ebx, esi
je 0x52b379
mov edx, dword [ebp + 0xac]
xor eax, eax
xor edi, edi
cmp ax, word [ebp + 0xb0]
jae 0x52b371
nop dword [eax]
movzx eax, word [edx + 0x18]
movzx ecx, word [edx + 0x14]
movzx ebp, word [edx + 0x16]
dec dword [ebx + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 8]
mov dword [esp + 0x3c], eax
mov eax, dword [edx]
mov dword [esp + 0x30], eax
cmp dword [eax + 0x30], 0
mov eax, dword [esp + 0x18]
je 0x52b2f1
sub dword [ebx + 0x14], eax
sub dword [ebx + 0xc], ecx
sub dword [ebx + 0x10], ebp
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x18]
mov eax, dword [eax + 0x30]
sub word [eax + 0x18], bx
sub word [eax + 0x16], bp
sub word [eax + 0x14], cx
mov ebx, dword [esp + 0x154]
inc dword [esi + 0x1c]
mov eax, dword [edx]
mov dword [eax + 8], esi
mov eax, dword [edx]
mov dword [esp + 0x10], eax
cmp dword [eax + 0x30], 0
je 0x52b35a
mov ebx, dword [esp + 0x3c]
mov eax, ecx
cmp dword [esi + 8], ebx
cmovg ebx, dword [esi + 8]
cmp ebx, ecx
cmovg eax, ebx
add dword [esi + 0x10], ebp
add dword [esi + 0xc], ecx
mov dword [esi + 8], eax
mov eax, dword [esp + 0x18]
add dword [esi + 0x14], eax
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x154]
mov eax, dword [eax + 0x30]
add word [eax + 0x16], bp
add word [eax + 0x14], cx
mov ebp, dword [esp + 0x18]
add word [eax + 0x18], bp
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x30]
movzx ecx, word [eax + 0x14]
cmp dword [esi + 8], ecx
cmovg ecx, dword [esi + 8]
mov dword [esi + 8], ecx
mov eax, dword [esp + 0x38]
inc edi
add edx, 0x30
movzx eax, word [eax + 0xb0]
cmp edi, eax
jl 0x52b2a0
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
inc ecx
mov dword [esp + 0x2c], ecx
cmp ecx, dword [esp + 0x40]
jl 0x52b250
mov eax, dword [esp + 0x158]
mov ecx, dword [ebx + 0x40]
mov edx, dword [ebx + 0x3c]
mov dword [esp + 0x38], edx
mov eax, dword [eax + 0x20]
mov dword [esp + 0x30], eax
xor eax, eax
mov dword [esp + 0x3c], ecx
mov dword [ebx + 0x40], 0
mov dword [esp + 0x10], eax
test ecx, ecx
jle 0x52b4b5
mov ebx, dword [esp + 0x30]
mov ebp, dword [edx + eax*4]
test ebp, ebp
je 0x52b4a1
lea eax, [esp + 0x110]
mov dword [esp + 0x10c], reloc.WSOCK32.dll_recv
mov dword [esp + 0x104], eax
lea ecx, [esp + 0x104]
mov eax, dword [ebp]
xor esi, esi
push ecx
mov ecx, ebp
mov dword [esp + 0x10c], esi
call dword [eax + 0x10]
mov edx, dword [esp + 0x108]
xor ecx, ecx
mov edi, dword [esp + 0x104]
test edx, edx
jle 0x52b424
mov eax, dword [edi + ecx*4]
mov esi, dword [eax + 0xcc]
cmp esi, ebx
jne 0x52b424
inc ecx
cmp ecx, edx
jl 0x52b412
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x108], 0
test eax, eax
js 0x52b451
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 2
push eax
mov eax, dword [0x7d8954]
push edi
call dword [eax + 0x10]
mov dword [ebp + 0xc], esi
add esi, 0x3c
mov dword [esp + 0x104], 0
mov dword [esp + 0x10c], inet_addr
mov eax, dword [esi + 8]
and eax, 0x3fffffff
cmp dword [esi + 4], eax
jne 0x52b48a
push 4
push esi
push 0x7d8954
call fcn.00467c00
add esp, 0xc
mov ecx, dword [esi + 4]
mov eax, dword [esi]
mov edx, dword [esp + 0x38]
mov dword [eax + ecx*4], ebp
inc dword [esi + 4]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x3c]
inc eax
mov dword [esp + 0x10], eax
cmp eax, ecx
jl 0x52b3c1
mov ebx, dword [esp + 0x154]
mov ecx, dword [esp + 0x158]
push ebx
call fcn.0050d850
mov eax, dword [esp + 0x50]
sub eax, dword [esp + 0x44]
shl eax, 3
cmp eax, dword [esp + 0x50]
lea eax, [ebx + 0x70]
mov dword [esp + 0x50], eax
lea eax, [ebx + 0x5c]
mov dword [esp + 0x54], eax
jge 0x52b5ff
xor eax, eax
mov dword [esp + 0x18], eax
nop dword [eax + eax]
mov ebx, dword [esp + eax*4 + 0x50]
xor ebp, ebp
mov dword [esp + 0x1c], ebp
cmp dword [ebx + 8], ebp
jle 0x52b5ec
nop dword [eax]
nop word [eax + eax]
mov eax, dword [ebx + 4]
lea ecx, [ebp*4]
mov dword [esp + 0x44], ecx
push ebp
mov edi, dword [ecx + eax]
mov ecx, ebx
mov esi, edi
call fcn.0052cdb0
add eax, edi
cmp edi, eax
jae 0x52b5da
nop word [eax + eax]
mov ecx, dword [esi + 0x10]
movsx eax, byte [ecx + 0x10]
mov eax, dword [eax + ecx + 0xcc]
mov ecx, 0xffff
cmp word [eax + 0x20], cx
jne 0x52b567
mov ecx, dword [esi + 0x14]
movsx eax, byte [ecx + 0x10]
mov eax, dword [eax + ecx + 0xcc]
cmp eax, dword [esp + 0x154]
jne 0x52b584
movzx eax, byte [esi + 3]
add esi, eax
jmp 0x52b5c2
mov dword [ebx + 0x50], 0
jmp 0x52b241
mov ebp, esi
sub ebp, edi
cmp dword [esp + 0x18], 0
je 0x52b594
add eax, 0x5c
jmp 0x52b597
add eax, 0x70
push esi
push eax
call fcn.006ae8e0
push esi
push ebx
call fcn.006ae7a0
mov eax, dword [esp + 0x2c]
add esp, 0x10
cmp eax, dword [ebx + 8]
jge 0x52b5d6
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x44]
mov edi, dword [ecx + eax]
lea esi, [edi + ebp]
mov ebp, dword [esp + 0x1c]
push ebp
mov ecx, ebx
call fcn.0052cdb0
add eax, edi
cmp esi, eax
jb 0x52b540
jmp 0x52b5da
mov ebp, dword [esp + 0x1c]
inc ebp
mov dword [esp + 0x1c], ebp
cmp ebp, dword [ebx + 8]
jl 0x52b510
mov eax, dword [esp + 0x18]
inc eax
mov dword [esp + 0x18], eax
cmp eax, 2
jl 0x52b4f0
jmp 0x52b778
xor ebp, ebp
mov edx, 0x200
mov ebx, 0xffff
nop dword [eax + eax]
mov esi, dword [esp + ebp*4 + 0x50]
lea ecx, [esp + 0x68]
movzx eax, byte [esi + 2]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x60], 0
mov dword [esp + 0x64], reloc.WSOCK32.dll_accept
mov word [esp + 0x58], dx
mov byte [esp + 0x5a], al
mov eax, dword [esi + 8]
cmp eax, 1
jne 0x52b65b
mov eax, dword [esi + 4]
mov eax, dword [eax]
mov dword [esp + 0x68], eax
mov dword [esp + 0x60], 1
mov dword [esi + 8], 0
jmp 0x52b680
jle 0x52b680
push 4
push 2
lea eax, [esp + 0x64]
push eax
push 0x7d8954
call fcn.00467b80
add esp, 0x10
lea eax, [esi + 4]
lea ecx, [esp + 0x5c]
push eax
call fcn.0052cdd0
movzx ecx, word [esp + 0x58]
xor edx, edx
mov ax, word [esi]
mov word [esp + 0x58], ax
mov word [esi], cx
mov ecx, dword [esp + 0x60]
test ecx, ecx
jle 0x52b73f
nop
mov eax, dword [esp + 0x5c]
mov edi, dword [eax + edx*4]
inc edx
movzx eax, word [esp + 0x58]
mov esi, edi
mov dword [esp + 0x10], edi
mov dword [esp + 0x44], edx
cmp edx, ecx
je 0x52b6c0
mov eax, 0x200
add edi, eax
cmp dword [esp + 0x10], edi
jae 0x52b712
nop dword [eax + eax]
mov ecx, dword [esi + 0x10]
movsx eax, byte [ecx + 0x10]
mov eax, dword [eax + ecx + 0xcc]
cmp word [eax + 0x20], bx
jne 0x52b6f2
mov ecx, dword [esi + 0x14]
movsx eax, byte [ecx + 0x10]
mov eax, dword [eax + ecx + 0xcc]
test ebp, ebp
je 0x52b6fb
add eax, 0x5c
jmp 0x52b6fe
add eax, 0x70
push esi
push eax
call fcn.006ae8e0
movzx eax, byte [esi + 3]
add esp, 8
add esi, eax
cmp esi, edi
jb 0x52b6d0
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push 0x200
push dword [esp + 0x14]
mov ecx, dword [eax + 0x2c]
mov eax, dword [ecx]
call dword [eax + 8]
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x44]
cmp edx, ecx
jl 0x52b6a0
mov eax, dword [esp + 0x64]
mov dword [esp + 0x60], 0
test eax, eax
js 0x52b769
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 2
push eax
mov eax, dword [0x7d8954]
push dword [esp + 0x60]
call dword [eax + 0x10]
inc ebp
mov edx, 0x200
cmp ebp, 2
jl 0x52b610
mov ebx, dword [esp + 0x154]
mov ecx, dword [esp + 0x158]
push ebx
call fcn.0050d890
mov esi, dword [ebx + 0x7c]
lea edx, [ebx + 0x74]
test esi, esi
js 0x52b7e9
mov ecx, dword [edx + 4]
add ecx, 3
mov eax, ecx
shr eax, 0x10
or ecx, eax
mov eax, ecx
shr eax, 8
or ecx, eax
mov eax, ecx
shr eax, 4
or ecx, eax
mov eax, ecx
shr eax, 2
or ecx, eax
mov eax, ecx
shr eax, 1
or eax, ecx
inc eax
cmp eax, 1
jge 0x52b7cc
push 1
lea eax, [edx + 0xc]
push eax
jmp 0x52b7d9
and esi, 0x3fffffff
cmp eax, esi
jge 0x52b7e9
push eax
push 0
push 4
push edx
push 0x7d8954
call fcn.00467c80
add esp, 0x14
mov esi, dword [ebx + 0x68]
lea edx, [ebx + 0x60]
test esi, esi
js 0x52b846
mov ecx, dword [edx + 4]
add ecx, 3
mov eax, ecx
shr eax, 0x10
or ecx, eax
mov eax, ecx
shr eax, 8
or ecx, eax
mov eax, ecx
shr eax, 4
or ecx, eax
mov eax, ecx
shr eax, 2
or ecx, eax
mov eax, ecx
shr eax, 1
or eax, ecx
inc eax
cmp eax, 1
jge 0x52b829
push 1
lea eax, [edx + 0xc]
push eax
jmp 0x52b836
and esi, 0x3fffffff
cmp eax, esi
jge 0x52b846
push eax
push 0
push 4
push edx
push 0x7d8954
call fcn.00467c80
add esp, 0x14
mov ebp, dword [esp + 0x34]
mov edx, 1
mov esi, dword [esp + 0x14]
cmp ebp, edx
jle 0x52b867
mov cl, byte [ebx + 0x24]
mov eax, dword [esi + edx*4]
add cl, dl
inc edx
mov byte [eax + 0x24], cl
cmp edx, ebp
jl 0x52b857
push dword [0x884adc]
mov ebp, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call ebp
mov ecx, dword [esp + 0x24]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x52b896
lea ecx, [edx + esi]
cmp ecx, dword [eax + 0xc]
jne 0x52b896
cmp dword [eax + 0x14], esi
je 0x52b896
mov dword [eax + 0xc], esi
jmp 0x52b89f
push edx
push esi
mov ecx, eax
call fcn.0046a590
mov edi, dword [esp + 0x20]
push dword [0x884adc]
call ebp
mov ecx, dword [esp + 0x74]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x52b8cc
lea ecx, [edx + edi]
cmp ecx, dword [eax + 0xc]
jne 0x52b8cc
cmp dword [eax + 0x14], edi
je 0x52b8cc
mov dword [eax + 0xc], edi
jmp 0x52b8d5
push edx
push edi
mov ecx, eax
call fcn.0046a590
mov eax, dword [esp + 0x80]
mov dword [esp + 0x7c], 0
test eax, eax
js 0x52b902
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 2
push eax
mov eax, dword [0x7d8954]
push dword [esp + 0x7c]
call dword [eax + 0x10]
mov dword [esp + 0x78], 0
mov dword [esp + 0x80], inet_addr
mov eax, dword [esp + 0x70]
push dword [0x884adc]
mov edi, dword [esp + 0x70]
lea esi, [eax*4 + 0x7f]
and esi, 0xffffff80
call ebp
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
jg 0x52b955
lea ecx, [edx + edi]
cmp ecx, dword [eax + 0xc]
jne 0x52b955
cmp dword [eax + 0x14], edi
je 0x52b955
mov dword [eax + 0xc], edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x140
ret
push edx
push edi
mov ecx, eax
call fcn.0046a590
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x140
ret