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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x848
mov eax, dword [ebp + 0x10]
xor ecx, ecx
push esi
push edi
xor edi, edi
mov dword [esp + 0x1c], ecx
mov esi, dword [eax + 0x3080]
mov dword [esp + 0x24], esi
lea edx, [esi + 0x408]
mov dword [esp + 0x14], edx
cmp edx, dword [esi]
jae 0x6d8ae1
mov eax, dword [ebp + 8]
movss xmm7, dword [0x7800e4]
movss xmm6, dword [0x71881c]
mov dword [esp + 0x18], edx
mov eax, dword [eax]
mov eax, dword [eax]
add eax, 0x10
mov dword [esp + 0x20], eax
nop word [eax + eax]
mov eax, 0xffff
mov word [esp + ecx*2 + 0x250], ax
xor al, al
mov ecx, dword [edx]
lea edx, [esi + 8]
mov dword [esp + 0x10], edx
cmp edx, dword [esi + 4]
jae 0x6d8a2e
mov edx, dword [edx]
cmp ecx, edx
je 0x6d8a0c
mov ecx, dword [ebp + 8]
mov esi, dword [esp + 0x14]
movaps xmm0, xmmword [edx]
movaps xmm3, xmmword [edx + 0x10]
mov ecx, dword [ecx + 0xc]
movaps xmm2, xmm3
mov ecx, dword [ecx + 0x60]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x20]
movss xmm5, dword [ecx]
mov ecx, dword [esi]
mov esi, dword [esp + 0x24]
subps xmm0, xmmword [ecx]
movaps xmm4, xmmword [ecx + 0x10]
mulps xmm3, xmmword [ecx + 0x10]
mulps xmm2, xmm0
mulps xmm4, xmm0
movaps xmm1, xmm4
unpckhps xmm4, xmm2
unpcklps xmm1, xmm2
movaps xmm0, xmm1
shufps xmm4, xmm3, 0xe4
movlhps xmm0, xmm3
movaps xmm2, xmm0
movhlps xmm2, xmm1
shufps xmm2, xmm3, 0xd4
addps xmm2, xmm0
addps xmm2, xmm4
movaps xmm1, xmm2
movaps xmm3, xmm2
shufps xmm1, xmm2, 0xaa
movaps xmm0, xmm1
shufps xmm3, xmm2, 0x55
subss xmm0, dword [0x718824]
xorps xmm3, xmmword [0x719730]
mulss xmm0, xmm5
addss xmm3, xmm0
addss xmm0, xmm2
comiss xmm3, xmm5
ja 0x6d8a0c
comiss xmm1, dword [0x785c50]
jbe 0x6d899f
cmp dword [edx + 0x20], 0xffff
je 0x6d8a0c
cmp dword [edx + 0x20], 0xffff
jne 0x6d89dd
movss xmm2, dword [0x786704]
comiss xmm2, xmm1
jbe 0x6d89dd
movss xmm1, dword [0x77fa2c]
addss xmm0, xmm3
comiss xmm1, xmm0
jbe 0x6d89dd
movss xmm0, dword [edx + 0x1c]
addss xmm0, dword [ecx + 0x1c]
mulss xmm5, xmm7
comiss xmm5, xmm0
jbe 0x6d89dd
mov al, 1
jmp 0x6d8a0c
cmp dword [edx + 0x20], 0xffff
xorps xmm1, xmm1
je 0x6d89f9
mov esi, dword [esp + 0x28]
movss xmm1, dword [esi]
mov esi, dword [esp + 0x24]
mulss xmm1, xmm6
movss xmm0, dword [edx + 0x1c]
subss xmm0, xmm1
comiss xmm0, dword [ecx + 0x1c]
jb 0x6d8ac0
mov edx, dword [esp + 0x10]
add edx, 4
mov dword [esp + 0x10], edx
cmp edx, dword [esi + 4]
jb 0x6d88f1
test al, al
je 0x6d8a2e
mov eax, dword [esp + 0x1c]
mov word [esp + edi*2 + 0x50], ax
inc edi
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x450]
mov ecx, dword [ebp + 0xc]
push edx
mov esi, dword [eax + 4]
mov eax, dword [ecx]
push dword [esi + 8]
mov eax, dword [eax + 0x14]
call eax
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 4]
mov dword [esp + 0x44], ecx
mov ecx, dword [ecx + 8]
mov dword [esp + 0x40], ecx
mov ecx, dword [esi + 8]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x3c], ecx
mov ecx, dword [edx + 0x10]
mov dword [esp + 0x38], eax
push dword [esi]
lea esi, [esp + 0x3c]
mov eax, dword [ecx]
push 0
push dword [ebp + 0x10]
push dword [edx + 0xc]
mov eax, dword [eax + 0xc]
push esi
push dword [edx]
call eax
mov ecx, dword [esp + 0x1c]
mov edx, 0xffff
mov word [esp + ecx*2 + 0x250], ax
cmp ax, dx
je 0x6d8c0c
mov eax, dword [ebp + 8]
push 0xffffffffffffffff
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx]
call dword [eax + 0x10]
movss xmm6, dword [0x71881c]
movss xmm7, dword [0x7800e4]
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
inc ecx
add dword [esp + 0x18], 0xc
add edx, 0xc
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], edx
cmp edx, dword [esi]
jb 0x6d88d0
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov dword [esp + 0x28], eax
xor eax, eax
mov dword [esp + 0x10], eax
test edi, edi
jle 0x6d8b3f
nop word [eax + eax]
movzx eax, word [esp + eax*2 + 0x50]
add eax, 0x56
push 0xffff
lea edx, [eax + eax*2]
mov ecx, dword [esi + edx*4 + 4]
push dword [esi + edx*4 + 8]
push ecx
movzx eax, byte [ecx + 1]
mov ecx, dword [esp + 0x34]
lea eax, [eax + eax*4]
add eax, eax
mov eax, dword [ecx + eax*8 + 0x16c4]
call eax
mov eax, dword [esp + 0x1c]
add esp, 0xc
inc eax
mov dword [esp + 0x10], eax
cmp eax, edi
jl 0x6d8b00
cmp edi, 2
jl 0x6d8daf
nop dword [eax + eax]
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
mov dword [esp + 0x10], ecx
mov eax, dword [ecx + 4]
mov dword [esp + 0x20], eax
cmp eax, dword [ecx + 0xc]
jae 0x6d8b8f
mov dword [eax], 0x7c35a8
rdtsc
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
mov dword [eax + 4], ecx
add eax, 0xc
mov ecx, dword [esp + 0x10]
mov dword [ecx + 4], eax
movss xmm2, dword [0x719724]
xor eax, eax
mov ecx, 1
mov dword [esp + 0x18], eax
xor edx, edx
mov dword [esp + 0x14], ecx
test edi, edi
jle 0x6d8c3e
lea ecx, [edx + 1]
mov dword [esp + 0x10], ecx
cmp ecx, edi
jge 0x6d8c2e
movzx eax, word [esp + edx*2 + 0x50]
add eax, 0x56
lea eax, [eax + eax*2]
mov eax, dword [esi + eax*4]
movaps xmm3, xmmword [eax + 0x10]
nop dword [eax]
movzx eax, word [esp + ecx*2 + 0x50]
add eax, 0x56
lea eax, [eax + eax*2]
mov eax, dword [esi + eax*4]
movaps xmm1, xmmword [eax + 0x10]
mulps xmm1, xmm3
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
addss xmm1, xmm0
comiss xmm2, xmm1
jbe 0x6d8c25
mov eax, edx
mov dword [esp + 0x14], ecx
movaps xmm2, xmm1
mov dword [esp + 0x18], eax
jmp 0x6d8c29
movss xmm6, dword [0x71881c]
movss xmm7, dword [0x7800e4]
mov esi, dword [esp + 0x24]
jmp 0x6d8ac4
mov eax, dword [esp + 0x18]
inc ecx
cmp ecx, edi
jl 0x6d8bd0
mov edx, dword [esp + 0x10]
cmp edx, edi
jl 0x6d8bb0
mov ecx, dword [esp + 0x14]
movzx eax, word [esp + eax*2 + 0x50]
add eax, 0x56
lea edx, [eax + eax*2]
movzx eax, word [esp + ecx*2 + 0x50]
mov ecx, dword [esi + edx*4 + 4]
add eax, 0x56
mov dword [esp + 0x1c], edx
mov edx, dword [ebp + 8]
mov dword [esp + 0x20], ecx
lea eax, [eax + eax*2]
mov dword [esp + 0x2c], eax
mov eax, dword [esi + eax*4 + 4]
mov dword [esp + 0x10], eax
mov eax, dword [edx]
mov eax, dword [eax]
mov dword [esp + 0x30], eax
mov ecx, dword [eax + 0xc]
mov eax, dword [edx + 0xc]
mov eax, dword [eax]
test dword [eax + ecx*4 + 0x110], 0x80000
je 0x6d8daf
mov edx, dword [ebp + 0xc]
lea ecx, [esp + 0x450]
push ecx
mov ecx, dword [esp + 0x24]
mov eax, dword [edx]
push dword [ecx + 8]
mov ecx, edx
mov eax, dword [eax + 0x14]
call eax
mov dword [esp + 0x20], eax
mov edx, dword [eax + 0xc]
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0xc]
mov ecx, dword [ecx]
test dword [ecx + edx*4 + 0x110], 0x80000
je 0x6d8daf
mov edx, dword [ebp + 0xc]
lea ecx, [esp + 0x650]
push ecx
mov ecx, dword [esp + 0x14]
mov eax, dword [edx]
push dword [ecx + 8]
mov ecx, edx
mov eax, dword [eax + 0x14]
call eax
mov ecx, dword [ebp + 8]
mov edx, dword [eax + 0xc]
mov ecx, dword [ecx + 0xc]
mov ecx, dword [ecx]
test dword [ecx + edx*4 + 0x110], 0x80000
je 0x6d8daf
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x38], ecx
mov ecx, dword [ebp + 8]
mov eax, dword [esi + eax*4]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x2c]
mov eax, dword [esi + eax*4]
mov dword [esp + 0x4c], eax
lea eax, [esp + 0x48]
push eax
lea eax, [ecx + 0x20]
push eax
push 2
lea eax, [esp + 0x44]
push eax
mov eax, dword [ecx]
push dword [esp + 0x40]
push dword [eax + 8]
call fcn.0054e070
mov ecx, dword [esp + 0x2c]
add esp, 0x18
movzx eax, word [esp + edi*2 + 0x4e]
sub edi, 2
push dword [0x884c50]
mov word [esp + ecx*2 + 0x54], ax
mov ecx, dword [esp + 0x1c]
movzx eax, word [esp + edi*2 + 0x54]
mov word [esp + ecx*2 + 0x54], ax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
mov dword [esp + 0x2c], ecx
mov eax, dword [ecx + 4]
mov dword [esp + 0x30], eax
cmp eax, dword [ecx + 0xc]
jae 0x6d8da6
mov dword [eax], 0x77f5ec
rdtsc
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov dword [eax + 4], ecx
add eax, 0xc
mov ecx, dword [esp + 0x2c]
mov dword [ecx + 4], eax
cmp edi, 2
jge 0x6d8b50
test edi, edi
je 0x6d8dfc
movzx eax, word [esp + 0x50]
movzx edx, word [esp + eax*2 + 0x250]
mov eax, 0xffff
cmp dx, ax
je 0x6d8dfc
mov edi, dword [ebp + 8]
mov esi, dword [ebp + 0x10]
mov ecx, dword [edi + 0x10]
push dword [esi + 4]
push edx
mov eax, dword [ecx]
call dword [eax + 0x14]
movzx eax, word [esp + 0x50]
mov edx, 0xffff
mov ecx, dword [edi + 0x10]
push 1
mov word [esp + eax*2 + 0x254], dx
mov eax, dword [ecx]
call dword [eax + 0x10]
mov esi, dword [esp + 0x24]
mov eax, dword [ebp + 8]
mov edi, dword [esi]
mov ecx, edi
sub ecx, esi
sub ecx, 0x408
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov dword [esp + 0x10], eax
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
dec eax
add eax, edx
mov dword [esp + 0x14], eax
js 0x6d8ed0
nop
movzx esi, word [esp + eax*2 + 0x250]
lea edi, [edi - 0xc]
mov eax, 0xffff
cmp si, ax
je 0x6d8e6f
mov ecx, dword [edi + 4]
push esi
push dword [edi + 8]
movzx eax, byte [ecx + 1]
push ecx
mov ecx, dword [esp + 0x1c]
lea eax, [eax + eax*4]
add eax, eax
mov eax, dword [ecx + eax*8 + 0x16c0]
call eax
mov eax, dword [edi]
mov ecx, esi
add esp, 0xc
mov dword [eax + 0x20], ecx
jmp 0x6d8ebf
mov eax, dword [ebp + 8]
push 0xffffffffffffffff
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, dword [edi + 4]
push 0xffff
push dword [edi + 8]
movzx eax, byte [ecx + 1]
push ecx
mov ecx, dword [esp + 0x1c]
lea eax, [eax + eax*4]
add eax, eax
mov eax, dword [ecx + eax*8 + 0x16bc]
call eax
mov eax, dword [ebp + 0x10]
add esp, 0xc
add dword [eax], 0xffffffd0
mov eax, dword [eax]
mov ecx, dword [edi]
movaps xmm0, xmmword [eax]
movaps xmmword [ecx], xmm0
movaps xmm0, xmmword [eax + 0x10]
movaps xmmword [ecx + 0x10], xmm0
mov eax, dword [eax + 0x20]
mov dword [ecx + 0x20], eax
mov eax, dword [esp + 0x14]
sub eax, 1
mov dword [esp + 0x14], eax
jns 0x6d8e30
pop edi
pop esi
mov esp, ebp
pop ebp
ret