Function at 0x473f80
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x14c
mov ecx, dword [ebp + 0xc]
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov eax, dword [edi + 0xb828]
mov ebx, dword [eax + 0x3c]
push ecx
and ebx, 0xfffff
push ebx
lea edx, [ebp - 0x28]
push edx
lea ecx, [ebp - 0xc8]
push ecx
lea edx, [ebp - 0xc]
push edx
lea ecx, [ebp - 0x148]
push ecx
push 0x431048
xor esi, esi
push eax
mov ecx, edi
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x24], 1
mov dword [ebp - 0x20], 2
mov dword [ebp - 0x1c], 3
mov dword [ebp - 0x10], ebx
call fcn.004f3a10
cmp eax, esi
je 0x474022
mov edx, dword [ebp + 0xc]
push edx
push ebx
lea eax, [ebp - 0x28]
push eax
lea ecx, [ebp - 0xc8]
push ecx
mov ecx, dword [edi + 0xb828]
lea edx, [ebp - 0xc]
push edx
lea eax, [ebp - 0x148]
push eax
push 0x4310e8
push ecx
mov ecx, edi
call fcn.004f3a10
cmp eax, esi
jne 0x47426d
lea edx, [ebp - 0xc8]
lea eax, [ebp - 0xb8]
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], edx
mov dword [ebp - 8], eax
xor edi, edi
cmp ebx, esi
jbe 0x4740af
mov ecx, dword [ebp + 8]
mov dl, byte [ecx + 0xaf]
mov esi, dword [ebp - 0x14]
shr dl, 4
and dl, 1
mov byte [ebp - 1], dl
jmp 0x474057
mov dl, byte [ebp - 1]
mov eax, dword [esi]
mov ecx, dword [ebp + edi*4 - 0x98]
test dl, dl
je 0x474077
mov edx, dword [ecx + 0x48]
xor edx, dword [eax + 0x48]
cmp edx, 0x400
jne 0x4740ad
cmp dword [ecx + 0x44], eax
jmp 0x4740a3
mov edx, dword [eax + 0x10]
cmp edx, dword [ecx + 0x10]
jne 0x4740ad
mov edx, dword [eax + 0x24]
cmp edx, dword [ecx + 0x24]
jne 0x4740ad
mov edx, dword [eax + 0x28]
cmp edx, dword [ecx + 0x28]
jne 0x4740ad
mov edx, dword [eax + 0x2c]
cmp edx, dword [ecx + 0x2c]
jne 0x4740ad
mov ecx, dword [ecx + 0x48]
xor ecx, dword [eax + 0x48]
cmp ecx, 0x400
jne 0x4740ad
inc edi
add esi, 4
cmp edi, ebx
jb 0x474054
xor esi, esi
cmp edi, ebx
jne 0x474252
mov eax, dword [0x551d48]
cmp eax, esi
jge 0x4740c4
xor eax, eax
jmp 0x4740cb
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp dword [eax + 0x14], esi
je 0x4740f3
mov ecx, dword [eax + 0x14]
cmp ecx, esi
jne 0x4740dd
xor ecx, ecx
mov edi, ecx
jmp 0x474101
mov edx, dword [ecx]
mov dword [eax + 0x14], edx
cmp edx, esi
jne 0x4740e9
mov dword [eax + 0x18], esi
mov dword [ecx], 0xfefefefe
mov edi, ecx
jmp 0x474101
mov ecx, dword [eax + 0x10]
push 0x10
push 0x44
call fcn.00547721
mov edi, eax
cmp edi, esi
je 0x47427b
or eax, 0xffffffff
mov dword [edi + 0x10], eax
mov dword [edi + 0x20], eax
xor edx, edx
xor ecx, ecx
mov eax, ebx
push esi
and eax, 0xfffff
mov word [edi + 0x40], dx
mov word [edi + 0x42], cx
lea ecx, [ebx + ebx*2]
or eax, 0x70100000
push edi
mov edx, ebx
mov dword [edi], esi
mov dword [edi + 8], esi
mov dword [edi + 0x3c], esi
mov dword [edi + 4], esi
mov dword [edi + 0xc], esi
mov dword [edi + 0x14], esi
mov dword [edi + 0x18], esi
mov dword [edi + 0x1c], esi
mov dword [edi + 0x24], esi
mov dword [edi + 0x34], esi
mov dword [edi + 0x38], esi
call fcn.0050a980
cmp eax, esi
mov dword [ebp - 0x1c], eax
jl 0x474289
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0xb828]
mov ecx, dword [eax + 0x34]
mov dword [edi + 0x34], ecx
mov edx, dword [eax + 0x38]
mov eax, dword [ebp + 8]
mov dword [edi + 0x38], edx
mov ecx, dword [eax + 0xb828]
mov edx, dword [ecx + 0xc]
mov eax, dword [edi + 0xc]
lea esi, [ebx*4]
push esi
push edx
push eax
call sub.msvcrt.dll_memcpy
mov edx, dword [edi + 4]
add esp, 0xc
push esi
lea ecx, [ebp - 0xa8]
push ecx
push edx
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp - 8]
mov ecx, dword [edi + 4]
add esp, 0xc
push esi
push eax
add ecx, esi
push ecx
call sub.msvcrt.dll_memcpy
mov eax, dword [edi + 4]
add ebx, ebx
add esp, 0xc
add ebx, ebx
push esi
lea edx, [ebp - 0x98]
add ebx, ebx
push edx
add eax, ebx
push eax
call sub.msvcrt.dll_memcpy
mov ecx, dword [edi + 0xc]
mov eax, dword [edi + 4]
mov esi, dword [ecx]
mov edx, dword [eax]
mov ecx, dword [esi + 0x10]
mov ebx, dword [eax + ebx]
add esp, 0xc
mov dword [ebp - 0x1c], edx
cmp ecx, dword [edx + 0x10]
jne 0x4741fa
mov eax, dword [esi + 0x28]
cmp eax, dword [edx + 0x28]
je 0x474214
cmp ecx, dword [ebx + 0x10]
jne 0x474207
mov edx, dword [esi + 0x28]
cmp edx, dword [ebx + 0x28]
je 0x474214
mov ebx, dword [ebp + 8]
cmp ecx, dword [ebx + 0x3688]
je 0x474220
jmp 0x474217
mov ebx, dword [ebp + 8]
test byte [ebx + 0xaf], 0x10
je 0x474241
mov eax, dword [ebx]
mov edx, dword [eax + 0x3c]
push 0
push edi
mov ecx, ebx
call edx
test al, al
jne 0x474241
mov esi, dword [esi + 0x10]
mov eax, dword [esi + 8]
and eax, 0x20
xor ecx, ecx
xor esi, esi
or eax, ecx
je 0x4742a1
mov esi, edi
call fcn.0050a890
call fcn.0050cb90
mov ebx, dword [ebp - 0x10]
xor esi, esi
mov eax, dword [ebp - 0x18]
mov ecx, 0x10
add dword [ebp - 0x14], ecx
sub dword [ebp - 8], ecx
inc eax
mov dword [ebp - 0x18], eax
cmp eax, 2
jb 0x474037
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, 0x8007000e
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov esi, edi
call fcn.0050a890
call fcn.0050cb90
mov eax, dword [ebp - 0x1c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
cmp byte [ebp + 0xc], 0
jne 0x4742bb
mov eax, dword [ebp - 0x148]
mov ecx, dword [eax + 0x3c]
mov dword [ebp - 0x10], ecx
mov dword [eax + 0x3c], esi
mov dword [eax], esi
mov dword [eax + 8], esi
test byte [ebx + 0xaf], 0x10
je 0x474335
mov eax, dword [ebp - 0x1c]
test byte [eax + 0x48], 1
jne 0x474335
mov edx, dword [eax + 0xc]
mov ecx, dword [eax + 8]
mov eax, ecx
mov dword [ebp - 0x1c], edx
and eax, 4
xor edx, edx
or eax, edx
je 0x4742ea
and ecx, 0x10
xor eax, eax
or ecx, eax
jne 0x474335
mov eax, edi
call fcn.0046f000
mov eax, dword [ebx + 0xb828]
cmp eax, esi
je 0x474306
mov eax, dword [eax + 0x38]
cmp eax, esi
je 0x474306
mov ecx, eax
jmp 0x474308
xor ecx, ecx
push 0x43e2f0
push ebx
mov eax, 0x125f
call fcn.004f47f0
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x148]
mov dword [ecx + 0x3c], eax
add esp, 8
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
cmp byte [ebp + 0xc], 0
jne 0x4743e1
mov edx, dword [ebp - 0xc]
xor ecx, ecx
cmp edx, esi
jbe 0x474364
jmp 0x474350
mov eax, dword [ebp + ecx*4 - 0x148]
inc ecx
mov dword [eax + 0x3c], esi
mov dword [eax], esi
mov dword [eax + 8], esi
cmp ecx, edx
jb 0x474350
or edx, 0xffffffff
mov ecx, edi
call fcn.004670b0
mov esi, dword [ebx + 0xb828]
mov eax, dword [esi + 0x10]
mov ecx, dword [ebx + 0x10]
cmp eax, ecx
jae 0x47438a
mov edx, dword [ebx + 0x14]
cmp dword [edx + eax*4], esi
jne 0x47438a
mov ebx, eax
jmp 0x4743b2
mov ebx, ecx
test ebx, ebx
jbe 0x4743ac
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x14]
lea eax, [ecx + ebx*4]
lea esp, [esp]
sub eax, 4
dec ebx
cmp dword [eax], esi
je 0x4743ad
test ebx, ebx
ja 0x4743a0
dec ebx
cmp ebx, 0xffffffff
je 0x474418
call fcn.0050a890
call fcn.0050cb90
mov esi, dword [ebp + 8]
mov edx, dword [esi + 0x14]
mov dword [edx + ebx*4], edi
or edx, 0xffffffff
mov ecx, edi
mov dword [edi + 0x10], ebx
call fcn.004670b0
or dword [esi + 0x18], 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [ebx + 0xb828]
push edi
push eax
call fcn.0050b3a0
mov esi, eax
mov eax, edi
call fcn.0046f000
test esi, esi
jge 0x474406
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ebx, dword [ebx + 0xb828]
mov ecx, dword [ebx + 0x34]
mov dword [ebx + 0x34], ecx
mov edx, dword [ebx + 0x38]
mov dword [ebx + 0x38], edx
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 8