Function at 0x476fd0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x24
push ebx
push esi
push edi
mov esi, ecx
call fcn.0047b060
mov eax, dword [ebp + 8]
mov dword [esi], vtable.hkp3AxisSweep.0
mov ecx, dword [eax]
mov dword [esi + 0x20], ecx
mov edx, dword [eax + 4]
mov dword [esi + 0x24], edx
mov ecx, dword [eax + 8]
mov dword [esi + 0x28], ecx
mov edx, dword [eax + 0xc]
mov eax, dword [ebp + 0xc]
mov dword [esi + 0x2c], edx
mov ecx, dword [eax]
mov dword [esi + 0x30], ecx
mov edx, dword [eax + 4]
mov dword [esi + 0x34], edx
mov ecx, dword [eax + 8]
mov dword [esi + 0x38], ecx
mov edx, dword [eax + 0xc]
mov dword [esi + 0x3c], edx
xor eax, eax
lea edi, [esi + 0xac]
mov dword [esi + 0xa0], eax
mov dword [esi + 0xa4], eax
mov ecx, bind
mov dword [esi + 0xa8], ecx
mov dword [edi + 8], ecx
mov dword [edi + 0x14], ecx
mov dword [edi + 0x20], ecx
mov ecx, dword [ebp + 0x10]
cmp ecx, eax
mov dword [edi], eax
mov dword [edi + 4], eax
mov dword [edi + 0xc], eax
mov dword [edi + 0x10], eax
mov dword [edi + 0x18], eax
mov dword [edi + 0x1c], eax
jne 0x477062
mov ecx, 1
or edx, 0xffffffff
cmp ecx, eax
mov dword [esp + 0x14], edx
jle 0x47707d
lea ecx, [ecx]
sar ecx, 1
add edx, 1
cmp ecx, eax
jg 0x477070
mov dword [esp + 0x14], edx
mov eax, dword [esi + 0xa8]
lea ecx, [esi + 0xa0]
and eax, 0x3fffffff
cmp eax, 0xff
jge 0x4770af
add eax, eax
cmp eax, 0xff
jg 0x4770a3
mov eax, 0xff
push 0x10
push eax
push ecx
call fcn.004026b0
add esp, 0xc
fldz
mov ecx, 0x17
fst dword [esi + 0x4c]
fst dword [esi + 0x48]
fst dword [esi + 0x44]
fst dword [esi + 0x40]
fst dword [esi + 0x5c]
fst dword [esi + 0x58]
fst dword [esi + 0x54]
fst dword [esi + 0x50]
fld1
fst dword [esi + 0x60]
fst dword [esi + 0x64]
fst dword [esi + 0x68]
fstp dword [esi + 0x6c]
fld dword [0x4b9c64]
fstp dword [esp + 0x10]
fld dword [0x4b9c60]
fstp dword [esp + 0xc]
fld dword [0x4c59c0]
fld qword [0x4b2f68]
fld1
fld qword [0x4b9f08]
jmp 0x47710c
fxch st(3)
fxch st(4)
fxch st(3)
fld dword [esp + 0xc]
fadd dword [esp + 0x10]
fmul st(3)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fld st(0)
fadd st(3)
fstp dword [esp + 0x18]
fld dword [esi + 0x50]
fadd dword [esp + 0x18]
fstp dword [esp + 0x20]
fld dword [esi + 0x60]
fmul dword [esp + 0x20]
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fcomp st(5)
fnstsw ax
fxch st(4)
test ah, 5
jnp 0x47714f
fst dword [esp + 0x20]
fxch st(5)
fcom dword [esp + 0x20]
fnstsw ax
test ah, 5
jnp 0x477160
fst dword [esp + 0x20]
fld dword [esp + 0x20]
fadd st(2)
fstp dword [esp + 0x20]
mov eax, dword [esp + 0x20]
shr eax, 7
fxch st(4)
or eax, 1
cmp ax, 0xc
jae 0x477182
fstp dword [esp + 0x10]
jmp 0x477186
fstp dword [esp + 0xc]
sub ecx, 1
jne 0x477106
fstp st(4)
lea ebx, [esi + 0xa0]
fstp st(0)
fstp st(2)
fld dword [esp + 0xc]
fadd dword [esp + 0x10]
fmulp st(2)
fxch st(1)
fsub qword [0x4b9c58]
fstp dword [esi + 0xdc]
fst dword [esi + 0x6c]
fst dword [esi + 0x68]
fst dword [esi + 0x64]
fst dword [esi + 0x60]
fst dword [esi + 0x4c]
fst dword [esi + 0x48]
fst dword [esi + 0x44]
fst dword [esi + 0x40]
fst dword [esi + 0x5c]
fst dword [esi + 0x58]
fst dword [esi + 0x54]
fstp dword [esi + 0x50]
mov ecx, dword [ebx + 8]
and ecx, 0x3fffffff
cmp dword [ebx + 4], ecx
jne 0x4771f0
push 0x10
push ebx
call fcn.00402730
add esp, 8
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x14]
mov ebx, eax
add eax, 1
mov dword [esi + 0xa4], eax
xor eax, eax
shl ebx, 4
add ebx, dword [esi + 0xa0]
mov word [ebx + 2], ax
mov word [ebx], ax
mov word [ebx + 8], ax
mov eax, 1
shl eax, cl
mov dword [esp + 0x1c], ebx
lea ecx, [eax + eax + 0x1fe]
mov dword [esp + 0x18], eax
mov eax, dword [edi + 8]
and eax, 0x3fffffff
cmp eax, ecx
jge 0x47724e
add eax, eax
cmp ecx, eax
jl 0x477242
mov eax, ecx
push 4
push eax
push edi
call fcn.004026b0
add esp, 0xc
mov eax, dword [esi + 0xc0]
lea ecx, [esi + 0xb8]
and eax, 0x3fffffff
cmp eax, 0x200
jge 0x477280
add eax, eax
cmp eax, 0x200
jg 0x477274
mov eax, 0x200
push 4
push eax
push ecx
call fcn.004026b0
add esp, 0xc
mov eax, dword [esi + 0xcc]
lea ecx, [esi + 0xc4]
and eax, 0x3fffffff
cmp eax, 0x200
jge 0x4772b2
add eax, eax
cmp eax, 0x200
jg 0x4772a6
mov eax, 0x200
push 4
push eax
push ecx
call fcn.004026b0
add esp, 0xc
mov edx, dword [edi + 4]
mov ecx, dword [edi]
xor eax, eax
mov word [esp + 0x12], ax
mov word [esp + 0x10], ax
mov eax, dword [esp + 0x10]
mov dword [ecx + edx*4], eax
add dword [edi + 4], 1
mov edx, dword [esi + 0xbc]
mov ecx, dword [esi + 0xb8]
mov dword [ecx + edx*4], eax
add dword [esi + 0xbc], 1
mov edx, dword [esi + 0xc8]
mov ecx, dword [esi + 0xc4]
mov dword [ecx + edx*4], eax
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ecx, 1
add dword [esi + 0xc8], ecx
add eax, 0xffffffff
mov dword [esi + 0xd4], edx
xor edx, edx
cmp eax, edx
mov dword [esp + 0x18], eax
mov dword [esi + 0xd0], eax
mov dword [esi + 0xd8], edx
je 0x47734f
mov eax, dword [0x4c6060]
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edx, dword [esp + 0x18]
push 0x21
shl edx, 4
push edx
mov ecx, eax
call fcn.004025a0
mov dword [esi + 0xd8], eax
mov ecx, 1
xor edx, edx
xor eax, eax
cmp dword [esi + 0xd0], edx
mov dword [esp + 0x14], eax
jle 0x47746d
xor ecx, ecx
mov dword [esp + 0x10], ecx
jmp 0x477372
xor edx, edx
mov ebx, dword [esi + 0xd8]
add ebx, ecx
je 0x47738b
mov dword [ebx + 4], edx
mov dword [ebx + 8], edx
mov dword [ebx + 0xc], bind
jmp 0x47738d
xor ebx, ebx
mov dx, word [esi + 0xa4]
mov ecx, 0x10
sub ecx, dword [esi + 0xd4]
add eax, 1
shl eax, cl
mov word [ebx], dx
mov word [esp + 0xe], dx
mov word [ebx + 2], ax
mov ecx, dword [esi + 0xa8]
lea ebx, [esi + 0xa0]
and ecx, 0x3fffffff
cmp dword [ebx + 4], ecx
mov word [esp + 0xc], ax
jne 0x4773d7
push 0x10
push ebx
call fcn.00402730
add esp, 8
mov ecx, dword [ebx + 4]
mov eax, ecx
add ecx, 1
mov dword [ebx + 4], ecx
mov dx, word [esi + 0xb0]
shl eax, 4
add eax, dword [ebx]
mov ebx, dword [esp + 0xc]
mov word [eax + 8], dx
mov ecx, dword [edi + 4]
mov edx, dword [edi]
mov dword [edx + ecx*4], ebx
mov ecx, 1
add dword [edi + 4], ecx
or word [esp + 0xc], cx
mov cx, word [esi + 0xb0]
mov ebx, dword [esp + 0xc]
mov word [eax + 0xa], cx
mov edx, dword [edi + 4]
mov ecx, dword [edi]
mov dword [ecx + edx*4], ebx
mov ecx, dword [esp + 0x10]
mov edx, 1
add dword [edi + 4], edx
mov ebx, ecx
or ebx, edx
mov dword [eax + 0xc], ebx
mov word [eax + 2], 0
mov word [eax], 0
mov word [eax + 6], dx
mov word [eax + 4], dx
mov eax, dword [esp + 0x14]
add eax, edx
add ecx, 0x10
cmp eax, dword [esi + 0xd0]
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], ecx
jl 0x477370
mov ebx, dword [esp + 0x1c]
mov ecx, edx
xor edx, edx
movzx eax, word [esi + 0xb0]
mov word [ebx + 0xa], ax
movzx eax, word [esi + 0xbc]
mov word [ebx + 4], ax
movzx eax, word [esi + 0xc8]
mov word [ebx + 6], ax
mov ebx, dword [edi]
mov word [esp + 0x16], dx
mov edx, dword [edi + 4]
mov word [esp + 0x14], 0xfffd
mov eax, dword [esp + 0x14]
mov dword [ebx + edx*4], eax
add dword [edi + 4], ecx
mov edx, dword [esi + 0xbc]
mov edi, dword [esi + 0xb8]
mov dword [edi + edx*4], eax
add dword [esi + 0xbc], ecx
mov edx, dword [esi + 0xc8]
mov edi, dword [esi + 0xc4]
mov dword [edi + edx*4], eax
add dword [esi + 0xc8], ecx
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc