Function at 0x1002d070
Capabilities:
Execute anti-debugging instructions

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x38
push ebx
push esi
mov esi, ecx
mov eax, dword [esi + 0x4bc]
test eax, eax
push edi
je 0x1002d0e7
mov ecx, dword [esi + 0xc0]
shl ecx, 2
xor eax, eax
test ecx, ecx
jle 0x1002d0ba
jmp 0x1002d0a0
mov edx, dword [esi + 0x5b4]
mov word [edx + eax*2], 0x4000
mov ecx, dword [esi + 0xc0]
inc eax
shl ecx, 2
cmp eax, ecx
jl 0x1002d0a0
mov ecx, dword [esi + 0xc0]
xor eax, eax
test ecx, ecx
jle 0x1002d0e7
jmp 0x1002d0d0
mov edx, dword [esi + 0x5bc]
mov word [edx + eax*2], 0x4000
mov ecx, dword [esi + 0xc0]
inc eax
cmp eax, ecx
jl 0x1002d0d0
mov eax, dword [esi + 8]
cmp eax, 3
je 0x1002d115
cmp eax, 4
jge 0x1002d115
mov eax, dword [esi + 0x1864]
mov ecx, dword [esi + 0x1874]
mov dword [eax], ecx
mov edx, dword [esi + 0x1868]
mov eax, dword [esi + 0x1880]
mov dword [edx], eax
jmp 0x1002d1a3
mov ecx, dword [esi + 0x1890]
mov eax, dword [esi + ecx*4 + 0x1878]
mov edx, dword [esi + 0x1868]
mov dword [edx], eax
mov ecx, dword [esi + 0x1894]
mov eax, dword [esi + ecx*4 + 0x1878]
mov edx, dword [esi + 0x1868]
mov dword [edx + 4], eax
mov ecx, dword [esi + 0x1898]
mov eax, dword [esi + ecx*4 + 0x1878]
mov edx, dword [esi + 0x1868]
mov dword [edx + 8], eax
mov ecx, dword [esi + 0x1884]
mov eax, dword [esi + ecx*4 + 0x186c]
mov edx, dword [esi + 0x1864]
mov dword [edx + 8], eax
mov eax, dword [esi + 0x1864]
mov ecx, dword [eax + 8]
mov dword [eax + 4], ecx
mov eax, dword [esi + 0x1864]
mov edx, dword [eax + 4]
mov dword [eax], edx
mov eax, dword [esi + 0x10dc]
mov ecx, dword [esi + eax*8 + 0x10e8]
mov dword [esi + 0x10e0], ecx
mov edx, dword [esi + eax*8 + 0x10ec]
mov dword [esi + 0x10e4], edx
mov eax, dword [esi + 0x11c]
test eax, eax
jne 0x1002d1b7
mov eax, dword [esi + 0x120]
test eax, eax
je 0x1002d1da
mov eax, dword [esi + 0x23c]
mov ecx, dword [esi + 0x254]
push 1
push eax
push ecx
mov ecx, esi
call fcn.10011f60
mov edx, dword [esi + 0x4bc]
mov dword [esi + 0x1974], edx
mov eax, dword [esi + 0x1a0]
mov edx, dword [esi + 0x9bc]
mov ecx, dword [esi + 0x19c]
mov edi, dword [esi + 0x9b4]
mov ebx, dword [esi + 0x9b8]
add edx, eax
add edi, ecx
mov dword [ebp - 0x1c], edx
mov edx, dword [esi + 0x9c0]
add edx, ecx
mov ecx, dword [esi + 0x9c4]
add ecx, eax
mov dword [ebp - 0x30], ecx
mov ecx, dword [esi + 0x9c8]
add ecx, eax
add ebx, eax
mov eax, dword [esi + 0xaf0]
mov dword [ebp - 0x34], ecx
mov ecx, dword [esi + 0x1a14]
mov dword [ebp - 0x20], eax
mov eax, dword [esi + 0x88]
mov dword [ebp - 0x2c], edx
mov edx, dword [esi + 0x1a18]
mov dword [ebp - 0x10], ecx
push eax
mov ecx, esi
mov dword [ebp - 0x18], edi
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x14], edx
call fcn.1002cee0
inc dword [0x1009e318]
mov eax, dword [esi + 0xb8]
inc eax
mov dword [ebp - 8], eax
mov eax, dword [esi + 0xbc]
test eax, eax
mov dword [ebp - 4], 0
jbe 0x1002d4e8
test byte [ebp - 4], 1
jne 0x1002d290
mov ecx, dword [esi + 0x1a14]
mov edx, dword [esi + 0x1a18]
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x14], edx
jmp 0x1002d2c5
mov eax, dword [esi + 0x25c]
test eax, eax
je 0x1002d2c5
mov eax, dword [esi + 0x290]
mov edi, dword [esi + 0x1a14]
sar eax, 4
lea ecx, [eax + eax*2]
shl ecx, 7
add ecx, edi
lea eax, [eax + eax*8]
mov dword [ebp - 0x10], ecx
mov ecx, dword [esi + 0x1a18]
shl eax, 4
add eax, ecx
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x18]
mov ebx, dword [ebp - 0xc]
mov dword [ebp - 0x24], eax
mov eax, dword [esi + 8]
cmp eax, 4
jge 0x1002d2f0
test eax, eax
je 0x1002d2f0
mov eax, dword [ebp - 4]
xor edx, edx
div dword [esi + 0xc8]
neg edx
sbb edx, edx
neg edx
mov dword [ebp - 0x28], edx
jmp 0x1002d2fd
mov eax, dword [ebp - 4]
xor ecx, ecx
test eax, eax
setne cl
mov dword [ebp - 0x28], ecx
mov eax, dword [esi + 0x49c]
test eax, eax
je 0x1002d323
cmp dword [esi + 0x604], 2
je 0x1002d323
mov edx, dword [ebp - 4]
push edx
mov ecx, esi
call fcn.10022740
test eax, eax
jne 0x1002d695
mov eax, 0x80
mov dword [esi + 0x184], eax
mov dword [esi + 0x180], eax
mov dword [esi + 0x17c], eax
mov eax, dword [esi + 0xb8]
xor edi, edi
test eax, eax
jbe 0x1002d465
mov eax, dword [ebp - 0x1c]
sub eax, dword [ebp - 0xc]
mov dword [ebp - 0x38], eax
mov eax, dword [esi + 0x11c]
test eax, eax
jne 0x1002d367
mov eax, dword [esi + 0x120]
test eax, eax
je 0x1002d36e
mov ecx, esi
call fcn.1000f0a0
mov eax, dword [esi + 8]
test eax, eax
jne 0x1002d395
mov ecx, esi
call fcn.1001ba90
test eax, eax
je 0x1002d395
lea eax, [esi + 0x1b0]
push eax
mov ecx, esi
call fcn.1001bb00
mov dword [ebp - 8], 0
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x20]
push ecx
push edi
inc eax
push edx
mov ecx, esi
mov dword [ebp - 8], eax
call dword [esi + 0x1920]
test eax, eax
jne 0x1002d885
test edi, edi
je 0x1002d3c5
mov eax, dword [ebp - 8]
mov edx, 1
cmp eax, edx
ja 0x1002d3c7
xor edx, edx
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x1002d3e0
mov ecx, dword [ebp - 8]
cmp ecx, dword [esi + 0xb8]
jbe 0x1002d3e0
mov ecx, 1
jmp 0x1002d3e2
xor ecx, ecx
test edi, edi
je 0x1002d3fd
test eax, eax
je 0x1002d3fd
mov eax, dword [esi + 0xb8]
inc eax
cmp dword [ebp - 8], eax
jbe 0x1002d3fd
mov eax, 1
jmp 0x1002d3ff
xor eax, eax
push edi
push eax
mov eax, dword [ebp - 0x38]
push ecx
mov ecx, dword [ebp - 0x14]
push edx
mov edx, dword [ebp - 0x10]
push ecx
mov ecx, dword [ebp - 0x24]
push edx
mov edx, dword [ebp - 0x20]
add eax, ebx
push eax
push ebx
push ecx
push edx
mov ecx, esi
call dword [esi + 0x1c18]
test eax, eax
jne 0x1002d885
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x14]
add eax, 0x10
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x10]
add eax, 0x180
add ecx, 0x70
add edx, 0x90
add ebx, 8
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 0xb8]
inc edi
cmp edi, eax
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x14], edx
jb 0x1002d353
mov eax, dword [esi + 0x4bc]
test eax, eax
je 0x1002d491
mov eax, dword [esi + 0xbc]
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0xc]
push 0
push 0
push eax
mov eax, dword [ebp - 0x18]
push ecx
mov ecx, dword [ebp - 4]
push edx
push eax
push ecx
mov ecx, esi
call fcn.10092a50
mov ecx, dword [esi + 0x1a4]
mov eax, dword [ebp - 0x18]
mov ebx, dword [ebp - 0xc]
mov edi, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x2c]
add eax, ecx
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 0x1a8]
add ebx, eax
add edi, eax
mov dword [ebp - 0xc], ebx
mov ebx, dword [ebp - 0x30]
mov dword [ebp - 0x1c], edi
mov edi, dword [ebp - 0x34]
add ebx, eax
add edi, eax
mov eax, dword [ebp - 4]
add edx, ecx
mov ecx, dword [esi + 0xbc]
inc eax
cmp eax, ecx
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x34], edi
mov dword [ebp - 4], eax
jb 0x1002d276
mov ebx, dword [ebp - 0xc]
mov edi, dword [ebp - 0x18]
mov eax, dword [esi + 0x4bc]
test eax, eax
je 0x1002d50e
mov edx, dword [esi + 0xbc]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 4]
push 0
push 0
push edx
push eax
push ebx
push edi
push ecx
mov ecx, esi
call fcn.10092a50
mov eax, dword [esi + 0x11c]
test eax, eax
jne 0x1002d522
mov eax, dword [esi + 0x120]
test eax, eax
je 0x1002d54a
mov edx, dword [esi + 0xbc]
mov eax, dword [esi + 0xb8]
push 1
push edx
push eax
mov ecx, esi
call fcn.1000f180
mov ecx, esi
call fcn.1000f1c0
mov dword [esi + 0x1974], 0
mov eax, dword [esi + 0x254]
test eax, eax
je 0x1002d571
mov eax, dword [esi + 0x11c]
test eax, eax
jne 0x1002d567
push 4
mov ecx, esi
call fcn.10034aa0
mov eax, dword [esi + 0x254]
test eax, eax
jne 0x1002d58d
mov ecx, dword [esi + 0xc0]
mov edi, dword [esi + 0xf60]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [esi + 0xa4c]
xor eax, eax
cmp ecx, eax
mov dword [esi + 0x1bb0], eax
mov dword [esi + 0x1ba8], 1
je 0x1002d883
cmp dword [esi + 0x9e0], eax
jne 0x1002d883
cmp dword [esi + 0x608], eax
mov dword [esi + 0x2e20], eax
je 0x1002d5e7
cmp dword [esi + 0x60c], eax
je 0x1002d5e7
mov ecx, esi
call fcn.1004c480
mov ecx, esi
mov dword [esi + 0x2e20], 1
call fcn.1004c5c0
mov eax, dword [esi + 0x25c]
test eax, eax
je 0x1002d70e
mov eax, dword [esi + 0xc]
test eax, eax
je 0x1002d70e
push 0
mov ecx, esi
call fcn.10087d90
mov ecx, esi
call fcn.1003be20
mov eax, dword [esi + 0x28c]
mov edi, dword [esi + 0xc]
mov dword [ebp - 0x38], eax
mov eax, dword [esi + 0x2e20]
test eax, eax
mov eax, dword [esi + 0x1a0]
mov dword [esi + 0x28c], edi
mov dword [esi + 0xc], 0
je 0x1002d6a1
mov ebx, dword [esi + 0x18ac]
add ebx, eax
push ebx
mov ebx, dword [esi + 0x18a8]
add ebx, eax
mov eax, dword [esi + 0x18a4]
mov ecx, edi
imul ecx, ecx, 0x58
mov edx, dword [ecx + esi + 0x2dc]
push ebx
add eax, dword [esi + 0x19c]
push eax
mov eax, dword [esi + 0x9c8]
add ecx, esi
mov ecx, dword [ecx + 0x2d8]
add eax, edx
push eax
mov eax, dword [esi + 0x9c4]
add eax, edx
add ecx, dword [esi + 0x9c0]
push eax
push ecx
mov ecx, esi
call fcn.10089290
mov ecx, esi
call fcn.100146b0
jmp 0x1002d6f8
pop edi
pop esi
mov eax, 0xffffff9c
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esi + 0x28c]
mov ebx, dword [esi + 0x9c8]
imul edx, edx, 0x58
add ebx, eax
push ebx
mov ebx, dword [esi + 0x9c4]
add ebx, eax
mov eax, dword [esi + 0x9c0]
push ebx
add eax, dword [esi + 0x19c]
push eax
mov eax, dword [esi + 0x9bc]
lea ecx, [edx + esi]
mov edx, dword [ecx + 0x2dc]
mov ecx, dword [ecx + 0x2d8]
add eax, edx
push eax
mov eax, dword [esi + 0x9b8]
add eax, edx
add ecx, dword [esi + 0x9b4]
push eax
push ecx
mov ecx, esi
call fcn.10089290
mov edx, dword [ebp - 0x38]
mov dword [esi + 0x28c], edx
mov dword [esi + 0xc], edi
mov dword [esi + 0x2e20], 1
mov eax, dword [esi + 0x1bac]
test eax, eax
mov dword [esi + 0x2e1c], 1
jne 0x1002d7be
mov eax, dword [esi + 0xc]
test eax, eax
mov eax, dword [esi + 0x1a0]
jne 0x1002d783
mov ecx, dword [esi + 0x19c]
mov ebx, dword [esi + 0x9c0]
mov edx, dword [esi + 0x9c8]
mov edi, dword [esi + 0x9c4]
add ebx, ecx
mov ecx, dword [esi + 0x9bc]
add ecx, eax
add edx, eax
push edx
mov dword [ebp - 0x38], ecx
mov ecx, dword [esi + 0x9b8]
mov edx, dword [ebp - 0x38]
add edi, eax
push edi
add ecx, eax
mov eax, dword [esi + 0x9b4]
push ebx
mov dword [ebp - 0x34], ecx
mov ecx, dword [esi + 0x19c]
push edx
mov edx, dword [ebp - 0x34]
add eax, ecx
push edx
push eax
jmp 0x1002d7a8
mov ecx, dword [esi + 0x9c8]
mov edi, dword [esi + 0x19c]
lea edx, [eax + ecx]
mov ecx, dword [esi + 0x9c4]
add eax, ecx
mov ecx, dword [esi + 0x9c0]
push edx
push eax
add edi, ecx
push edi
push edx
push eax
push edi
lea ecx, [esi + 0x640]
call dword [ecx + 0x364]
mov dword [esi + 0x2e20], 1
mov ecx, 0x1009e2d0
call fcn.1000e490
test eax, eax
je 0x1002d821
rdtsc
mov edi, dword [0x1009e2e0]
mov ecx, dword [0x1009e2e4]
sub edi, eax
mov eax, dword [0x1009e304]
sbb ecx, edx
test eax, eax
mov dword [0x1009e2e0], edi
mov dword [0x1009e2e4], ecx
jne 0x1002d7f9
inc dword [0x1009e358]
mov eax, dword [0x1009e308]
test eax, eax
jne 0x1002d81b
mov edx, dword [0x1009e2fc]
mov eax, dword [0x1009e378]
inc edx
mov dword [0x1009e2fc], edx
inc dword [eax*4 + 0x1009e364]
inc dword [0x1009e308]
mov edx, dword [esi + 0x2e20]
mov eax, dword [esi + 0x9c8]
mov ecx, dword [esi + 0x9c4]
push edx
mov edx, dword [esi + 0x9c0]
push eax
mov eax, dword [esi + 0x9bc]
push ecx
mov ecx, dword [esi + 0x9b8]
push edx
mov edx, dword [esi + 0x9b4]
push eax
push ecx
push edx
mov ecx, esi
call fcn.100336f0
mov ecx, 0x1009e2d0
call fcn.1000e490
test eax, eax
je 0x1002d883
rdtsc
mov ecx, dword [0x1009e2e0]
add ecx, eax
mov eax, dword [0x1009e2e4]
adc eax, edx
mov dword [0x1009e2e0], ecx
mov dword [0x1009e2e4], eax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret