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

Disassembly:
push ecx
push ebx
mov ebx, dword [esp + 0xc]
push ebp
push esi
push edi
mov edi, dword [esp + 0x1c]
lea ebp, [ebx + 0x28]
mov edx, dword [ebx + 0x34]
mov eax, dword [ebx + 0x38]
movzx ecx, word [edi + 0x20]
mov eax, dword [edx + eax*4 - 4]
mov dword [edx + ecx*4], eax
movzx edx, word [edi + 0x20]
mov eax, dword [ebx + 0x34]
mov ecx, edx
mov eax, dword [eax + ecx*4]
mov word [eax + 0x20], dx
dec dword [ebx + 0x38]
mov eax, dword [ebp + 8]
and eax, 0x3fffffff
cmp dword [ebp + 4], eax
jne 0x529ee1
push 4
push ebp
push 0x7d8954
call fcn.00467c00
add esp, 0xc
mov ecx, dword [ebp + 4]
mov eax, dword [ebp]
mov dword [eax + ecx*4], edi
inc dword [ebp + 4]
mov ax, word [ebx + 0x2c]
dec ax
mov dword [edi + 0x34], 0
mov word [edi + 0x20], ax
mov al, byte [edi + 0x26]
and al, 0xfd
mov dword [edi + 0x38], 0
or al, 1
cmp dword [edi + 0x50], 0
mov byte [edi + 0x26], al
jle 0x529fbe
xor ebp, ebp
nop dword [eax + eax]
mov eax, dword [edi + 0x4c]
mov esi, dword [eax + ebp*4]
mov dword [esp + 0x1c], esi
lea eax, [esi + 0xf0]
push eax
sub esp, 8
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00650d40
xor eax, eax
add esp, 0xc
mov dword [esi + 0xea], eax
movzx eax, byte [ebx + 0x317]
movzx edx, byte [ebx + 0x316]
movzx esi, byte [ebx + 0x315]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + 0xe9]
mov ecx, eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x18]
and ecx, 3
and eax, 3
cmp al, cl
jae 0x529f8d
not esi
mov eax, dword [esp + 0x10]
shl esi, 0xe
cmp dword [esp + 0x18], eax
jge 0x529f9c
not edx
mov eax, dword [esp + 0x1c]
inc ebp
shl edx, 0xe
mov word [eax + 0xea], si
mov word [eax + 0xec], dx
cmp ebp, dword [edi + 0x50]
jl 0x529f20
lea ebp, [ebx + 0x28]
push dword [ebx + 0x78]
movss xmm0, dword [ebx + 0x1e0]
sub esp, 8
movss dword [esp + 4], xmm0
movss xmm0, dword [edi + 0x48]
movss dword [esp], xmm0
push edi
call fcn.0052dc80
mov eax, dword [edi + 0x4c]
add esp, 0x10
mov esi, dword [eax]
mov ecx, esi
call fcn.0045c0c0
push edi
push ebx
call fcn.00528780
add esp, 8
mov ecx, esi
cmp dword [esi + 0xcc], edi
jne 0x52a0af
call fcn.0045c160
cmp byte [esp + 0x20], 0
je 0x52a07f
mov ecx, dword [edi + 0x1c]
mov eax, dword [edi + 0x50]
add ecx, 3
inc eax
mov dword [esp + 0x18], 0
cmp eax, ecx
push edi
cmovg ecx, eax
push ecx
push ebp
push ebx
call fcn.0052cd30
add esp, 0x10
test eax, eax
je 0x52a07f
nop dword [eax]
mov ecx, dword [edi + 0x4c]
push edi
push eax
push ebx
mov esi, dword [ecx]
call fcn.0052a220
mov edi, dword [esi + 0xcc]
mov esi, dword [esp + 0x24]
inc esi
push edi
mov ecx, dword [edi + 0x1c]
mov eax, dword [edi + 0x50]
add ecx, 3
inc eax
mov dword [esp + 0x28], esi
cmp eax, ecx
cmovg ecx, eax
push ecx
push ebp
push ebx
call fcn.0052cd30
add esp, 0x1c
test eax, eax
jne 0x52a040
test esi, esi
jne 0x52a0a9
movzx ecx, word [edi + 0x20]
test ecx, ecx
je 0x52a0a9
mov eax, dword [ebp]
mov edx, dword [eax]
mov eax, dword [edi + 0x50]
cmp eax, dword [edx + 0x50]
jle 0x52a0a9
xor eax, eax
mov word [edi + 0x20], ax
mov word [edx + 0x20], cx
mov eax, dword [ebp]
mov dword [eax], edi
mov eax, dword [ebp]
mov dword [eax + ecx*4], edx
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret
pop edi
pop esi
pop ebp
pop ebx
add esp, 4
jmp fcn.0045c160