Function at 0x524c30
Capabilities:
Get thread local storage value
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x454
mov eax, dword [esp + 0x464]
mov ecx, dword [esp + 0x474]
push esi
shl ecx, 7
mov edx, dword [eax + 0xc]
add ecx, 0x90
mov eax, dword [eax + 0x14]
add edx, 0x10
push edi
xor edi, edi
mov dword [esp + 0x444], ecx
mov dword [esp + 0x42c], 0
lea esi, [eax*4 + 0x17]
mov dword [esp + 0x440], edi
and esi, 0xfffffff0
mov dword [esp + 0x428], edx
mov dword [esp + 0x44c], esi
mov dword [esp + 0x43c], edi
lea eax, [esi + edx]
add eax, ecx
mov ecx, dword [esp + 0x470]
mov dword [esp + 0x430], eax
test ecx, ecx
jne 0x524cf0
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea edx, [esp + 0x420]
push edx
mov ecx, dword [eax + 0x34]
mov eax, dword [esp + 0x434]
mov dword [esp + 0x424], eax
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov edx, dword [esp + 0x420]
mov ecx, eax
mov dword [esp + 0x430], edx
add edx, eax
mov dword [esp + 0x434], eax
jmp 0x524d00
mov edx, dword [esp + 0x474]
mov dword [esp + 0x434], edi
add edx, ecx
mov dword [esp + 0x454], ecx
add ecx, dword [esp + 0x444]
mov dword [esp + 0x448], ecx
add ecx, dword [esp + 0x428]
mov eax, ecx
mov dword [esp + 0x458], eax
mov dword [esp + 0x438], ecx
add ecx, esi
cmp ecx, edx
jbe 0x524e7e
push dword [0x884adc]
cmp dword [esp + 0x44c], edx
jae 0x524e4b
mov ecx, dword [esp + 0x470]
mov edi, dword [ecx + 8]
add edi, 0x10
cmp eax, edx
jb 0x524e00
mov ecx, dword [ecx + 0xc]
mov eax, edx
sub eax, edi
mov esi, eax
mov dword [esp + 0x45c], eax
sub esi, dword [esp + 0x44c]
xor eax, eax
test esi, esi
cmovg eax, esi
sub ecx, eax
add ecx, edi
mov edi, dword [esp + 0x450]
add edi, ecx
mov dword [esp + 0x474], ecx
mov dword [esp + 0x444], edi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push edi
mov ecx, dword [eax + 0x28]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
call eax
mov edx, dword [esp + 0x440]
mov edi, eax
add edx, edi
test esi, esi
mov esi, dword [esp + 0x44c]
jns 0x524de4
mov eax, dword [esp + 0x46c]
mov dword [esp + 0x448], edi
mov dword [esp + 0x43c], 0
mov ecx, dword [eax + 0xc]
add ecx, 0x10
add ecx, edi
jmp 0x524d1c
mov ecx, dword [esp + 0x470]
mov eax, dword [esp + 0x458]
add ecx, edi
mov dword [esp + 0x43c], edi
jmp 0x524d25
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea ecx, [esi + 0x7f]
and ecx, 0xffffff80
mov edi, dword [eax + 0xc]
lea edx, [ecx + edi]
cmp ecx, dword [eax + 8]
jg 0x524e30
cmp edx, dword [eax + 0x10]
ja 0x524e30
mov dword [eax + 0xc], edx
mov ecx, edi
mov eax, dword [esp + 0x458]
lea edx, [edi + esi]
jmp 0x524d25
push ecx
mov ecx, eax
call fcn.0046a3c0
mov edi, eax
mov eax, dword [esp + 0x458]
mov ecx, edi
lea edx, [edi + esi]
jmp 0x524d25
mov edi, ecx
sub edi, dword [esp + 0x438]
mov dword [esp + 0x444], edi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push edi
mov ecx, dword [eax + 0x28]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
call eax
mov edx, dword [esp + 0x440]
mov edi, eax
mov ecx, edi
add edx, edi
jmp 0x524d00
mov esi, dword [esp + 0x454]
xorps xmm0, xmm0
xor ecx, ecx
mov dword [esp + 0x450], edi
mov word [esi], 1
mov dword [esi + 8], 0
movaps xmmword [esi + 0x30], xmm0
movaps xmmword [esi + 0x10], xmm0
movaps xmmword [esi + 0x20], xmm0
movaps xmmword [esi + 0x70], xmm0
movaps xmm0, xmmword [0x719490]
movaps xmmword [esi + 0x40], xmm0
movaps xmm0, xmmword [0x7194a0]
movaps xmmword [esi + 0x50], xmm0
movaps xmm0, xmmword [0x7194b0]
movaps xmmword [esi + 0x60], xmm0
cmp dword [esp + 0x47c], ecx
jle 0x524f10
mov edi, dword [esp + 0x478]
mov eax, 0x80
mov esi, dword [esp + 0x47c]
nop word [eax + eax]
mov edx, dword [edi + ecx*4]
cmp eax, dword [edx + 0xa4]
je 0x524f01
mov dword [edx + 0xa4], eax
inc ecx
sub eax, 0xffffff80
cmp ecx, esi
jl 0x524ef0
mov esi, dword [esp + 0x454]
lea eax, [esi + 0x80]
mov esi, dword [esp + 0x478]
push eax
push 0xe0
push dword [esp + 0x484]
mov dword [esp + 0x420], eax
push esi
push dword [esp + 0x470]
call fcn.00523ff0
mov ecx, dword [esp + 0x480]
add esp, 0x14
mov byte [eax], 3
xor eax, eax
cmp dword [ecx + 0x14], eax
jle 0x524f6d
mov edx, dword [esp + 0x438]
nop dword [eax]
mov dword [edx + eax*4], 0
inc eax
cmp eax, dword [ecx + 0x14]
jl 0x524f60
mov ecx, dword [esp + 0x47c]
lea edi, [esp + 0x14]
mov edx, dword [esp + 0x448]
mov eax, esi
mov dword [esp + 8], edi
mov edi, dword [esp + 0x450]
lea ecx, [esi + ecx*4]
mov dword [esp + 0x44c], edx
mov dword [esp + 0x470], edx
mov dword [esp + 0x444], esi
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0x80000100
mov dword [esp + 0x41c], 0x100
mov dword [esp + 0x418], 0x200
cmp esi, ecx
jae 0x525279
mov edi, dword [esp + 0x468]
nop dword [eax]
mov ecx, dword [eax]
movzx eax, word [ecx + 0xb0]
mov esi, dword [ecx + 0xac]
lea eax, [eax + eax*2]
shl eax, 4
add eax, dword [ecx + 0xac]
mov dword [esp + 0x424], eax
cmp esi, eax
jae 0x525241
nop word [eax + eax]
test byte [esi + 0x12], 0xd
je 0x52509b
mov eax, dword [esi]
mov dword [edi + 0x60], eax
mov eax, dword [esi + 0x1c]
mov dword [edi + 0x64], eax
mov eax, dword [esi]
mov ecx, dword [eax + 0x14]
mov edx, dword [eax + 0x18]
mov eax, dword [ecx + 0xa4]
add eax, dword [esp + 0x454]
mov dword [edi + 0x30], eax
mov eax, dword [edx + 0xa4]
add eax, dword [esp + 0x454]
mov dword [edi + 0x34], eax
mov eax, dword [ecx + 0x18]
mov dword [edi + 0x38], eax
mov eax, dword [edx + 0x18]
mov dword [edi + 0x3c], eax
test byte [esi + 0x12], 9
je 0x52507c
mov eax, dword [esi]
push 2
mov eax, dword [eax + 0xc]
push dword [eax + 0x28]
push edi
push eax
call fcn.0053c040
mov edx, dword [esp + 0x480]
add esp, 0x10
jmp 0x525083
mov edx, dword [esp + 0x44c]
test byte [esi + 0x12], 4
je 0x52509b
mov eax, dword [esi]
push edi
mov ecx, dword [eax + 0xc]
mov eax, dword [ecx]
call dword [eax + 0x44]
mov edx, dword [esp + 0x470]
cmp byte [esi + 0x13], 4
jb 0x5250d8
mov eax, dword [esp + 0x10]
and eax, 0x3fffffff
cmp dword [esp + 0xc], eax
jne 0x5250c4
push 4
lea eax, [esp + 0xc]
push eax
push 0x7d8954
call fcn.00467c00
add esp, 0xc
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov dword [ecx + eax*4], esi
inc dword [esp + 0xc]
jmp 0x525223
cmp edx, dword [esp + 0x458]
jb 0x525114
movss xmm0, dword [edx]
addss xmm0, dword [0x77f9a4]
mov ecx, dword [esp + 0x43c]
mov eax, ecx
sub eax, edx
mov dword [esp + 0x458], 0xffffffff
mov dword [edx + 4], eax
movss dword [edx], xmm0
mov byte [edx], 2
mov dword [esp + 0x470], ecx
mov eax, dword [esi + 0xc]
mov edx, 0x100
movzx ecx, word [esi + 0x10]
prefetchnta byte [eax]
prefetchnta byte [eax + 0x40]
prefetchnta byte [eax + 0x80]
prefetchnta byte [eax + 0xc0]
cmp cx, dx
jbe 0x52517c
prefetchnta byte [eax + 0x100]
mov edx, 0x200
prefetchnta byte [eax + 0x140]
prefetchnta byte [eax + 0x180]
prefetchnta byte [eax + 0x1c0]
cmp cx, dx
jbe 0x52517c
prefetchnta byte [eax + 0x200]
prefetchnta byte [eax + 0x240]
prefetchnta byte [eax + 0x280]
prefetchnta byte [eax + 0x2c0]
mov ecx, dword [esi + 4]
mov edx, dword [esi + 8]
mov eax, dword [ecx + 0xa4]
add eax, dword [esp + 0x454]
mov dword [edi + 0x30], eax
mov eax, dword [edx + 0xa4]
add eax, dword [esp + 0x454]
mov dword [edi + 0x34], eax
lea eax, [ecx + 0xf0]
mov dword [edi + 0x38], eax
lea eax, [edx + 0xf0]
mov dword [edi + 0x3c], eax
mov eax, dword [esi]
mov dword [edi + 0x60], eax
mov eax, dword [esi + 0x1c]
mov dword [edi + 0x64], eax
mov eax, dword [ecx + 0xa4]
shr eax, 7
movzx eax, ax
mov dword [edi + 0x6c], eax
mov eax, dword [edx + 0xa4]
shr eax, 7
movzx eax, ax
mov dword [edi + 0x70], eax
mov eax, dword [edi + 0x64]
mov dword [edi + 0x74], eax
mov ecx, dword [esi + 0xc]
movzx eax, word [esi + 0x10]
cmp word [ecx], 0x19
jne 0x525210
lea eax, [esp + 0x470]
mov byte [esp + 0x428], 1
push eax
push dword [esp + 0x42c]
push edi
push ecx
call fcn.006ef300
jmp 0x525220
lea edx, [esp + 0x470]
push edx
push edi
push eax
push ecx
call fcn.006ea440
add esp, 0x10
mov edx, dword [esp + 0x470]
add esi, 0x30
mov dword [esp + 0x44c], edx
cmp esi, dword [esp + 0x424]
jb 0x525010
mov edx, dword [esp + 0x47c]
mov esi, dword [esp + 0x478]
mov eax, dword [esp + 0x444]
add eax, 4
mov dword [esp + 0x444], eax
lea ecx, [esi + edx*4]
mov edx, dword [esp + 0x44c]
cmp eax, ecx
jb 0x524fe0
mov edi, dword [esp + 0x450]
xor ecx, ecx
mov dword [esp + 0x444], ecx
cmp dword [esp + 0xc], ecx
jle 0x52542e
mov esi, dword [esp + 0x468]
mov edi, dword [esp + 0x458]
nop word [eax + eax]
mov eax, dword [esp + 8]
mov ecx, dword [eax + ecx*4]
mov dword [esp + 0x458], ecx
cmp edx, edi
jb 0x5252e4
movss xmm0, dword [edx]
mov ecx, dword [esp + 0x43c]
mov eax, ecx
addss xmm0, dword [0x77f9a4]
sub eax, edx
or edi, 0xffffffff
mov dword [edx + 4], eax
movss dword [edx], xmm0
mov byte [edx], 2
mov dword [esp + 0x470], ecx
mov ecx, dword [esp + 0x458]
mov eax, dword [ecx + 0xc]
movzx edx, word [ecx + 0x10]
prefetchnta byte [eax]
prefetchnta byte [eax + 0x40]
prefetchnta byte [eax + 0x80]
prefetchnta byte [eax + 0xc0]
cmp dx, word [esp + 0x41c]
jbe 0x52534c
prefetchnta byte [eax + 0x100]
prefetchnta byte [eax + 0x140]
prefetchnta byte [eax + 0x180]
prefetchnta byte [eax + 0x1c0]
cmp dx, word [esp + 0x418]
jbe 0x52534c
prefetchnta byte [eax + 0x200]
prefetchnta byte [eax + 0x240]
prefetchnta byte [eax + 0x280]
prefetchnta byte [eax + 0x2c0]
mov ecx, dword [ecx + 4]
mov edx, dword [esp + 0x458]
mov eax, dword [ecx + 0xa4]
add eax, dword [esp + 0x454]
mov edx, dword [edx + 8]
mov dword [esi + 0x30], eax
mov eax, dword [edx + 0xa4]
add eax, dword [esp + 0x454]
mov dword [esi + 0x34], eax
lea eax, [ecx + 0xf0]
mov dword [esi + 0x38], eax
lea eax, [edx + 0xf0]
mov dword [esi + 0x3c], eax
mov eax, dword [esp + 0x458]
mov eax, dword [eax]
mov dword [esi + 0x60], eax
mov eax, dword [esp + 0x458]
mov eax, dword [eax + 0x1c]
mov dword [esi + 0x64], eax
mov eax, dword [ecx + 0xa4]
shr eax, 7
movzx eax, ax
mov dword [esi + 0x6c], eax
mov eax, dword [edx + 0xa4]
shr eax, 7
movzx eax, ax
mov dword [esi + 0x70], eax
mov eax, dword [esi + 0x64]
mov dword [esi + 0x74], eax
mov eax, dword [esp + 0x458]
mov ecx, dword [eax + 0xc]
movzx edx, word [eax + 0x10]
lea eax, [esp + 0x470]
push eax
cmp word [ecx], 0x19
jne 0x5253fc
mov byte [esp + 0x428], 1
push dword [esp + 0x428]
push esi
push ecx
call fcn.006ef300
jmp 0x525404
push esi
push edx
push ecx
call fcn.006ea440
mov ecx, dword [esp + 0x454]
add esp, 0x10
mov edx, dword [esp + 0x470]
inc ecx
mov dword [esp + 0x444], ecx
cmp ecx, dword [esp + 0xc]
jl 0x5252a0
mov edi, dword [esp + 0x450]
mov dword [edx], 0
mov eax, dword [esp + 0x10]
mov dword [esp + 0xc], 0
test eax, eax
js 0x52545e
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 2
push eax
mov eax, dword [0x7d8954]
push dword [esp + 0xc]
call dword [eax + 0x10]
push dword [esp + 0x438]
mov esi, dword [esp + 0x468]
push dword [esp + 0x458]
push dword [esp + 0x450]
push esi
call fcn.006ddac0
add esp, 0x10
mov dword [esp + 0x470], eax
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
mov eax, dword [ecx + 4]
cmp eax, dword [ecx + 0xc]
jae 0x5254c0
mov edx, dword [esp + 0x46c]
mov dword [eax], 0x786a40
movd xmm0, dword [edx + 0x10]
cvtdq2ps xmm0, xmm0
movss dword [eax + 4], xmm0
add eax, 8
mov dword [ecx + 4], eax
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
mov eax, dword [ecx + 4]
cmp eax, dword [ecx + 0xc]
jae 0x5254f3
movd xmm0, dword [esp + 0x47c]
cvtdq2ps xmm0, xmm0
mov dword [eax], str.MiNumEntities
movss dword [eax + 4], xmm0
add eax, 8
mov dword [ecx + 4], eax
cmp dword [esp + 0x470], 1
jne 0x52558d
push dword [esp + 0x454]
push dword [esp + 0x44c]
push dword [esp + 0x440]
push esi
call fcn.006f24a0
push 0xe0
push dword [esp + 0x490]
push dword [esp + 0x490]
push dword [esp + 0x430]
push dword [esp + 0x480]
push esi
call fcn.00524350
push dword [esp + 0x4a4]
mov dword [esp + 0x458], eax
mov eax, dword [esp + 0x4a4]
push eax
mov eax, dword [eax]
mov eax, dword [eax + 8]
push dword [eax + 0x78]
call fcn.005269a0
mov ecx, dword [esp + 0x47c]
add esp, 0x34
mov eax, dword [ecx]
test eax, eax
je 0x52558d
push eax
lea eax, [ecx + 0x10]
push eax
mov eax, dword [esp + 0x474]
push dword [eax + 0x18]
call fcn.00528f30
add esp, 0xc
mov esi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
test edi, edi
je 0x5255b0
push dword [0x884adc]
call esi
mov edx, dword [esp + 0x440]
push edx
push edi
mov ecx, dword [eax + 0x28]
mov eax, dword [ecx]
call dword [eax + 8]
mov edi, dword [esp + 0x434]
test edi, edi
je 0x5255d4
push dword [0x884adc]
call esi
mov ecx, dword [eax + 0x34]
mov eax, dword [esp + 0x430]
push eax
push edi
mov edx, dword [ecx]
call dword [edx + 0x10]
mov eax, dword [esp + 0x42c]
pop edi
pop esi
add esp, 0x454
ret