Function at 0x477230
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
mov eax, dword [0x551d48]
sub esp, 0x10
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
xor edi, edi
cmp eax, edi
jge 0x47724d
xor eax, eax
jmp 0x477254
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp dword [eax + 0x14], edi
je 0x477282
mov ecx, dword [eax + 0x14]
cmp ecx, edi
jne 0x477269
xor ecx, ecx
mov ebx, ecx
mov dword [ebp - 4], ebx
jmp 0x477293
mov edx, dword [ecx]
mov dword [eax + 0x14], edx
cmp edx, edi
jne 0x477275
mov dword [eax + 0x18], edi
mov ebx, ecx
mov dword [ecx], 0xfefefefe
mov dword [ebp - 4], ebx
jmp 0x477293
mov ecx, dword [eax + 0x10]
push 0x10
push 0x44
call fcn.00547721
mov ebx, eax
mov dword [ebp - 4], eax
cmp ebx, edi
je 0x4772e5
or eax, 0xffffffff
mov dword [ebx + 0x10], eax
xor ecx, ecx
xor edx, edx
mov dword [ebx + 0x20], eax
xor eax, eax
mov dword [ebx], edi
mov dword [ebx + 8], edi
mov dword [ebx + 0x3c], edi
mov dword [ebx + 4], edi
mov word [ebx + 0x40], cx
mov dword [ebx + 0xc], edi
mov word [ebx + 0x42], dx
mov dword [ebx + 0x14], edi
mov dword [ebx + 0x18], edi
mov dword [ebx + 0x1c], edi
mov dword [ebx + 0x24], edi
mov dword [ebx + 0x34], edi
mov dword [ebx + 0x38], edi
mov dword [ebp - 0xc], edi
cmp dword [ebp + 0x14], edi
jbe 0x477315
cmp byte [ebp + 0x18], 0
je 0x4772f3
mov ecx, dword [ebp + 0xc]
cmp dword [ecx + eax*4], 0xffffffff
jmp 0x477309
mov eax, 0x8007000e
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov edx, dword [esi + 0xb828]
mov ecx, dword [edx + 0xc]
mov edx, dword [ecx + eax*4]
mov ecx, dword [edx + 0x2c]
mov edx, dword [ebp + 0xc]
cmp dword [edx + ecx*4], 0xffffffff
je 0x47730c
inc edi
inc eax
cmp eax, dword [ebp + 0x14]
jb 0x4772d6
mov dword [ebp - 0xc], edi
cmp byte [ebp + 0x18], 0
mov edx, 1
jne 0x477322
mov edx, edi
mov eax, dword [esi + 0xb828]
mov eax, dword [eax + 0x3c]
mov ecx, edi
imul ecx, dword [ebp + 0x10]
and eax, 0xfff00000
push 0
or eax, edi
push ebx
call fcn.0050a980
mov edi, eax
test edi, edi
jl 0x4774a3
cmp byte [ebp + 0x18], 0
mov eax, dword [esi + 0xb828]
mov ecx, dword [eax + 0x34]
mov dword [ebx + 0x34], ecx
mov edx, dword [eax + 0x38]
mov dword [ebx + 0x38], edx
je 0x47736f
cmp dword [ebp - 0xc], 1
jne 0x47736f
mov dword [ebx + 0x3c], 0x20500001
xor ecx, ecx
cmp dword [ebp + 0x10], ecx
jbe 0x477437
xor eax, eax
mov dword [ebp - 8], eax
cmp dword [ebp + 0x14], eax
jbe 0x47742d
cmp byte [ebp + 0x18], 0
je 0x4773c6
mov edx, dword [ebp + 0xc]
cmp dword [edx + eax*4], 0xffffffff
je 0x477423
mov esi, dword [esi + 0xb828]
mov esi, dword [esi + 4]
mov ebx, dword [ebp - 4]
mov ebx, dword [ebx + 4]
mov edx, ecx
imul edx, dword [ebp + 0x14]
mov edi, ecx
imul edi, dword [ebp - 0xc]
add edx, eax
add edi, dword [ebp - 8]
mov edx, dword [esi + edx*4]
mov esi, dword [ebp + 8]
mov dword [ebx + edi*4], edx
jmp 0x47741d
mov edx, dword [esi + 0xb828]
mov edi, dword [edx + 0xc]
mov edi, dword [edi + eax*4]
mov edi, dword [edi + 0x2c]
mov ebx, dword [ebp + 0xc]
cmp dword [ebx + edi*4], 0xffffffff
je 0x477420
mov edx, dword [edx + 4]
mov ebx, dword [ebp - 4]
mov ebx, dword [ebx + 4]
mov esi, ecx
imul esi, dword [ebp + 0x14]
mov edi, ecx
imul edi, dword [ebp - 0xc]
add edi, dword [ebp - 8]
add esi, eax
mov edx, dword [edx + esi*4]
mov esi, dword [ebp + 8]
mov dword [ebx + edi*4], edx
test ecx, ecx
jne 0x47741d
mov edx, dword [esi + 0xb828]
mov edx, dword [edx + 0xc]
mov edi, dword [ebp - 4]
mov edi, dword [edi + 0xc]
mov edx, dword [edx + eax*4]
mov ebx, dword [ebp - 8]
mov dword [edi + ebx*4], edx
inc dword [ebp - 8]
mov ebx, dword [ebp - 4]
inc eax
cmp eax, dword [ebp + 0x14]
jb 0x477388
inc ecx
cmp ecx, dword [ebp + 0x10]
jb 0x47737a
cmp byte [ebp + 0x18], 0
je 0x47748c
mov eax, dword [esi + 0xb828]
fldz
mov ecx, dword [eax + 0xc]
mov eax, dword [ecx]
mov ecx, dword [esi + 0x3688]
mov edx, dword [ecx + 0x10]
sub esp, 8
lea edi, [edx + 1]
fstp qword [esp]
mov dword [ecx + 0x10], edi
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
and eax, 0x70001ff
push eax
and ecx, 0x80000000
push ecx
mov ecx, dword [esi + 0x3688]
push 0
push edx
mov edx, dword [ebx + 0xc]
push ecx
push edx
push esi
call fcn.00508980
mov edi, eax
test edi, edi
jl 0x4774a3
push ebx
call fcn.00508740
mov edi, eax
test edi, edi
jl 0x4774a3
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov esi, ebx
call fcn.0050a890
mov eax, dword [0x551d48]
test eax, eax
jl 0x4774f3
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
test esi, esi
je 0x4774f3
push 0x44
push 0xfe
push ebx
call sub.msvcrt.dll_memset
mov dword [ebx], 0
mov eax, dword [esi + 0x18]
add esp, 0xc
test eax, eax
je 0x4774ed
mov dword [eax], ebx
mov dword [esi + 0x18], ebx
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov dword [esi + 0x14], ebx
mov dword [esi + 0x18], ebx
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14