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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x78
push esi
push edi
push dword [0x884c50]
mov dword [esp + 0x20], ecx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x4dd87e
mov dword [esi], str.TtHeightField
rdtsc
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x28]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov dword [edi + 4], eax
mov edx, dword [ebp + 8]
mov eax, dword [edx]
push dword [edx + 8]
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
push dword [eax + 8]
mov dword [esp + 0x28], ecx
lea ecx, [esp + 0x48]
call fcn.0046efa0
mov edi, dword [esp + 0x1c]
push dword [0x884adc]
mov esi, dword [edi + 0x10]
mov dword [esp + 0x18], esi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
shl esi, 4
add esi, 0x7f
and esi, 0xffffff80
mov dword [esp + 0x28], esi
mov eax, dword [ecx + 0xc]
mov dword [esp + 0xc], eax
lea edx, [eax + esi]
cmp esi, dword [ecx + 8]
jg 0x4dd8de
cmp edx, dword [ecx + 0x10]
ja 0x4dd8de
mov dword [ecx + 0xc], edx
jmp 0x4dd8e8
push esi
call fcn.0046a3c0
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x24]
mov edi, dword [edi + 0xc]
push eax
mov edx, dword [ecx]
mov edx, dword [edx + 0x30]
call edx
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0xc]
dec ecx
movaps xmm3, xmmword [esp + 0x40]
mov edx, ecx
movaps xmm4, xmmword [esp + 0x50]
movaps xmm5, xmmword [esp + 0x60]
movaps xmm6, xmmword [esp + 0x70]
mov dword [esp + 0x10], ecx
shl ecx, 4
add ecx, eax
sub esi, eax
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
nop dword [eax]
movaps xmm1, xmmword [ecx]
movaps xmm2, xmm1
movaps xmm0, xmm1
shufps xmm0, xmm1, 0
mulps xmm0, xmm3
shufps xmm2, xmm1, 0x55
mulps xmm2, xmm4
addps xmm2, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xaa
mulps xmm0, xmm5
addps xmm0, xmm6
addps xmm2, xmm0
movaps xmm0, xmm2
unpckhps xmm0, xmm1
shufps xmm2, xmm0, 0xc4
movaps xmmword [eax + ecx], xmm2
sub ecx, 0x10
sub edx, 1
jns 0x4dd930
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x18], eax
lea edx, [esi + eax]
cmp esi, dword [ecx + 8]
jg 0x4dd997
cmp edx, dword [ecx + 0x10]
ja 0x4dd997
mov dword [ecx + 0xc], edx
jmp 0x4dd9a1
push esi
call fcn.0046a3c0
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x38], ecx
mov ecx, dword [ebp + 0x10]
push eax
lea eax, [esp + 0x38]
push eax
movss xmm0, dword [ecx + 0xc]
mov ecx, dword [esp + 0x28]
movss dword [esp + 0x44], xmm0
mov edx, dword [ecx]
call dword [edx + 0x2c]
cmp dword [esp + 0x10], 0
mov edx, dword [ebp + 0x10]
mov eax, dword [esp + 0x18]
mov ecx, eax
mov dword [esp + 0x14], ecx
movss xmm1, dword [edx + 0xc]
movss dword [esp + 0x24], xmm1
jl 0x4ddb39
mov edx, dword [esp + 0xc]
mov esi, dword [ebp + 0x14]
sub edx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], 0xffff
nop word [eax + eax]
movss xmm0, dword [ecx + 0xc]
comiss xmm0, xmm1
jbe 0x4dda49
movzx edx, word [edi]
cmp dx, word [esp + 0x2c]
je 0x4ddb1e
mov eax, dword [esp + 0x1c]
push dword [esi + 4]
push edx
mov ecx, dword [eax + 8]
mov eax, dword [ecx]
call dword [eax + 0x14]
mov ecx, dword [esp + 0x14]
mov eax, 0xffff
mov word [edi], ax
jmp 0x4ddb14
mov eax, dword [esp + 0x30]
mov edx, dword [esi]
mov dword [esp + 0x20], edx
movss xmm2, dword [eax + ecx + 0xc]
xorps xmm2, xmmword [0x719730]
shufps xmm2, xmm2, 0
mulps xmm2, xmmword [ecx]
addps xmm2, xmmword [eax + ecx]
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 8]
movaps xmm1, xmm2
shufps xmm1, xmm2, 0x55
movaps xmm0, xmm2
shufps xmm0, xmm2, 0
shufps xmm2, xmm2, 0xaa
mulps xmm1, xmmword [eax + 0x10]
mulps xmm0, xmmword [eax]
mulps xmm2, xmmword [eax + 0x20]
addps xmm1, xmm0
addps xmm2, xmmword [eax + 0x30]
mov eax, dword [ebp + 0xc]
addps xmm1, xmm2
movaps xmmword [edx], xmm1
movaps xmm2, xmmword [ecx]
mov eax, dword [eax + 8]
movaps xmm1, xmm2
shufps xmm1, xmm2, 0x55
movaps xmm0, xmm2
shufps xmm0, xmm2, 0
shufps xmm2, xmm2, 0xaa
mulps xmm1, xmmword [eax + 0x10]
mulps xmm0, xmmword [eax]
mulps xmm2, xmmword [eax + 0x20]
addps xmm1, xmm0
addps xmm1, xmm2
movaps xmmword [edx + 0x10], xmm1
mov eax, dword [ecx + 0xc]
mov dword [edx + 0x1c], eax
mov eax, 0xffff
cmp word [edi], ax
jne 0x4ddb0b
mov eax, dword [esp + 0x1c]
push edx
push 0
push esi
mov ecx, dword [eax + 8]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
mov eax, dword [ecx]
push dword [ebp + 8]
mov eax, dword [eax + 0xc]
call eax
mov edx, dword [esp + 0x20]
mov ecx, 0xffff
cmp ax, cx
mov word [edi], ax
mov ecx, dword [esp + 0x14]
je 0x4ddb0e
add dword [esi], 0x30
movzx eax, word [edi]
mov dword [edx + 0x20], eax
mov eax, dword [esp + 0x10]
movss xmm1, dword [esp + 0x24]
add ecx, 0x10
add edi, 2
sub eax, 1
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
jns 0x4dda10
mov esi, dword [esp + 0x28]
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, dword [esp + 0x18]
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
jg 0x4ddb66
lea ecx, [edx + edi]
cmp ecx, dword [eax + 0xc]
jne 0x4ddb66
cmp dword [eax + 0x14], edi
je 0x4ddb66
mov dword [eax + 0xc], edi
jmp 0x4ddb6f
push edx
push edi
mov ecx, eax
call fcn.0046a590
push dword [0x884adc]
mov edi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call edi
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
mov esi, dword [esp + 0xc]
jg 0x4ddb9e
lea ecx, [edx + esi]
cmp ecx, dword [eax + 0xc]
jne 0x4ddb9e
cmp dword [eax + 0x14], esi
je 0x4ddb9e
mov dword [eax + 0xc], esi
jmp 0x4ddba7
push edx
push esi
mov ecx, eax
call fcn.0046a590
push dword [0x884c50]
call edi
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x4ddbd2
mov dword [esi], 0x77f5ec
rdtsc
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x30]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov dword [edi + 4], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x10