Function at 0x4e40a0
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0xdc
push ebx
push esi
mov esi, dword [ebp + 0x20]
push edi
xor edi, edi
test esi, esi
je 0x4e40eb
lea ebx, [edi + 5]
lea ebx, [ebx]
mov eax, dword [esi + 8]
test eax, eax
je 0x4e4135
cmp dword [eax + 4], ebx
jne 0x4e4135
mov eax, dword [eax + 0x14]
test eax, eax
je 0x4e4135
push 7
call fcn.0049da60
test al, al
jne 0x4e4135
mov esi, dword [esi + 0xc]
inc edi
test esi, esi
jne 0x4e40c0
cmp edi, 7
ja 0x4e4135
mov eax, dword [ebp + 0x14]
xor ebx, ebx
mov dword [ebp - 4], eax
test eax, eax
jbe 0x4e420f
mov edi, eax
lea ecx, [ecx]
mov edx, dword [ebp + 0x10]
lea eax, [edi + ebx]
shr eax, 1
lea ecx, [eax + eax*8]
shl ecx, 5
mov esi, dword [ecx + edx + 8]
mov ecx, dword [ebp + 0x1c]
mov dl, byte [ecx]
cmp dl, byte [esi]
jne 0x4e4143
test dl, dl
je 0x4e4131
mov dl, byte [ecx + 1]
cmp dl, byte [esi + 1]
jne 0x4e4143
add ecx, 2
add esi, 2
test dl, dl
jne 0x4e4115
xor ecx, ecx
jmp 0x4e4148
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x28
sbb ecx, ecx
sbb ecx, 0xffffffff
test ecx, ecx
jle 0x4e4151
lea ebx, [eax + 1]
jmp 0x4e4158
jge 0x4e4161
mov edi, eax
mov dword [ebp - 4], edi
cmp ebx, edi
jb 0x4e4100
jmp 0x4e420f
lea ecx, [eax + 1]
mov ebx, eax
mov dword [ebp - 4], ecx
test eax, eax
jbe 0x4e41b8
mov edi, dword [ebp + 0x1c]
lea edx, [eax + eax*8]
mov eax, dword [ebp + 0x10]
shl edx, 5
lea esi, [edx + eax - 0x118]
mov ecx, dword [esi]
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4e41a4
test dl, dl
je 0x4e41a0
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4e41a4
add eax, 2
add ecx, 2
test dl, dl
jne 0x4e4184
xor eax, eax
jmp 0x4e41a9
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4e41b8
dec ebx
sub esi, 0x120
test ebx, ebx
ja 0x4e4180
mov edi, dword [ebp + 0x14]
mov eax, dword [ebp - 4]
cmp eax, edi
jae 0x4e420f
mov edx, dword [ebp + 0x10]
lea ecx, [eax + eax*8]
shl ecx, 5
lea esi, [ecx + edx + 8]
nop
mov ecx, dword [esi]
mov eax, dword [ebp + 0x1c]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4e41f5
test dl, dl
je 0x4e41f1
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4e41f5
add eax, 2
add ecx, 2
test dl, dl
jne 0x4e41d5
xor eax, eax
jmp 0x4e41fa
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4e420f
mov eax, dword [ebp - 4]
inc eax
add esi, 0x120
mov dword [ebp - 4], eax
cmp eax, edi
jb 0x4e41d0
mov eax, dword [ebp + 0x28]
test eax, eax
je 0x4e4218
mov dword [eax], ebx
mov eax, dword [ebp + 0x2c]
test eax, eax
je 0x4e4224
mov ecx, dword [ebp - 4]
mov dword [eax], ecx
mov eax, dword [ebp - 4]
cmp ebx, eax
je 0x4e4135
mov dword [ebp + 0x2c], ebx
jae 0x4e45ac
mov eax, dword [ebp + 0x10]
lea edx, [ebx + ebx*8]
shl edx, 5
lea ecx, [edx + eax + 0x18]
mov dword [ebp + 0x1c], ecx
mov ecx, dword [ebp + 0x20]
or eax, 0xffffffff
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], eax
mov eax, 0x10
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], eax
xor eax, eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], eax
mov eax, 1
mov dword [ebp + 0x14], eax
mov dword [ebp + 0x28], ecx
test ecx, ecx
je 0x4e4354
mov edx, dword [ebp + 0x1c]
lea esi, [edx + 0x18]
cmp eax, 7
jae 0x4e4331
cmp dword [esi], 0
je 0x4e4331
cmp dword [esi + 0x10], 0xffffffff
jne 0x4e42c6
inc eax
mov dword [ebp + 0x14], eax
jmp 0x4e44a1
mov edx, dword [ecx + 8]
mov ebx, dword [edx + 0x14]
mov eax, dword [ebx]
mov edx, dword [eax + 0x28]
lea ecx, [ebp - 0xc0]
push ecx
push 0xa
mov ecx, ebx
call edx
test al, al
je 0x4e4331
mov eax, dword [esi + 0x10]
mov eax, dword [ebp + eax*4 - 0x44]
mov edi, dword [ebp - 0xc0]
test eax, eax
je 0x4e43e1
cmp eax, 2
jne 0x4e430e
cmp edi, 9
je 0x4e43e1
cmp edi, 8
je 0x4e43e1
cmp edi, 2
jne 0x4e43d7
cmp eax, edi
je 0x4e43ec
cmp eax, 9
je 0x4e43ec
cmp eax, 8
je 0x4e43ec
cmp dword [ebp + 0x28], 0
jne 0x4e4595
mov edx, dword [ebp + 0x1c]
mov eax, dword [ebp + 0x14]
cmp eax, 7
jae 0x4e4357
lea eax, [eax + eax*4]
cmp dword [edx + eax*8 - 0x10], 0
jne 0x4e4595
mov edx, dword [ebp + 0x1c]
mov ecx, dword [edx - 8]
or ecx, dword [edx - 4]
je 0x4e4392
mov eax, dword [edx]
cmp eax, 0xffffffff
je 0x4e4392
cmp dword [ebp + eax*4 - 0x44], 0
lea eax, [ebp + eax*4 - 0x44]
jne 0x4e4392
mov ecx, dword [edx + 4]
mov ecx, dword [ecx]
mov dword [eax], ecx
mov eax, dword [edx + 8]
cmp eax, 0xffffffff
je 0x4e4392
cmp dword [ebp + eax*4 - 0x28], 0x10
lea eax, [ebp + eax*4 - 0x28]
jne 0x4e4392
mov ecx, dword [edx + 0xc]
mov ecx, dword [ecx]
mov dword [eax], ecx
xor ebx, ebx
add edx, 0xc
mov dword [ebp + 0x14], edx
mov esi, edx
cmp dword [esi - 0xc], 0xffffffff
mov ecx, dword [esi - 8]
je 0x4e4580
mov edx, dword [ebp + ebx*4 - 0x44]
test edx, edx
je 0x4e44d9
cmp edx, 2
jne 0x4e44b7
mov eax, dword [ecx]
cmp eax, 9
je 0x4e43ce
cmp eax, 8
jne 0x4e44b7
mov dword [ebp + ebx*4 - 0x44], eax
jmp 0x4e44ce
cmp edi, eax
jne 0x4e4331
jmp 0x4e43ec
mov eax, dword [esi + 0x10]
add eax, eax
add eax, eax
mov dword [ebp + eax - 0x44], edi
mov edx, dword [esi + 0x18]
cmp dword [ebp + edx*4 - 0x28], 0x10
mov ecx, dword [ebp - 0xbc]
mov eax, edx
jne 0x4e4408
add eax, eax
add eax, eax
mov dword [ebp + eax - 0x28], ecx
jmp 0x4e441c
lea eax, [ebp + eax*4 - 0x28]
push eax
mov eax, dword [eax]
call fcn.004abb80
test eax, eax
jl 0x4e4331
cmp edi, 2
je 0x4e4473
mov eax, dword [esi + 0x20]
test eax, eax
jge 0x4e443e
mov ecx, dword [ebp - 0x90]
not eax
cmp dword [ebp + eax*4 - 0x60], ecx
lea eax, [ebp + eax*4 - 0x60]
jbe 0x4e444a
mov dword [eax], ecx
jmp 0x4e444a
cmp dword [ebp - 0x90], eax
jb 0x4e4331
mov eax, dword [esi + 0x24]
test eax, eax
jge 0x4e4467
mov ecx, dword [ebp - 0x8c]
not eax
cmp dword [ebp + eax*4 - 0x60], ecx
lea eax, [ebp + eax*4 - 0x60]
jbe 0x4e4473
mov dword [eax], ecx
jmp 0x4e4473
cmp dword [ebp - 0x8c], eax
jb 0x4e4331
mov eax, dword [esi + 8]
and eax, 0x20
xor ecx, ecx
or eax, ecx
je 0x4e4495
mov eax, dword [ebx]
mov edx, dword [eax + 0x24]
lea ecx, [ebp - 8]
push ecx
mov ecx, ebx
call edx
test byte [eax], 2
jne 0x4e4331
inc dword [ebp + 0x14]
mov edx, dword [ebp + 0x1c]
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x28]
mov ecx, dword [ecx + 0xc]
add esi, 0x28
mov dword [ebp + 0x28], ecx
test ecx, ecx
jne 0x4e42ad
jmp 0x4e4341
mov eax, dword [ecx]
test eax, eax
je 0x4e44ce
lea ecx, [ecx]
cmp edx, eax
je 0x4e44ce
mov eax, dword [ecx + 4]
add ecx, 4
test eax, eax
jne 0x4e44c0
cmp dword [ecx], 0
je case.0x4e453c.27
jmp 0x4e44e3
test ecx, ecx
je 0x4e44e3
mov edx, dword [ecx]
mov dword [ebp + ebx*4 - 0x44], edx
mov edx, dword [ebp + ebx*4 - 0x28]
mov edi, dword [esi]
mov ecx, edi
cmp edx, 0x10
je 0x4e4567
mov eax, dword [ecx]
cmp eax, 0x10
je 0x4e450f
cmp eax, 0x11
je case.0x4e453c.27
cmp edx, eax
je 0x4e450f
mov eax, dword [ecx + 4]
add ecx, 4
cmp eax, 0x10
jne 0x4e44f7
mov ecx, dword [ecx]
cmp ecx, 0x11
je case.0x4e453c.27
cmp dword [ebp + ebx*4 - 0x44], 6
jne 0x4e455a
cmp ecx, 0x10
jne 0x4e4571
mov esi, dword [edi]
cmp esi, edx
je 0x4e4552
cmp edx, 0x12
je 0x4e4552
lea eax, [esi - 0x14]
cmp eax, 0x1b
ja case.0x4e453c.27
movzx eax, byte [eax + 0x4e49d8]
jmp dword [eax*4 + 0x4e49c8]
cmp edx, 0x14
jmp 0x4e4550
cmp edx, 0x1e
je 0x4e4552
cmp edx, 0x2c
jne case.0x4e453c.27
cmp esi, 0x10
je case.0x4e453c.27
mov esi, dword [ebp + 0x14]
cmp ecx, 0x10
jne 0x4e4571
mov ecx, dword [edi]
mov dword [ebp + ebx*4 - 0x28], ecx
jmp 0x4e4571
test ecx, ecx
je 0x4e4571
mov edx, dword [ecx]
mov dword [ebp + ebx*4 - 0x28], edx
cmp dword [ebp + ebx*4 - 0x60], 0xffffffff
jne 0x4e4580
mov dword [ebp + ebx*4 - 0x60], 1
inc ebx
add esi, 0x28
mov dword [ebp + 0x14], esi
cmp ebx, 7
jb 0x4e439c
cmp ebx, 7
je 0x4e45ac
mov eax, dword [ebp + 0x2c]
add dword [ebp + 0x1c], 0x120
inc eax
mov dword [ebp + 0x2c], eax
cmp eax, dword [ebp - 4]
jb 0x4e4248
mov esi, dword [ebp + 0x2c]
cmp esi, dword [ebp - 4]
je 0x4e4135
mov eax, dword [0x551d48]
test eax, eax
jge 0x4e45c5
xor eax, eax
jmp 0x4e45cc
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [eax]
push 0x10
push 0xb8
call fcn.00547721
test eax, eax
je 0x4e45ea
call fcn.0049d7c0
mov dword [ebp + 0x1c], eax
test eax, eax
jne 0x4e4604
mov edx, dword [ebp + 8]
mov edi, 0x8007000e
mov byte [edx + 0x188], 1
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x28
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 8]
lea eax, [esi + esi*8]
mov esi, dword [edx + 0x24]
shl eax, 5
mov ecx, dword [eax + ecx + 8]
mov dword [ebp + 0x28], eax
mov eax, ecx
neg eax
sbb eax, eax
and eax, 0x7fffbffb
add eax, 0x80004005
js 0x4e4669
cmp byte [ecx], 0
jne 0x4e463c
mov eax, dword [ebp + 0x1c]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
jmp 0x4e4673
mov eax, ecx
lea edi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4e4641
mov ebx, dword [ebp + 0x1c]
add ebx, 8
push ebx
push ecx
lea ecx, [esi + 0x30]
sub eax, edi
push ecx
add esi, 0x48
push esi
mov edi, eax
call fcn.00533790
test eax, eax
jge 0x4e46ee
mov edi, eax
test eax, eax
jl 0x4e49a8
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0x28]
mov eax, dword [edx + ecx]
mov ebx, dword [ebp + 0x1c]
mov esi, dword [ebp + 0xc]
mov dword [ebx + 0x30], eax
lea edi, [ebx + 0x10]
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x34]
xor eax, eax
mov dword [ebx + 0x48], edx
mov dword [ebp + 0x14], eax
lea ecx, [ecx]
mov ecx, dword [ebp + 0x28]
lea eax, [eax + eax*4]
lea edx, [ecx + eax*8]
mov eax, dword [ebp + 0x10]
cmp dword [edx + eax + 8], 0
lea edi, [edx + eax + 8]
je 0x4e4996
mov ecx, dword [edi + 8]
or ecx, dword [edi + 0xc]
je 0x4e497b
cmp dword [edi + 0x10], 0xffffffff
jne 0x4e475b
mov eax, dword [edi + 0x20]
test eax, eax
je 0x4e474c
mov ecx, dword [edi + 0x24]
test ecx, ecx
je 0x4e474c
test eax, eax
jge 0x4e46fb
not eax
mov edx, dword [ebp + eax*4 - 0x60]
mov dword [ebp - 4], edx
jmp 0x4e4700
mov edx, dword [ebx]
mov eax, dword [ebp + 0x1c]
mov dword [eax + 0xc], edx
jmp 0x4e4673
jbe 0x4e4700
mov dword [ebp - 4], eax
test ecx, ecx
jge 0x4e470f
not ecx
mov eax, dword [ebp + ecx*4 - 0x60]
mov dword [ebp + 0x2c], eax
jmp 0x4e4714
jbe 0x4e4714
mov dword [ebp + 0x2c], ecx
mov eax, 1
cmp dword [ebp + 0x2c], eax
jne 0x4e498c
cmp dword [ebp - 4], eax
jne 0x4e498c
mov ecx, dword [ebp + 0x18]
test ecx, ecx
je 0x4e4780
mov edx, dword [ecx]
mov edx, dword [edx + 8]
lea eax, [ebp + 0x20]
push eax
push 0
call edx
cmp eax, 0xffffffff
jne 0x4e4780
mov eax, dword [ebp + 0x20]
jmp 0x4e48b3
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x4e4780
mov dword [ebp + 0x20], eax
jmp 0x4e48b3
mov eax, dword [edi + 0x18]
cmp eax, 0xffffffff
jne 0x4e47a5
mov ecx, dword [ebp + 0x18]
test ecx, ecx
je 0x4e4780
mov eax, dword [ecx]
mov eax, dword [eax + 8]
lea edx, [ebp - 8]
push edx
push 0
call eax
cmp eax, 0xffffffff
je 0x4e4843
mov edi, 0x80004005
mov edx, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
push 0x4439f4
xor ecx, ecx
call fcn.004a7840
add esp, 4
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x28
mov esi, dword [ebp + eax*4 - 0x28]
cmp esi, 0xe
jge 0x4e47ba
mov ecx, dword [ebp + 8]
mov esi, dword [ecx + esi*4 + 0x38]
jmp 0x4e4838
mov edx, dword [ebp + 8]
cmp dword [edx + esi*4 + 0x70], 0
jne 0x4e4831
mov eax, dword [0x551d48]
test eax, eax
jge 0x4e47d1
xor eax, eax
jmp 0x4e47d8
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [eax]
push 0x10
push 0x30
call fcn.00547721
xor ecx, ecx
cmp eax, ecx
je 0x4e481e
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov dword [eax], 0x441ad0
mov dword [eax + 4], 6
mov dword [eax + 0x14], 0xf
mov dword [eax + 0x2c], 1
mov dword [eax + 0x14], esi
mov dword [eax + 0x18], ecx
mov dword [eax + 0x20], ecx
mov dword [eax + 0x24], ecx
mov dword [eax + 0x28], ecx
jmp 0x4e482a
mov eax, dword [ebp + 8]
mov byte [eax + 0x188], 1
xor eax, eax
mov ecx, dword [ebp + 8]
mov dword [ecx + esi*4 + 0x70], eax
mov edx, dword [ebp + 8]
mov esi, dword [edx + esi*4 + 0x70]
mov dword [ebp - 8], esi
test esi, esi
je 0x4e45ea
mov eax, dword [edi + 0x20]
test eax, eax
jge 0x4e4850
not eax
mov eax, dword [ebp + eax*4 - 0x60]
mov dword [ebp - 0xc], eax
mov eax, dword [edi + 0x24]
test eax, eax
jge 0x4e4862
not eax
mov ebx, dword [ebp + eax*4 - 0x60]
jmp 0x4e4864
mov ebx, eax
mov edx, dword [edi + 0xc]
mov ecx, dword [edi + 8]
mov dword [ebp - 0x64], edx
mov eax, ecx
xor edx, edx
and eax, 0xc00
cmp dword [ebp + 0x14], edx
je 0x4e4884
and ecx, 0x20
xor esi, esi
or ecx, esi
jne 0x4e4889
or eax, 0x200
mov ecx, dword [ebp - 0xc]
push ebx
push ecx
push edx
mov edx, dword [ebp - 8]
push eax
mov eax, dword [edi + 0x10]
mov ecx, dword [ebp + eax*4 - 0x44]
push edx
mov edx, dword [ebp + 0xc]
push ecx
mov ecx, dword [ebp + 8]
push edx
call fcn.004aa9f0
mov dword [ebp + 0x20], eax
test eax, eax
je 0x4e45ea
cmp dword [ebp + 0x14], 0
jne 0x4e48f3
mov ecx, dword [ebp + 0x28]
mov edx, dword [ebp + 0x10]
mov esi, dword [ecx + edx + 0x10]
or esi, dword [ecx + edx + 0x14]
mov ebx, dword [ebp + 0x1c]
je 0x4e497b
mov dword [ebx + 0x48], eax
mov dword [ebx + 0x34], 0
test eax, eax
je 0x4e497b
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 4]
call eax
mov dword [ebx + 0x34], eax
jmp 0x4e497b
mov eax, dword [0x551d48]
test eax, eax
jge 0x4e4900
xor eax, eax
jmp 0x4e4907
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [eax]
push 0x10
push 0xb0
call fcn.00547721
test eax, eax
je 0x4e45ea
call fcn.0049d660
mov esi, eax
test esi, esi
je 0x4e45ea
mov dword [esi + 0x30], 0xffffffff
mov ecx, dword [edi + 8]
mov dword [esi + 0x68], ecx
mov edx, dword [edi + 0xc]
mov dword [esi + 0x6c], edx
mov eax, dword [ebp + 0x20]
mov ecx, eax
mov dword [esi + 0x48], eax
mov dword [esi + 0x34], 0
test ecx, ecx
je 0x4e495c
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
mov dword [esi + 0x34], eax
mov ebx, dword [ebp + 0x1c]
mov dword [esi + 0x4c], ebx
mov dword [esi + 0x58], 0
mov eax, dword [ebx + 0x54]
test eax, eax
je 0x4e4975
mov dword [eax + 0x58], esi
jmp 0x4e4978
mov dword [ebx + 0x50], esi
mov dword [ebx + 0x54], esi
mov eax, dword [ebp + 0x14]
inc eax
mov dword [ebp + 0x14], eax
cmp eax, 7
jae 0x4e4996
jmp 0x4e46a0
mov edi, 0x80004001
jmp 0x4e4785
mov ecx, dword [ebp + 0x24]
xor edi, edi
mov dword [ecx], ebx
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x28
cmp eax, 0x8007000e
jne 0x4e4785
mov edx, dword [ebp + 8]
mov eax, edi
pop edi
pop esi
mov byte [edx + 0x188], 1
pop ebx
mov esp, ebp
pop ebp
ret 0x28