Function at 0x66a910
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x814f38
push eax
mov dword fs:[0], esp
sub esp, 0x18
push ebx
push esi
mov esi, ecx
mov ecx, dword [ebp + 8]
push edi
mov eax, dword [ecx + 8]
or eax, dword [ecx + 0xc]
je 0x66a94f
push dword [ebp + 0xc]
push ecx
mov ecx, esi
call fcn.00697b40
add esp, 8
mov dword [ebp + 8], eax
mov dword [ebp + 0xc], edx
mov ecx, dword [esi + 0x1f0]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x20], 5
test ecx, ecx
je 0x66a968
mov eax, dword [ecx + 4]
jmp 0x66a96a
xor eax, eax
lea ebx, [eax + 1]
mov dword [ebp - 0x18], eax
xor eax, eax
test ebx, ebx
cmovs ebx, eax
test ecx, ecx
je 0x66a980
mov edi, dword [ecx + 4]
jmp 0x66a982
xor edi, edi
mov dword [ebp - 0x10], edi
mov edx, 4
cmp edi, ebx
je 0x66ab1c
jae 0x66ab15
test ecx, ecx
je 0x66a9a1
mov eax, dword [ecx + 8]
jmp 0x66a9a3
xor eax, eax
cmp ebx, eax
jbe 0x66aae0
test eax, eax
je 0x66a9b6
lea eax, [eax + eax*2]
shr eax, 1
jmp 0x66a9bd
cmp ebx, edx
mov eax, ebx
cmovl eax, edx
cmp eax, ebx
mov ecx, ebx
push 1
cmovae ecx, eax
mov dword [ebp - 0x1c], ecx
lea eax, [ecx*4 + 0xc]
push eax
call fcn.007a1529
add esp, 8
mov dword [ebp - 0x14], eax
test eax, eax
je 0x66ab1c
mov ecx, dword [ebp - 0x1c]
mov dword [eax + 8], ecx
mov ecx, 1
xchg dword [eax], ecx
lea ecx, [ebx*4]
lea edx, [eax + 0xc]
lea edi, [ecx + 3]
shr edi, 2
lea eax, [ecx + edx]
mov dword [ebp - 0x1c], edi
xor edi, edi
cmp edx, eax
mov eax, dword [ebp - 0x1c]
cmova eax, edi
mov edi, dword [ebp - 0x10]
test eax, eax
je 0x66aa2a
mov ecx, eax
mov edi, edx
xor eax, eax
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x10]
lea ecx, [ebx*4]
mov eax, dword [ebp - 0x14]
mov dword [eax + 4], ebx
mov eax, dword [esi + 0x1f0]
test eax, eax
je 0x66aad5
shl edi, 2
add eax, 0xc
test edi, edi
je 0x66aaad
test edx, edx
jne 0x66aa59
call fcn.007a0305
mov dword [eax], 0x16
jmp 0x66aaa8
test eax, eax
je 0x66aa6e
cmp ecx, edi
jb 0x66aa6e
push edi
push eax
push edx
call fcn.00797610
add esp, 0xc
jmp 0x66aaad
push ecx
push 0
push edx
call fcn.00798110
mov eax, dword [esi + 0x1f0]
add esp, 0xc
add eax, 0xc
jne 0x66aa92
call fcn.007a0305
mov dword [eax], 0x16
jmp 0x66aaa8
lea eax, [ebx*4]
cmp eax, edi
jae 0x66aaad
call fcn.007a0305
mov dword [eax], 0x22
call fcn.0079b0c2
mov ecx, dword [esi + 0x1f0]
test ecx, ecx
je 0x66aad5
or eax, 0xffffffff
lock xadd dword [ecx], eax
jne 0x66aad5
mov dword [ecx + 4], 0
push dword [esi + 0x1f0]
call fcn.007a0961
add esp, 4
mov eax, dword [ebp - 0x14]
mov dword [esi + 0x1f0], eax
jmp 0x66ab1c
mov eax, ebx
lea edx, [ecx + 0xc]
sub eax, edi
lea edx, [edx + edi*4]
shl eax, 2
mov dword [ebp - 0x1c], edx
add edx, eax
mov edi, dword [ebp - 0x1c]
add eax, 3
shr eax, 2
cmp edi, edx
mov edx, 0
cmova eax, edx
test eax, eax
je 0x66ab15
mov ecx, eax
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [esi + 0x1f0]
test ecx, ecx
je 0x66ab1c
mov dword [ecx + 4], ebx
mov ecx, dword [ebp - 0x18]
lea edx, [ebp + 8]
mov eax, dword [esi + 0x1f0]
mov dword [eax + ecx*4 + 0xc], edx
mov ecx, dword [esi + 0x1f0]
test ecx, ecx
je 0x66ab3b
mov eax, dword [ecx + 4]
jmp 0x66ab3d
xor eax, eax
lea ebx, [eax + 1]
mov dword [ebp - 0x14], eax
xor eax, eax
test ebx, ebx
cmovs ebx, eax
test ecx, ecx
je 0x66ab53
mov edi, dword [ecx + 4]
jmp 0x66ab55
xor edi, edi
mov dword [ebp - 0x10], edi
cmp edi, ebx
je 0x66acf6
jae 0x66acef
test ecx, ecx
je 0x66ab6f
mov eax, dword [ecx + 8]
jmp 0x66ab71
xor eax, eax
cmp ebx, eax
jbe 0x66acba
test eax, eax
je 0x66ab84
lea eax, [eax + eax*2]
shr eax, 1
jmp 0x66ab91
cmp ebx, 4
mov eax, ebx
mov ecx, 4
cmovl eax, ecx
cmp eax, ebx
mov ecx, ebx
push 1
cmovae ecx, eax
mov dword [ebp - 0x1c], ecx
lea eax, [ecx*4 + 0xc]
push eax
call fcn.007a1529
add esp, 8
mov dword [ebp - 0x18], eax
test eax, eax
je 0x66acf6
mov ecx, dword [ebp - 0x1c]
mov dword [eax + 8], ecx
mov ecx, 1
xchg dword [eax], ecx
lea ecx, [ebx*4]
lea edx, [eax + 0xc]
lea edi, [ecx + 3]
shr edi, 2
lea eax, [edx + ecx]
mov dword [ebp - 0x1c], edi
xor edi, edi
cmp edx, eax
mov eax, dword [ebp - 0x1c]
cmova eax, edi
mov edi, dword [ebp - 0x10]
test eax, eax
je 0x66abfe
mov ecx, eax
mov edi, edx
xor eax, eax
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x10]
lea ecx, [ebx*4]
mov eax, dword [ebp - 0x18]
mov dword [eax + 4], ebx
mov eax, dword [esi + 0x1f0]
test eax, eax
je 0x66acaf
shl edi, 2
add eax, 0xc
test edi, edi
je 0x66ac81
test edx, edx
jne 0x66ac2d
call fcn.007a0305
mov dword [eax], 0x16
jmp 0x66ac7c
test eax, eax
je 0x66ac42
cmp ecx, edi
jb 0x66ac42
push edi
push eax
push edx
call fcn.00797610
add esp, 0xc
jmp 0x66ac81
push ecx
push 0
push edx
call fcn.00798110
mov eax, dword [esi + 0x1f0]
add esp, 0xc
add eax, 0xc
jne 0x66ac66
call fcn.007a0305
mov dword [eax], 0x16
jmp 0x66ac7c
lea eax, [ebx*4]
cmp eax, edi
jae 0x66ac81
call fcn.007a0305
mov dword [eax], 0x22
call fcn.0079b0c2
mov ecx, dword [esi + 0x1f0]
test ecx, ecx
je 0x66acaf
or eax, 0xffffffff
lock xadd dword [ecx], eax
jne 0x66acaf
mov eax, dword [esi + 0x1f0]
mov dword [eax + 4], 0
push dword [esi + 0x1f0]
call fcn.007a0961
add esp, 4
mov eax, dword [ebp - 0x18]
mov dword [esi + 0x1f0], eax
jmp 0x66acf6
mov eax, ebx
lea edx, [ecx + 0xc]
sub eax, edi
lea edx, [edx + edi*4]
shl eax, 2
mov dword [ebp - 0x1c], edx
add edx, eax
mov edi, dword [ebp - 0x1c]
add eax, 3
shr eax, 2
cmp edi, edx
mov edx, 0
cmova eax, edx
test eax, eax
je 0x66acef
mov ecx, eax
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [esi + 0x1f0]
test ecx, ecx
je 0x66acf6
mov dword [ecx + 4], ebx
mov ecx, dword [ebp - 0x14]
lea edx, [ebp + 0x10]
mov eax, dword [esi + 0x1f0]
mov dword [eax + ecx*4 + 0xc], edx
mov ecx, dword [esi + 0x1f0]
test ecx, ecx
je 0x66ad15
mov eax, dword [ecx + 4]
jmp 0x66ad17
xor eax, eax
lea ebx, [eax + 1]
mov dword [ebp - 0x14], eax
xor eax, eax
test ebx, ebx
cmovs ebx, eax
test ecx, ecx
je 0x66ad2d
mov edi, dword [ecx + 4]
jmp 0x66ad2f
xor edi, edi
mov dword [ebp - 0x10], edi
cmp edi, ebx
je 0x66aed0
jae 0x66aec9
test ecx, ecx
je 0x66ad49
mov eax, dword [ecx + 8]
jmp 0x66ad4b
xor eax, eax
cmp ebx, eax
jbe 0x66ae94
test eax, eax
je 0x66ad5e
lea eax, [eax + eax*2]
shr eax, 1
jmp 0x66ad6b
cmp ebx, 4
mov eax, ebx
mov ecx, 4
cmovl eax, ecx
cmp eax, ebx
mov ecx, ebx
push 1
cmovae ecx, eax
mov dword [ebp - 0x1c], ecx
lea eax, [ecx*4 + 0xc]
push eax
call fcn.007a1529
add esp, 8
mov dword [ebp - 0x18], eax
test eax, eax
je 0x66aed0
mov ecx, dword [ebp - 0x1c]
mov dword [eax + 8], ecx
mov ecx, 1
xchg dword [eax], ecx
lea ecx, [ebx*4]
lea edx, [eax + 0xc]
lea edi, [ecx + 3]
shr edi, 2
lea eax, [edx + ecx]
mov dword [ebp - 0x1c], edi
xor edi, edi
cmp edx, eax
mov eax, dword [ebp - 0x1c]
cmova eax, edi
mov edi, dword [ebp - 0x10]
test eax, eax
je 0x66add8
mov ecx, eax
mov edi, edx
xor eax, eax
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x10]
lea ecx, [ebx*4]
mov eax, dword [ebp - 0x18]
mov dword [eax + 4], ebx
mov eax, dword [esi + 0x1f0]
test eax, eax
je 0x66ae89
shl edi, 2
add eax, 0xc
test edi, edi
je 0x66ae5b
test edx, edx
jne 0x66ae07
call fcn.007a0305
mov dword [eax], 0x16
jmp 0x66ae56
test eax, eax
je 0x66ae1c
cmp ecx, edi
jb 0x66ae1c
push edi
push eax
push edx
call fcn.00797610
add esp, 0xc
jmp 0x66ae5b
push ecx
push 0
push edx
call fcn.00798110
mov eax, dword [esi + 0x1f0]
add esp, 0xc
add eax, 0xc
jne 0x66ae40
call fcn.007a0305
mov dword [eax], 0x16
jmp 0x66ae56
lea eax, [ebx*4]
cmp eax, edi
jae 0x66ae5b
call fcn.007a0305
mov dword [eax], 0x22
call fcn.0079b0c2
mov ecx, dword [esi + 0x1f0]
test ecx, ecx
je 0x66ae89
or eax, 0xffffffff
lock xadd dword [ecx], eax
jne 0x66ae89
mov eax, dword [esi + 0x1f0]
mov dword [eax + 4], 0
push dword [esi + 0x1f0]
call fcn.007a0961
add esp, 4
mov eax, dword [ebp - 0x18]
mov dword [esi + 0x1f0], eax
jmp 0x66aed0
mov eax, ebx
lea edx, [ecx + 0xc]
sub eax, edi
lea edx, [edx + edi*4]
shl eax, 2
mov dword [ebp - 0x1c], edx
add edx, eax
mov edi, dword [ebp - 0x1c]
add eax, 3
shr eax, 2
cmp edi, edx
mov edx, 0
cmova eax, edx
test eax, eax
je 0x66aec9
mov ecx, eax
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [esi + 0x1f0]
test ecx, ecx
je 0x66aed0
mov dword [ecx + 4], ebx
mov ecx, dword [ebp - 0x14]
lea edx, [ebp + 0x18]
mov eax, dword [esi + 0x1f0]
mov dword [eax + ecx*4 + 0xc], edx
mov ecx, dword [esi + 0x1f0]
test ecx, ecx
je 0x66aeef
mov eax, dword [ecx + 4]
jmp 0x66aef1
xor eax, eax
lea ebx, [eax + 1]
mov dword [ebp - 0x14], eax
xor eax, eax
test ebx, ebx
cmovs ebx, eax
test ecx, ecx
je 0x66af07
mov edi, dword [ecx + 4]
jmp 0x66af09
xor edi, edi
mov dword [ebp - 0x10], edi
cmp edi, ebx
je 0x66b0aa
jae 0x66b0a3
test ecx, ecx
je 0x66af23
mov eax, dword [ecx + 8]
jmp 0x66af25
xor eax, eax
cmp ebx, eax
jbe 0x66b06e
test eax, eax
je 0x66af38
lea eax, [eax + eax*2]
shr eax, 1
jmp 0x66af45
cmp ebx, 4
mov eax, ebx
mov ecx, 4
cmovl eax, ecx
cmp eax, ebx
mov ecx, ebx
push 1
cmovae ecx, eax
mov dword [ebp - 0x1c], ecx
lea eax, [ecx*4 + 0xc]
push eax
call fcn.007a1529
add esp, 8
mov dword [ebp - 0x18], eax
test eax, eax
je 0x66b0aa
mov ecx, dword [ebp - 0x1c]
mov dword [eax + 8], ecx
mov ecx, 1
xchg dword [eax], ecx
lea ecx, [ebx*4]
lea edx, [eax + 0xc]
lea edi, [ecx + 3]
shr edi, 2
lea eax, [edx + ecx]
mov dword [ebp - 0x1c], edi
xor edi, edi
cmp edx, eax
mov eax, dword [ebp - 0x1c]
cmova eax, edi
mov edi, dword [ebp - 0x10]
test eax, eax
je 0x66afb2
mov ecx, eax
mov edi, edx
xor eax, eax
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x10]
lea ecx, [ebx*4]
mov eax, dword [ebp - 0x18]
mov dword [eax + 4], ebx
mov eax, dword [esi + 0x1f0]
test eax, eax
je 0x66b063
shl edi, 2
add eax, 0xc
test edi, edi
je 0x66b035
test edx, edx
jne 0x66afe1
call fcn.007a0305
mov dword [eax], 0x16
jmp 0x66b030
test eax, eax
je 0x66aff6
cmp ecx, edi
jb 0x66aff6
push edi
push eax
push edx
call fcn.00797610
add esp, 0xc
jmp 0x66b035
push ecx
push 0
push edx
call fcn.00798110
mov eax, dword [esi + 0x1f0]
add esp, 0xc
add eax, 0xc
jne 0x66b01a
call fcn.007a0305
mov dword [eax], 0x16
jmp 0x66b030
lea eax, [ebx*4]
cmp eax, edi
jae 0x66b035
call fcn.007a0305
mov dword [eax], 0x22
call fcn.0079b0c2
mov ecx, dword [esi + 0x1f0]
test ecx, ecx
je 0x66b063
or eax, 0xffffffff
lock xadd dword [ecx], eax
jne 0x66b063
mov eax, dword [esi + 0x1f0]
mov dword [eax + 4], 0
push dword [esi + 0x1f0]
call fcn.007a0961
add esp, 4
mov eax, dword [ebp - 0x18]
mov dword [esi + 0x1f0], eax
jmp 0x66b0aa
mov eax, ebx
lea edx, [ecx + 0xc]
sub eax, edi
lea edx, [edx + edi*4]
shl eax, 2
mov dword [ebp - 0x1c], edx
add edx, eax
mov edi, dword [ebp - 0x1c]
add eax, 3
shr eax, 2
cmp edi, edx
mov edx, 0
cmova eax, edx
test eax, eax
je 0x66b0a3
mov ecx, eax
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [esi + 0x1f0]
test ecx, ecx
je 0x66b0aa
mov dword [ecx + 4], ebx
mov ecx, dword [ebp - 0x14]
lea edx, [ebp + 0x20]
mov eax, dword [esi + 0x1f0]
mov dword [eax + ecx*4 + 0xc], edx
mov ecx, dword [esi + 0x1f0]
test ecx, ecx
je 0x66b0c9
mov eax, dword [ecx + 4]
jmp 0x66b0cb
xor eax, eax
lea ebx, [eax + 1]
mov dword [ebp - 0x14], eax
xor eax, eax
test ebx, ebx
cmovs ebx, eax
test ecx, ecx
je 0x66b0e1
mov edi, dword [ecx + 4]
jmp 0x66b0e3
xor edi, edi
mov dword [ebp - 0x10], edi
cmp edi, ebx
je 0x66b284
jae 0x66b27d
test ecx, ecx
je 0x66b0fd
mov eax, dword [ecx + 8]
jmp 0x66b0ff
xor eax, eax
cmp ebx, eax
jbe 0x66b248
test eax, eax
je 0x66b112
lea eax, [eax + eax*2]
shr eax, 1
jmp 0x66b11f
cmp ebx, 4
mov eax, ebx
mov ecx, 4
cmovl eax, ecx
cmp eax, ebx
mov ecx, ebx
push 1
cmovae ecx, eax
mov dword [ebp - 0x1c], ecx
lea eax, [ecx*4 + 0xc]
push eax
call fcn.007a1529
add esp, 8
mov dword [ebp - 0x18], eax
test eax, eax
je 0x66b284
mov ecx, dword [ebp - 0x1c]
mov dword [eax + 8], ecx
mov ecx, 1
xchg dword [eax], ecx
lea ecx, [ebx*4]
lea edx, [eax + 0xc]
lea edi, [ecx + 3]
shr edi, 2
lea eax, [ecx + edx]
mov dword [ebp - 0x1c], edi
xor edi, edi
cmp edx, eax
mov eax, dword [ebp - 0x1c]
cmova eax, edi
mov edi, dword [ebp - 0x10]
test eax, eax
je 0x66b18c
mov ecx, eax
mov edi, edx
xor eax, eax
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x10]
lea ecx, [ebx*4]
mov eax, dword [ebp - 0x18]
mov dword [eax + 4], ebx
mov eax, dword [esi + 0x1f0]
test eax, eax
je 0x66b23d
shl edi, 2
add eax, 0xc
test edi, edi
je 0x66b20f
test edx, edx
jne 0x66b1bb
call fcn.007a0305
mov dword [eax], 0x16
jmp 0x66b20a
test eax, eax
je 0x66b1d0
cmp ecx, edi
jb 0x66b1d0
push edi
push eax
push edx
call fcn.00797610
add esp, 0xc
jmp 0x66b20f
push ecx
push 0
push edx
call fcn.00798110
mov eax, dword [esi + 0x1f0]
add esp, 0xc
add eax, 0xc
jne 0x66b1f4
call fcn.007a0305
mov dword [eax], 0x16
jmp 0x66b20a
lea eax, [ebx*4]
cmp eax, edi
jae 0x66b20f
call fcn.007a0305
mov dword [eax], 0x22
call fcn.0079b0c2
mov eax, dword [esi + 0x1f0]
test eax, eax
je 0x66b23d
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x66b23d
mov eax, dword [esi + 0x1f0]
mov dword [eax + 4], 0
push dword [esi + 0x1f0]
call fcn.007a0961
add esp, 4
mov eax, dword [ebp - 0x18]
mov dword [esi + 0x1f0], eax
jmp 0x66b284
mov eax, ebx
lea edx, [ecx + 0xc]
sub eax, edi
lea edx, [edx + edi*4]
shl eax, 2
mov dword [ebp - 0x1c], edx
add edx, eax
mov edi, dword [ebp - 0x1c]
add eax, 3
shr eax, 2
cmp edi, edx
mov edx, 0
cmova eax, edx
test eax, eax
je 0x66b27d
mov ecx, eax
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [esi + 0x1f0]
test ecx, ecx
je 0x66b284
mov dword [ecx + 4], ebx
mov eax, dword [esi + 0x1f0]
lea edx, [ebp + 0x28]
mov ecx, dword [ebp - 0x14]
mov dword [eax + ecx*4 + 0xc], edx
push 5
mov edx, 0x924cb8
mov dword [ebp - 4], 0
mov ecx, esi
call fcn.00691b00
mov ecx, dword [ebp + 0x10]
mov esi, eax
add esp, 4
mov dword [esi + 0x10], ecx
mov ecx, dword [ebp + 0x14]
mov dword [esi + 0x14], ecx
mov ecx, dword [ebp + 0x18]
mov dword [esi + 0x18], ecx
mov ecx, dword [ebp + 0x1c]
mov dword [esi + 0x1c], ecx
mov eax, dword [ebp + 0x20]
mov dword [esi + 0x20], eax
mov eax, dword [ebp + 0x24]
mov dword [esi + 0x24], eax
mov eax, dword [ebp + 0x28]
mov dword [esi + 0x28], eax
mov eax, dword [ebp + 0x2c]
mov dword [esi + 0x2c], eax
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x30]
mov dword [esi + 0x30], eax
mov eax, dword [ecx + 0x34]
lea ecx, [ebp - 0x24]
mov dword [esi + 0x34], eax
mov eax, dword [ebp + 8]
mov dword [eax + 0x30], esi
mov dword [eax + 0x34], edx
mov edi, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
call fcn.005deb29
mov ecx, dword [ebp - 0xc]
mov eax, edi
pop edi
mov edx, esi
mov dword fs:[0], ecx
pop esi
pop ebx
mov esp, ebp
pop ebp
ret