Function at 0x5317f0
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
mov eax, 0x33a8
call fcn.00607e10
mov eax, dword [ebp + 8]
lea ecx, [esp + 0x58]
add eax, 0x90
mov dword [esp + 0xbc], 0
push esi
push edi
push eax
movups xmm0, xmmword [eax]
movups xmmword [esp + 0x64], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [esp + 0x74], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [esp + 0x84], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [esp + 0x94], xmm0
movups xmm0, xmmword [eax + 0x40]
movups xmmword [esp + 0xa4], xmm0
call fcn.004fd5b0
mov edi, dword [ebp + 0x10]
lea ecx, [esp + 0x110]
mov dword [esp + 0xe4], 0x1ffff
mov dword [esp + 0xe0], 0x786d90
movups xmm0, xmmword [edi + 0x30]
movups xmmword [esp + 0xb0], xmm0
call fcn.005321c0
lea eax, [esp + 0xe0]
mov dword [esp + 0xe8], 0
mov dword [esp + 0x324], eax
mov al, byte [edi]
mov dword [esp + 0xec], 0
mov dword [esp + 0xf0], 0
mov dword [esp + 0xf4], 0
mov dword [esp + 0xf8], 0
mov dword [esp + 0x100], 0
mov dword [esp + 0x3350], 0x7f7fffee
mov dword [esp + 0x3370], 0
mov dword [esp + 0x3374], 0
cmp al, 0xd
je 0x531c09
cmp al, 0x10
je 0x531c09
cmp al, 0xf
je 0x531c09
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [esp + 0xc], eax
mov esi, dword [eax + 4]
cmp esi, dword [eax + 0xc]
jae 0x531945
mov dword [esi], str.TtNarrowPhaseTOI
rdtsc
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov ecx, dword [esp + 0xc]
mov dword [ecx + 4], eax
cmp byte [edi], 0x14
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
jne 0x53196f
mov eax, dword [edi + 0x40]
mov dword [esp + 0x30], eax
mov eax, dword [eax]
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], 0
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x14], ecx
cmp ax, word [edi + 0x26]
jae 0x531b44
mov eax, dword [edi + 0x2c]
mov esi, dword [eax + ecx*4]
movzx eax, byte [edi + 0x44]
mov ecx, dword [esp + 0x60]
sub eax, 0
je 0x5319ae
sub eax, 1
je 0x5319a6
sub eax, 1
jne 0x5319c1
lea eax, [ecx + 0x1e80]
jmp 0x5319ba
lea eax, [ecx + 0x1d00]
jmp 0x5319ba
movsx eax, byte [esi + 0xc]
add eax, 0x73
shl eax, 6
add eax, ecx
mov dword [esp + 0xc0], eax
movsx eax, byte [esi + 0xc]
shl eax, 6
cmp byte [edi], 0x14
mov eax, dword [eax + ecx + 0x1cd0]
mov dword [esp + 0x78], eax
lea eax, [esp + 0x330]
mov dword [esp + 0x320], eax
lea eax, [esp + 0x320]
mov dword [esp + 0x3350], 0x7f7fffee
mov dword [esp + 0x33a0], 0
push dword [esi + 8]
push eax
jne 0x531a1c
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x6c]
push eax
push esi
call fcn.006adee0
add esp, 0x14
jmp 0x531a2a
lea eax, [esp + 0x68]
push eax
push esi
call fcn.006ad820
add esp, 0x10
lea eax, [esp + 0x330]
cmp dword [esp + 0x320], eax
je 0x531a55
mov ecx, dword [esi + 8]
lea edx, [esp + 0x320]
push edx
lea edx, [esp + 0x64]
push edx
push dword [esi + 0x14]
mov eax, dword [ecx]
push dword [esi + 0x10]
call dword [eax + 0x18]
movss xmm0, dword [esp + 0x3350]
ucomiss xmm0, dword [0x77fe14]
lahf
test ah, 0x44
jnp 0x531a89
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x110]
lea eax, [ecx + 0x100]
push eax
push esi
lea eax, [esp + 0x328]
push eax
call fcn.00503fb0
mov eax, dword [esp + 0xf8]
test eax, eax
jne 0x531a9d
mov dword [esp + 0x100], eax
jmp 0x531b1b
jle 0x531ae7
mov eax, dword [esp + 0xfc]
mov edx, dword [esp + 0x100]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x110]
add eax, dword [esp + 0x114]
mov byte [esp + 0x48], 0
movq xmm0, qword [esp + 0x48]
movq qword [esp + eax + 0x110], xmm0
mov dword [esp + eax + 0x118], edx
mov dword [esp + 0x100], 0
jmp 0x531b13
mov ecx, dword [esp + 0x114]
add ecx, dword [esp + 0x110]
mov edx, dword [esp + 0xfc]
mov byte [esp + 0x28], 1
mov eax, dword [esp + 0x28]
mov dword [esp + ecx + 0x110], eax
mov dword [esp + ecx + 0x114], edx
add dword [esp + 0x114], 0x10
cmp dword [0x8d7868], 1
mov dword [esp + 0xf8], 0
je 0x531b44
mov ecx, dword [esp + 0x14]
movzx eax, word [edi + 0x26]
inc ecx
mov dword [esp + 0x14], ecx
cmp ecx, eax
jl 0x531981
movsx ecx, word [edi + 0x24]
mov eax, dword [edi + 0x20]
movups xmm0, xmmword [esp + 0xe8]
mov eax, dword [eax + ecx*4 + 0x14]
mov dword [esp + 0x10], eax
movups xmmword [eax], xmm0
mov edx, dword [esp + 0x114]
mov dword [esp + 0xc], edx
test edx, edx
je 0x531bd1
lea ecx, [eax + 0x10]
mov eax, edx
sar eax, 4
lea edi, [esp + 0x110]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x110]
add eax, edi
mov edi, dword [ecx]
mov dword [esp + 0x14], eax
add edi, ecx
mov ecx, dword [eax + 4]
lea edi, [edi + 0x10]
mov edx, dword [eax + 8]
mov esi, dword [eax + 0xc]
mov eax, dword [eax]
mov dword [edi - 0xc], ecx
mov ecx, dword [esp + 0x18]
mov dword [edi - 0x10], eax
dec ecx
mov eax, dword [esp + 0x14]
add eax, 0x10
mov dword [edi - 8], edx
mov dword [edi - 4], esi
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ecx
test ecx, ecx
jg 0x531b91
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
mov edi, dword [ebp + 0x10]
mov dword [eax + 0x14], ecx
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [esp + 0xc], eax
mov esi, dword [eax + 4]
cmp esi, dword [eax + 0xc]
jae 0x532145
mov dword [esi], str.EtNarrowPhaseTOI
rdtsc
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
mov dword [esi + 4], ecx
mov ecx, dword [esp + 0xc]
jmp 0x53213f
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
cmp al, 0xf
jne 0x531c32
mov eax, dword [edi + 0x40]
mov dword [esp + 0x30], eax
mov eax, dword [eax]
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], 0
mov eax, dword [edi + 0x14]
push dword [0x884c50]
mov dword [esp + 0x2c], eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [esp + 0xc], eax
mov esi, dword [eax + 4]
cmp esi, dword [eax + 0xc]
jae 0x531c6e
mov dword [esi], str.TtNarrowPhase
rdtsc
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov ecx, dword [esp + 0xc]
mov dword [ecx + 4], eax
movzx eax, word [edi + 0x26]
lea ecx, [eax - 1]
mov dword [esp + 0xc], ecx
mov ecx, dword [edi + 0x2c]
mov dword [esp + 0x44], ecx
mov ecx, dword [ecx]
mov dword [esp + 0x18], ecx
movzx esi, byte [ecx + 0xe]
shl esi, 6
cmp eax, 1
mov dword [esp + 0x40], esi
mov eax, 0x200
ja 0x531c9f
movzx eax, word [edi + 0x44]
lea edx, [eax + ecx]
add esi, ecx
mov eax, dword [esp + 0x40]
add eax, esi
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], esi
cmp esi, edx
jb 0x531cc2
mov dword [esp + 0x14], 0
xor esi, esi
jmp 0x531cd0
cmp eax, edx
sbb esi, esi
and esi, eax
nop dword [eax + eax]
cmp byte [edi], 0xf
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x110]
jne 0x531da6
mov dword [esp + 0x1c], eax
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x24], eax
mov eax, dword [ecx + 0x14]
mov dword [esp + 0x20], eax
movsx eax, byte [ecx + 0xc]
add eax, 0x73
shl eax, 6
add eax, dword [esp + 0x60]
mov dword [esp + 0xc0], eax
mov eax, dword [eax + 0x10]
mov dword [esp + 0x78], eax
lea eax, [esp + 0x330]
mov dword [esp + 0x320], eax
lea eax, [esp + 0x320]
mov dword [esp + 0x3350], 0x7f7fffee
mov dword [esp + 0x33a0], 0
push dword [ecx + 8]
push eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x6c]
push eax
push ecx
call fcn.006adee0
lea eax, [esp + 0x344]
add esp, 0x14
cmp dword [esp + 0x320], eax
je 0x531d83
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x320]
push edx
lea edx, [esp + 0x64]
push edx
mov ecx, dword [ecx + 8]
push dword [esp + 0x28]
push dword [esp + 0x30]
mov eax, dword [ecx]
call dword [eax + 0x18]
movss xmm0, dword [esp + 0x3350]
ucomiss xmm0, dword [0x77fe14]
lahf
test ah, 0x44
jnp 0x531e74
mov ecx, dword [esp + 0x1c]
jmp 0x531e5c
mov dword [esp + 0x20], eax
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x24], eax
mov eax, dword [ecx + 0x14]
mov dword [esp + 0x1c], eax
movsx eax, byte [ecx + 0xc]
add eax, 0x73
shl eax, 6
add eax, dword [esp + 0x60]
mov dword [esp + 0xc0], eax
mov eax, dword [eax + 0x10]
mov dword [esp + 0x78], eax
lea eax, [esp + 0x330]
mov dword [esp + 0x320], eax
lea eax, [esp + 0x320]
mov dword [esp + 0x3350], 0x7f7fffee
mov dword [esp + 0x33a0], 0
push dword [ecx + 8]
push eax
lea eax, [esp + 0x68]
push eax
push ecx
call fcn.006ad820
lea eax, [esp + 0x340]
add esp, 0x10
cmp dword [esp + 0x320], eax
je 0x531e42
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x320]
push edx
lea edx, [esp + 0x64]
push edx
mov ecx, dword [eax + 8]
push dword [esp + 0x24]
push dword [esp + 0x30]
mov eax, dword [ecx]
call dword [eax + 0x18]
movss xmm0, dword [esp + 0x3350]
ucomiss xmm0, dword [0x77fe14]
lahf
test ah, 0x44
jnp 0x531e74
mov ecx, dword [esp + 0x20]
lea eax, [ecx + 0x100]
push eax
push dword [esp + 0x1c]
lea eax, [esp + 0x328]
push eax
call fcn.00503fb0
mov eax, dword [esp + 0xf8]
test eax, eax
jne 0x531e88
mov dword [esp + 0x100], eax
jmp 0x531f06
jle 0x531ed2
mov eax, dword [esp + 0xfc]
mov edx, dword [esp + 0x100]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x110]
add eax, dword [esp + 0x114]
mov byte [esp + 0x54], 0
movq xmm0, qword [esp + 0x54]
movq qword [esp + eax + 0x110], xmm0
mov dword [esp + eax + 0x118], edx
mov dword [esp + 0x100], 0
jmp 0x531efe
mov ecx, dword [esp + 0x114]
add ecx, dword [esp + 0x110]
mov edx, dword [esp + 0xfc]
mov byte [esp + 0x48], 1
mov eax, dword [esp + 0x48]
mov dword [esp + ecx + 0x110], eax
mov dword [esp + ecx + 0x114], edx
add dword [esp + 0x114], 0x10
cmp dword [0x8d7868], 1
mov ecx, dword [esp + 0x14]
mov dword [esp + 0xf8], 0
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], esi
je 0x531f8d
test esi, esi
je 0x531f85
add esi, dword [esp + 0x40]
cmp esi, dword [esp + 0x10]
jb 0x531f85
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0xc]
add edx, 4
sub eax, 1
mov dword [esp + 0x44], edx
mov dword [esp + 0xc], eax
js 0x531f83
mov esi, dword [edx]
test eax, eax
jle 0x531f77
mov eax, dword [edx + 4]
prefetchnta byte [eax]
prefetchnta byte [eax + 0x40]
prefetchnta byte [eax + 0x80]
prefetchnta byte [eax + 0xc0]
mov eax, 0x200
add eax, esi
mov dword [esp + 0x10], eax
jmp 0x531f85
movzx eax, word [edi + 0x44]
add eax, esi
mov dword [esp + 0x10], eax
jmp 0x531f85
xor esi, esi
test ecx, ecx
jne 0x531cd0
mov ecx, dword [edi + 0x20]
test ecx, ecx
jne 0x532082
mov eax, dword [esp + 0xf4]
or eax, dword [esp + 0xf0]
or eax, dword [esp + 0xec]
or eax, dword [esp + 0xe8]
jne 0x531fbf
cmp dword [esp + 0x114], eax
je 0x532030
mov eax, dword [ebp + 8]
mov esi, dword [esp + 0x28]
push esi
mov ecx, dword [eax]
call fcn.0050d830
mov ecx, dword [esp + 0xe8]
cmp dword [esi + 8], ecx
cmovg ecx, dword [esi + 8]
mov dword [esi + 8], ecx
mov eax, dword [esp + 0xec]
add dword [esi + 0xc], eax
mov eax, dword [esp + 0xf0]
add dword [esi + 0x10], eax
mov eax, dword [esp + 0xf4]
add dword [esi + 0x14], eax
mov eax, dword [esp + 0x114]
test eax, eax
je 0x532025
push eax
mov eax, dword [esp + 0x114]
lea eax, [esp + eax + 0x114]
push eax
mov eax, dword [ebp + 8]
push dword [eax]
call fcn.0053c680
add esp, 0xc
mov eax, dword [ebp + 8]
push esi
mov ecx, dword [eax]
call fcn.0050d870
cmp byte [edi], 0xf
jne 0x532110
mov esi, dword [esp + 0x34]
test esi, esi
je 0x532063
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push 0x200
push esi
mov ecx, dword [eax + 0x2c]
mov eax, dword [ecx]
call dword [eax + 8]
mov dword [esp + 0x34], 0
push dword [0x884adc]
mov esi, dword [edi + 0x40]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push 0x10
push esi
mov ecx, dword [eax + 0x2c]
mov eax, dword [ecx]
call dword [eax + 8]
jmp 0x532110
movsx eax, word [edi + 0x24]
movups xmm0, xmmword [esp + 0xe8]
mov eax, dword [ecx + eax*4 + 0x14]
mov dword [esp + 0x28], eax
movups xmmword [eax], xmm0
mov edx, dword [esp + 0x114]
mov dword [esp + 0x1c], edx
test edx, edx
je 0x532110
lea ecx, [eax + 0x10]
mov eax, edx
sar eax, 4
lea edi, [esp + 0x110]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x110]
add eax, edi
mov edi, dword [ecx]
mov dword [esp + 0x10], eax
add edi, ecx
nop dword [eax]
mov ecx, dword [eax + 4]
lea edi, [edi + 0x10]
mov edx, dword [eax + 8]
mov esi, dword [eax + 0xc]
mov eax, dword [eax]
mov dword [edi - 0xc], ecx
mov ecx, dword [esp + 0xc]
mov dword [edi - 0x10], eax
dec ecx
mov eax, dword [esp + 0x10]
add eax, 0x10
mov dword [edi - 8], edx
mov dword [edi - 4], esi
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], ecx
test ecx, ecx
jg 0x5320d0
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
mov edi, dword [ebp + 0x10]
mov dword [eax + 0x14], ecx
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [esp + 0x1c], eax
mov esi, dword [eax + 4]
cmp esi, dword [eax + 0xc]
jae 0x532145
mov dword [esi], str.EtNarrowPhase
rdtsc
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x28]
mov dword [esi + 4], ecx
mov ecx, dword [esp + 0x1c]
lea eax, [esi + 0xc]
mov dword [ecx + 4], eax
mov esi, dword [esp + 0x34]
test esi, esi
je 0x532167
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push 0x200
push esi
mov ecx, dword [eax + 0x2c]
mov eax, dword [ecx]
call dword [eax + 8]
mov ecx, dword [ebp + 0xc]
push 0
push edi
push edi
call fcn.0064f0c0
cmp dword [esp + 0xc4], 0
mov esi, eax
mov dword [esp + 0xe0], vtable.hkBaseObject.0
je 0x5321aa
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push 0x200
push dword [esp + 0xc8]
mov ecx, dword [eax + 0x2c]
mov eax, dword [ecx]
call dword [eax + 8]
pop edi
mov eax, esi
pop esi
mov esp, ebp
pop ebp
ret