Function at 0x47834c
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
mov eax, 0x2070
call fcn.0053ec40
mov eax, dword [0x54109c]
mov ebx, ecx
test eax, eax
je 0x4785c8
dec eax
push eax
call sub.kernel32.dll_TlsGetValue
cmp eax, 1
jbe 0x47838b
mov edi, eax
mov eax, dword [eax]
or eax, dword [edi + 4]
je 0x47838b
add edi, 8
jmp 0x4785be
mov eax, dword [0x54109c]
test eax, eax
je 0x4785d7
dec eax
push eax
call sub.kernel32.dll_TlsGetValue
cmp eax, 1
mov dword [esp + 8], eax
je 0x4785bc
cmp dword [esp + 8], 0
jne 0x478400
mov al, byte [0x5c91e8]
mov ecx, 0x1080
mov edx, 8
call fcn.0041aa20
test eax, eax
mov dword [esp + 8], eax
je 0x47864e
mov ecx, dword [esp + 8]
xor eax, eax
mov dword [ecx + 4], eax
mov dword [ecx], eax
mov dword [ecx + 0x1078], 0x54109c
mov eax, dword [0x54109c]
test eax, eax
je 0x4785e6
dec eax
push dword [esp + 8]
push eax
call sub.kernel32.dll_TlsSetValue
test ebx, ebx
je 0x47848a
mov eax, dword [ebx]
xor ecx, ecx
mov dword [ebx], ecx
or eax, dword [ebx + 4]
mov dword [ebx + 4], ecx
je 0x47848a
lea esi, [ebx + 8]
lea edi, [esp + 0x60]
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x1068]
mov eax, dword [ebx + 0x5c]
movsd xmm0, qword [ebx + 0x54]
mov edi, dword [ebx + 0x48]
mov dword [esp + 0x30], eax
mov eax, dword [ebx + 0x64]
movsd qword [esp + 0x28], xmm0
movsd xmm0, qword [ebx + 0x4c]
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 0x6c]
movsd qword [esp + 0x20], xmm0
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 0x60]
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + 0x68]
mov dword [esp + 0x14], eax
lea eax, [ebx + 0x70]
push 0x1004
push eax
push ecx
call sub.msvcrt.dll_memcpy
mov eax, edi
add esp, 0xc
mov ecx, dword [ebx + 0x1074]
mov dword [esp + 0xc], ecx
jmp 0x478538
lea esi, [esp + 0x60]
lea edx, [esp + 0x50]
mov ecx, esi
mov byte [edx + 0xf], 5
call fcn.004769c2
cmp dword [esi], 0
jne 0x4785f5
lea eax, [esp + 0x1068]
lea esi, [esp + 0x64]
push 0x1004
push esi
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
xorps xmm0, xmm0
movsd xmm1, qword [esp + 0x58]
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0x2000000
mov dword [esp + 0x14], 0x2000000
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
movaps xmmword [esi - 4], xmm0
movaps xmmword [esi + 0xc], xmm0
movaps xmmword [esi + 0x1c], xmm0
movaps xmmword [esi + 0x2c], xmm0
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 0x44], xmm1
movsd qword [esp + 0x3c], xmm0
movsd xmm0, qword [esp + 0x38]
movsd xmm1, qword [esp + 0x40]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x30], eax
movsd qword [esp + 0x20], xmm0
movsd qword [esp + 0x28], xmm1
mov eax, 0x10
mov ebx, dword [esp + 8]
lea esi, [esp + 0x60]
mov ecx, 0x10
lea edx, [ebx + 8]
mov dword [ebx + 4], 0
mov dword [ebx], 1
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov dword [ebx + 0x48], eax
mov edi, edx
lea ecx, [esp + 0x1068]
movsd xmm0, qword [esp + 0x20]
movsd xmm1, qword [esp + 0x28]
movsd qword [ebx + 0x4c], xmm0
movsd qword [ebx + 0x54], xmm1
mov eax, dword [esp + 0x30]
mov dword [ebx + 0x5c], eax
mov eax, dword [esp + 0x18]
mov dword [ebx + 0x64], eax
mov eax, dword [esp + 0x1c]
mov dword [ebx + 0x60], eax
mov eax, dword [esp + 0x10]
mov dword [ebx + 0x6c], eax
mov eax, dword [esp + 0x14]
mov dword [ebx + 0x68], eax
lea eax, [ebx + 0x70]
push 0x1004
push ecx
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0xc]
mov dword [ebx + 0x1074], eax
jmp 0x4785be
xor edi, edi
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, 0x54109c
call fcn.004832d0
jmp 0x47836f
mov ecx, 0x54109c
call fcn.004832d0
jmp 0x478399
mov ecx, 0x54109c
call fcn.004832d0
jmp 0x4783f6
mov eax, dword [esp + 0x74]
movsd xmm0, qword [esp + 0x64]
movsd xmm1, qword [esp + 0x6c]
lea ecx, [esp + 0x38]
xor edx, edx
lea esi, [esp + 0x20]
mov dword [esi], ecx
inc edx
mov dword [esi + 4], 0x4787ed
mov dword [ecx + 0x10], eax
movsd qword [ecx + 8], xmm1
movsd qword [ecx], xmm0
lea ecx, [esp + 0x1068]
mov dword [ecx], 0x568b6c
mov dword [ecx + 4], edx
mov dword [ecx + 0x10], 0
mov dword [ecx + 8], esi
mov dword [ecx + 0xc], edx
mov edx, 0x568bd0
call fcn.00444350
ud2
mov ecx, 8
mov edx, 0x1080
call fcn.0041b1c0
ud2