Function at 0x10015400
Capabilities:
Get thread local storage value

Disassembly:
sub esp, 0x98
mov eax, dword [0x1002b150]
push ebx
push esi
push edi
push ebp
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
mov ecx, dword [esp + 0xb4]
mov eax, dword [esp + 0xb0]
lea edx, [esp + 0x28]
shl eax, 2
push eax
push ecx
push edx
call fcn.1000eef0
mov dword [esp + 0x30], 0
add esp, 0xc
cmp dword [esi + 0x6f8], 0
jbe 0x10015687
mov eax, dword [esi + 0x7bc]
mov ecx, dword [esp + 0xac]
cmp eax, ecx
ja 0x10015462
mov ecx, eax
cmp eax, ecx
jne 0x10015479
mov eax, dword [esp + 0xb0]
cmp dword [esi + 0x7c0], eax
jne 0x10015479
lea ecx, [esp + 0x28]
jmp 0x10015495
mov eax, dword [esp + 0xb0]
push eax
push ecx
lea ecx, [esp + 0x30]
push ecx
call fcn.10005070
add esp, 0xc
lea ecx, [esi + 0x5868]
mov eax, dword [esi + 0x7b0]
cmp eax, 5
ja case.0x100154a0.1
jmp dword [eax*4 + 0x100156d4]
lea eax, [esi + 0x7e8]
push eax
push ecx
call fcn.10005b50
jmp 0x100154ff
lea eax, [esi + 0x7e8]
push eax
push ecx
call fcn.100052c0
jmp 0x100154ff
lea eax, [esi + 0x7e8]
push eax
push ecx
call fcn.100055a0
jmp 0x100154ff
lea eax, [esi + 0x7e8]
push eax
push ecx
call fcn.10006c50
jmp 0x100154ff
lea eax, [esi + 0x7e8]
push eax
push ecx
call fcn.10008e60
jmp 0x100154ff
lea eax, [esi + 0x7e8]
push eax
push ecx
call fcn.10008e80
add esp, 8
xor eax, eax
cmp dword [esi + 0x7c4], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x10], eax
jle 0x100155ce
lea edi, [esi + 0x7cc]
mov eax, dword [edi + 0x53e4]
mov edx, dword [edi + 0x542c]
mov ecx, dword [esi + eax*8 + 0x5b90]
mov eax, dword [esi + edx*8 + 0x5bd8]
xor ebx, ebx
mov dword [esp + 0x1c], ecx
mov ecx, dword [edi + 0x5474]
mov dword [esp + 0x14], eax
cmp dword [edi], ebx
mov edx, dword [esi + ecx*8 + 0x5c20]
mov dword [esp + 0x18], edx
jle 0x100155b7
mov eax, dword [esp + 0x10]
shl eax, 8
lea ebp, [eax + esi + 0x7e8]
mov eax, dword [esp + 0x1c]
lea ecx, [esi + 0x47e8]
push eax
push ecx
push ebp
call section..text
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
add esp, 0xc
lea eax, [edi + 0x511c]
push ecx
push edx
push eax
lea ecx, [esi + 0x47e8]
push ecx
call fcn.1000ef60
add esp, 0x10
mov dword [esi + 0x5d84], eax
test eax, eax
jne 0x100156b2
inc ebx
add ebp, 0x100
inc dword [esp + 0x10]
cmp dword [edi], ebx
jg 0x10015565
add edi, 4
inc dword [esp + 0x20]
mov eax, dword [esp + 0x20]
cmp dword [esi + 0x7c4], eax
jg 0x1001551e
mov eax, dword [esi + 0x7e0]
test eax, eax
je 0x1001562d
dec eax
mov dword [esi + 0x7e0], eax
jne 0x1001562d
mov eax, dword [esi + 0x700]
mov dword [esi + 0x7e0], eax
mov eax, dword [esi + 0x7dc]
or eax, 0xd0
push eax
call fcn.10010a00
add esp, 4
mov dword [esi + 0x5d84], eax
test eax, eax
jne 0x100156c3
mov eax, dword [esi + 0x7dc]
inc eax
cdq
xor eax, edx
sub eax, edx
and eax, 7
xor eax, edx
sub eax, edx
mov dword [esi + 0x7dc], eax
call fcn.100107a0
mov eax, dword [esi + 0x7bc]
cmp dword [esp + 0xac], eax
jbe 0x10015668
sub dword [esp + 0xac], eax
cmp dword [esp + 0xb0], 0
jle 0x10015673
lea eax, [esp + 0x28]
mov ecx, dword [esp + 0xb0]
mov edx, dword [esi + 0x7c8]
add dword [eax], edx
add eax, 4
dec ecx
jne 0x10015658
jmp 0x10015673
mov dword [esp + 0xac], 0
inc dword [esp + 0x24]
mov eax, dword [esp + 0x24]
cmp dword [esi + 0x6f8], eax
ja 0x1001544d
mov eax, dword [esi + 0x7e4]
dec eax
mov dword [esi + 0x7e4], eax
jne 0x100156a5
call fcn.100109b0
mov dword [esi + 0x5d84], eax
test eax, eax
jne 0x100156a7
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x98
ret
mov eax, dword [esi + 0x5d84]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x98
ret
mov eax, dword [esi + 0x5d84]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x98
ret