Function at 0x5f1b90
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
sub esp, 0x2c
push ebx
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_TlsGetValue]
push esi
push edi
push dword [0x884c50]
mov edi, ecx
call ebp
mov ebx, eax
mov esi, dword [ebx + 4]
cmp esi, dword [ebx + 0xc]
jae 0x5f1bca
mov dword [esi], str.TtupdateActiveNodes
rdtsc
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x28]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov dword [ebx + 4], eax
mov eax, dword [edi + 0x58]
mov ebx, dword [eax + 4]
push ebx
call fcn.0046b820
add esp, 4
mov esi, eax
push dword [0x884adc]
call ebp
lea edx, [esi + 0x7f]
and edx, 0xffffff80
mov dword [esp + 0x18], edx
mov ecx, dword [eax + 0xc]
add edx, ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x18]
cmp ecx, dword [eax + 8]
mov ecx, dword [esp + 0x10]
jg 0x5f1c0d
cmp edx, dword [eax + 0x10]
ja 0x5f1c0d
mov dword [eax + 0xc], edx
jmp 0x5f1c1e
push dword [esp + 0x18]
mov ecx, eax
call fcn.0046a3c0
mov ecx, eax
mov dword [esp + 0x10], eax
push esi
push ecx
lea ecx, [esp + 0x38]
call fcn.0046b060
xor esi, esi
test ebx, ebx
jle 0x5f1c5a
xor ebp, ebp
mov eax, dword [edi + 0x58]
lea ecx, [esp + 0x30]
push esi
mov eax, dword [eax]
push dword [eax + ebp + 0x50]
push 0x7d8954
call fcn.0046ba50
inc esi
lea ebp, [ebp + 0x80]
cmp esi, ebx
jl 0x5f1c31
mov ebp, dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp byte [0x8d4e2c], 0
jne 0x5f1c7d
push 0x8d4e2c
call fcn.005f1f40
add esp, 4
cmp byte [0x8d4e2c], 0
je 0x5f1ed9
mov eax, dword [edi + 0x60]
mov esi, dword [edi + 0x58]
mov dword [esp + 0x28], esi
mov dword [eax + 4], 0
push dword [0x884adc]
call ebp
push 0xc
mov ecx, dword [eax + 0x2c]
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, eax
test edx, edx
je 0x5f1cbc
mov dword [edx], 0
mov dword [edx + 4], 0
mov dword [edx + 8], connect
jmp 0x5f1cbe
xor edx, edx
mov dword [edi + 0x58], edx
mov ecx, dword [edx + 8]
and ecx, 0x3fffffff
cmp ecx, ebx
jge 0x5f1ceb
add ecx, ecx
mov eax, ebx
cmp ebx, ecx
push 0x80
cmovl eax, ecx
push eax
push edx
push 0x7d8954
call fcn.00467b80
add esp, 0x10
mov ecx, dword [edi + 0x5c]
call fcn.0046b370
push dword [esp + 0x44]
mov ebp, dword [esp + 0x44]
lea eax, [esp + 0x34]
push 1
push ebp
push eax
push esi
push dword [edi + 0x60]
push dword [edi + 0x5c]
push dword [edi + 0x58]
push 1
push edi
push dword [edi + 0x4c]
call fcn.005c38e0
mov eax, dword [ebp + 0xc]
add esp, 0x2c
mov dword [esp + 0x14], eax
test eax, eax
jne 0x5f1d30
mov eax, dword [ebp]
mov eax, dword [eax + 0x44]
mov dword [esp + 0x14], eax
mov ecx, dword [eax + 0x14]
cmp byte [eax + 0x18], 0
mov eax, dword [edi + 0x58]
mov dword [esp + 0x2c], ecx
setne byte [esp + 0x44]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
shl ecx, 7
mov byte [ecx + eax - 8], 0
test ebx, ebx
jle 0x5f1df7
xor eax, eax
mov dword [esp + 0x24], eax
nop
mov ebp, dword [esi]
mov esi, dword [edi + 0x5c]
add ebp, eax
mov ecx, esi
mov eax, dword [ebp + 0x50]
push eax
mov dword [esp + 0x24], eax
call fcn.0046b460
cmp eax, dword [esi + 8]
jle 0x5f1ddb
cmp byte [ebp + 0x7c], 0
je 0x5f1dd0
mov eax, dword [ebp + 0x58]
mov ebp, dword [esp + 0x40]
mov ecx, dword [esp + 0x14]
push dword [esp + 0x20]
mov dword [ebp + 4], eax
mov eax, dword [eax + 0x68]
mov dword [ecx + 0x14], eax
mov byte [ecx + 0x18], 1
mov ecx, edi
call fcn.00598e20
push 0
push ebp
mov ecx, eax
mov dword [esp + 0x24], eax
call fcn.00594f40
mov esi, eax
mov eax, dword [esp + 0x1c]
push ebp
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x1c]
test esi, esi
je 0x5f1dd0
mov ecx, dword [esp + 0x1c]
push 1
push ebp
call fcn.00594f40
push dword [esp + 0x20]
mov ecx, edi
call fcn.00598f90
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x28]
sub eax, 0xffffff80
mov dword [esp + 0x24], eax
sub ebx, 1
jne 0x5f1d60
mov ebp, dword [esp + 0x40]
test esi, esi
je 0x5f1e45
mov eax, dword [esi + 8]
mov dword [esi + 4], 0
test eax, eax
js 0x5f1e21
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 7
push eax
mov eax, dword [0x7d8954]
push dword [esi]
call dword [eax + 0x10]
mov dword [esi], 0
mov dword [esi + 8], connect
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push 0xc
push esi
mov ecx, dword [eax + 0x2c]
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x2c]
mov byte [edi + 0xae], 0
mov dword [eax + 0x14], ecx
mov cl, byte [esp + 0x44]
mov byte [eax + 0x18], cl
mov ecx, edi
call fcn.0059b2e0
mov eax, dword [ebp]
mov ebx, dword [eax + 0x40]
test ebx, ebx
je 0x5f1ea1
mov ecx, ebx
xor esi, esi
call fcn.005d0e90
cmp dword [eax + 4], esi
jle 0x5f1ea1
nop dword [eax]
mov ecx, ebx
call fcn.005d0e90
push dword [ebp]
mov eax, dword [eax]
mov ecx, dword [eax + esi*4]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, ebx
inc esi
call fcn.005d0e90
cmp esi, dword [eax + 4]
jl 0x5f1e80
mov ecx, edi
call fcn.0059b630
push dword [0x884c50]
mov ebp, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call ebp
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x5f1ed9
mov dword [esi], 0x77f5ec
rdtsc
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0x40]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov dword [edi + 4], eax
push 0x7d8954
lea ecx, [esp + 0x34]
call fcn.0046b3e0
lea ecx, [esp + 0x30]
call fcn.0046b110
push dword [0x884adc]
call ebp
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
lea edx, [ecx + 0xf]
and edx, 0xfffffff0
cmp ecx, dword [eax + 8]
jg 0x5f1f25
lea ecx, [edx + esi]
cmp ecx, dword [eax + 0xc]
jne 0x5f1f25
cmp dword [eax + 0x14], esi
je 0x5f1f25
pop edi
mov dword [eax + 0xc], esi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret 8
push edx
push esi
mov ecx, eax
call fcn.0046a590
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret 8