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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x88
push esi
push edi
push dword [0x884c50]
mov edi, ecx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [esp + 8], eax
mov esi, dword [eax + 4]
cmp esi, dword [eax + 0xc]
jae 0x5a4195
mov dword [esi], str.TtCharacterControllerModifier
rdtsc
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0xc]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov ecx, dword [esp + 8]
mov dword [ecx + 4], eax
mov ecx, dword [ebp + 8]
mov eax, dword [ecx]
cmp dword [eax + 0x20], 0
je 0x5a45bb
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
cmp dword [eax + 4], 0xc
jle 0x5a45bb
xorps xmm0, xmm0
movaps xmmword [edi + 0x30], xmm0
movss xmm0, dword [edi + 0x80]
comiss xmm0, dword [0x718814]
movss xmm0, dword [0x718824]
movaps xmmword [esp + 0x20], xmm0
jbe 0x5a456a
mov eax, dword [ecx]
mov esi, dword [eax + 0x20]
mov ecx, esi
mov eax, dword [esi]
mov eax, dword [eax + 0x20]
call eax
mov byte [edi + 0x65], al
mov ecx, esi
mov eax, dword [esi]
mov eax, dword [eax + 0x1c]
call eax
cmp byte [edi + 0x61], 1
mov esi, eax
mov dword [esp + 8], esi
jne 0x5a42e4
mov cl, byte [edi + 0x64]
test cl, cl
je 0x5a421a
cmp byte [edi + 0x84], 0
jne 0x5a421a
mov al, 1
jmp 0x5a421c
xor al, al
test cl, cl
je 0x5a422d
cmp byte [edi + 0x84], 0
jne 0x5a422d
xor dl, dl
jmp 0x5a422f
mov dl, 1
test al, al
je 0x5a42cc
cmp byte [edi + 0x60], 0
jne 0x5a4243
movaps xmm6, xmmword [edi + 0x50]
jmp 0x5a42ba
mov eax, dword [ebp + 0xc]
movaps xmm2, xmmword [edi + 0x50]
movaps xmm3, xmm2
movaps xmm1, xmm2
shufps xmm1, xmm2, 0xc9
movaps xmm6, xmm2
mov ecx, dword [eax]
shufps xmm6, xmm2, 0xd2
movsx eax, word [ecx + 0x14]
movaps xmm4, xmmword [eax + ecx + 0x10]
mulps xmm3, xmm4
movaps xmm5, xmm4
shufps xmm5, xmm4, 0xff
movaps xmm0, xmm3
shufps xmm0, xmm3, 0x55
addss xmm0, xmm3
shufps xmm3, xmm3, 0xaa
addss xmm3, xmm0
movaps xmm0, xmm4
shufps xmm0, xmm4, 0xd2
mulps xmm1, xmm0
movaps xmm0, xmm4
shufps xmm0, xmm4, 0xc9
mulps xmm6, xmm0
shufps xmm3, xmm3, 0
mulps xmm3, xmm4
subps xmm6, xmm1
mulps xmm6, xmm5
mulps xmm5, xmm5
addps xmm5, xmmword [0x7195c0]
mulps xmm5, xmm2
addps xmm5, xmm3
addps xmm6, xmm5
addps xmm6, xmm6
movaps xmm0, xmmword [edi + 0x30]
addps xmm0, xmm6
movaps xmmword [edi + 0x30], xmm0
mov byte [edi + 0x84], 1
test dl, dl
je 0x5a453c
movaps xmm0, xmmword [edi + 0x30]
addps xmm0, xmmword [esi]
movaps xmmword [edi + 0x30], xmm0
jmp 0x5a453c
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
mov eax, dword [eax]
movsx ecx, word [eax + 0x14]
add ecx, eax
mov eax, dword [esi]
mov eax, dword [eax + 0x48]
movaps xmm4, xmmword [eax + 0x10]
movaps xmm2, xmmword [eax]
movaps xmm5, xmm4
movaps xmm3, xmm2
shufps xmm5, xmm4, 0xff
mulps xmm3, xmm4
movaps xmm6, xmm2
shufps xmm6, xmm2, 0xc9
movaps xmm1, xmm2
shufps xmm1, xmm2, 0xd2
movaps xmm0, xmm3
shufps xmm0, xmm3, 0x55
addss xmm0, xmm3
shufps xmm3, xmm3, 0xaa
addss xmm3, xmm0
movaps xmm0, xmm4
shufps xmm0, xmm4, 0xd2
mulps xmm6, xmm0
movaps xmm0, xmm4
shufps xmm0, xmm4, 0xc9
mulps xmm1, xmm0
shufps xmm3, xmm3, 0
mulps xmm3, xmm4
subps xmm6, xmm1
movaps xmm1, xmmword [eax + 0x20]
movaps xmm0, xmm1
unpckhps xmm0, xmmword [0x719330]
shufps xmm1, xmm0, 0xc4
mulps xmm6, xmm5
mulps xmm5, xmm5
addps xmm5, xmmword [0x7195c0]
mulps xmm5, xmm2
rcpps xmm2, xmm1
addps xmm5, xmm3
movaps xmm3, xmmword [ecx]
movaps xmm0, xmm2
mulps xmm0, xmm1
movaps xmm1, xmm3
shufps xmm1, xmm3, 0xc9
addps xmm6, xmm5
mulps xmm0, xmm2
addps xmm2, xmm2
addps xmm6, xmm6
subps xmm2, xmm0
xorps xmm6, xmmword [0x719130]
movaps xmmword [esp + 0x10], xmm6
andps xmm2, xmmword [0x719150]
movaps xmmword [esp + 0x30], xmm6
movaps xmm6, xmmword [eax + 0x10]
xorps xmm6, xmmword [0x719d70]
movaps xmm4, xmm6
movaps xmmword [esp + 0x50], xmm2
mulps xmm4, xmm3
movaps xmm2, xmm3
shufps xmm2, xmm3, 0xd2
movaps xmm5, xmm6
shufps xmm5, xmm6, 0xff
movaps xmmword [esp + 0x40], xmm6
movaps xmm0, xmm4
shufps xmm0, xmm4, 0x55
addss xmm0, xmm4
shufps xmm4, xmm4, 0xaa
addss xmm4, xmm0
movaps xmm0, xmm6
shufps xmm0, xmm6, 0xd2
mulps xmm1, xmm0
movaps xmm0, xmm6
shufps xmm0, xmm6, 0xc9
mulps xmm2, xmm0
subps xmm2, xmm1
mulps xmm2, xmm5
mulps xmm5, xmm5
addps xmm5, xmmword [0x7195c0]
mulps xmm5, xmm3
shufps xmm4, xmm4, 0
lea eax, [ecx + 0x10]
mulps xmm4, xmm6
lea ecx, [esp + 0x70]
push eax
lea eax, [esp + 0x44]
push eax
addps xmm5, xmm4
addps xmm2, xmm5
addps xmm2, xmm2
addps xmm2, xmmword [esp + 0x18]
movaps xmmword [esp + 0x68], xmm2
call fcn.004782a0
mov eax, dword [ebp + 0xc]
movaps xmm2, xmmword [esp + 0x60]
movaps xmm3, xmm2
mov ecx, dword [eax]
movsx eax, word [ecx + 0x14]
movaps xmm5, xmmword [eax + ecx + 0x10]
mulps xmm3, xmm5
movaps xmm4, xmm5
shufps xmm4, xmm5, 0xc9
movaps xmm1, xmm5
shufps xmm1, xmm5, 0xd2
movaps xmm6, xmm5
shufps xmm6, xmm5, 0xff
movaps xmm0, xmm3
shufps xmm0, xmm3, 0x55
addss xmm0, xmm3
shufps xmm3, xmm3, 0xaa
addss xmm3, xmm0
movaps xmm0, xmm2
shufps xmm0, xmm2, 0xd2
mulps xmm4, xmm0
movaps xmm0, xmm2
shufps xmm0, xmm2, 0xc9
mulps xmm1, xmm0
movaps xmm0, xmmword [esp + 0x20]
divss xmm0, dword [edi + 0x80]
subps xmm4, xmm1
shufps xmm3, xmm3, 0
mulps xmm3, xmm5
shufps xmm0, xmm0, 0
mulps xmm4, xmm6
mulps xmm6, xmm6
addps xmm6, xmmword [0x7195c0]
mulps xmm6, xmm2
addps xmm6, xmm3
addps xmm4, xmm6
addps xmm4, xmm4
mulps xmm4, xmm0
movaps xmmword [edi + 0x30], xmm4
cmp byte [edi + 0x62], 0
je 0x5a453c
mov ecx, esi
call fcn.005c60d0
mov ecx, dword [esp + 8]
movaps xmm3, xmmword [eax]
movaps xmm2, xmm3
mulps xmm2, xmmword [ecx]
movaps xmm0, xmm2
shufps xmm0, xmm2, 0x55
addss xmm0, xmm2
shufps xmm2, xmm2, 0xaa
addss xmm2, xmm0
xorps xmm0, xmm0
shufps xmm2, xmm2, 0
comiss xmm2, xmm0
ja 0x5a453c
comiss xmm0, xmm2
jbe 0x5a453c
movaps xmm1, xmmword [edi + 0x30]
mulps xmm1, xmm3
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
addss xmm1, xmm0
movaps xmm0, xmmword [edi + 0x30]
shufps xmm1, xmm1, 0
mulps xmm1, xmm3
subps xmm0, xmm1
movaps xmmword [edi + 0x30], xmm0
mulps xmm2, xmmword [eax]
addps xmm2, xmm0
movaps xmmword [edi + 0x30], xmm2
cmp byte [edi + 0x65], 0
jne 0x5a4560
cmp byte [edi + 0x63], 0
je 0x5a4560
movss xmm0, dword [edi + 0x80]
shufps xmm0, xmm0, 0
mulps xmm0, xmmword [edi + 0x70]
addps xmm0, xmmword [edi + 0x30]
movaps xmmword [edi + 0x30], xmm0
mov dword [edi + 0x80], 0
mov eax, dword [ebp + 0xc]
mov edx, dword [eax]
movsx ecx, word [edx + 0xd4]
add ecx, edx
cmp word [edx + 0xd2], 0
jle 0x5a45bb
mov eax, dword [edi + 0x30]
mov dword [ecx], eax
mov eax, dword [edi + 0x34]
mov dword [ecx + 4], eax
mov eax, dword [edi + 0x38]
mov dword [ecx + 8], eax
mov eax, dword [edi + 0x3c]
mov dword [ecx + 0xc], eax
mov eax, dword [edi + 0x40]
mov dword [ecx + 0x10], eax
mov eax, dword [edi + 0x44]
mov dword [ecx + 0x14], eax
mov eax, dword [edi + 0x48]
mov dword [ecx + 0x18], eax
mov eax, dword [edi + 0x4c]
mov dword [ecx + 0x1c], eax
mov dword [edx + 0xd8], 0x3f800000
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x5a45ea
mov dword [esi], 0x77f5ec
rdtsc
mov dword [esp + 8], eax
mov ecx, dword [esp + 8]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov dword [edi + 4], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8