Function at 0x40ee30
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x446f3e
mov eax, dword fs:[0]
push eax
sub esp, 8
push ebx
push esi
push edi
mov eax, dword [0x45c070]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebp + 8]
xor edi, edi
mov dword [esi + 4], edi
mov dword [esi + 0x14], edi
mov dword [esi + 0x18], edi
mov dword [esi + 0x1c], edi
mov dword [ebp - 4], edi
mov dword [esi], vtable.CSetupDlg.0
mov dword [esi + 0x20], edi
mov dword [esi + 0x24], edi
mov dword [esi + 0x28], edi
mov dword [esi + 0x2c], edi
mov dword [esi + 0x30], edi
mov dword [esi + 0x34], edi
mov dword [esi + 0x38], edi
mov eax, dword [0x45d48c]
mov edx, dword [eax + 0xc]
mov ecx, 0x45d48c
call edx
add eax, 0x10
mov dword [esi + 0x3c], eax
fld dword [0x454910]
mov al, byte [ebp + 0xc]
mov byte [esi + 0x40], al
fstp dword [esi + 0x50]
fld dword [0x454914]
add esi, 0x44
fstp dword [esi + 0x10]
mov ecx, esi
fld dword [0x454918]
mov dword [esi], edi
fstp dword [esi + 0x14]
mov dword [esi + 4], edi
mov dword [esi + 8], 0x11
mov dword [esi + 0x18], 0xffffffff
mov dword [esi + 0x1c], edi
mov dword [esi + 0x20], edi
mov dword [esi + 0x24], 0xa
mov dword [esi + 0x28], edi
mov dword [esi + 0x2c], edi
call fcn.0041eee0
mov byte [ebp - 4], 2
mov ecx, dword [esi + 8]
xor eax, eax
xor edx, edx
div ecx
mov eax, dword [esi]
mov dword [ebp + 0xc], edi
mov ebx, edx
cmp eax, edi
je 0x40f000
mov eax, dword [eax + ebx*4]
cmp eax, edi
je 0x40ef20
cmp dword [eax + 0xc], edi
jne 0x40ef19
cmp dword [eax], edi
je 0x40ef2a
mov eax, dword [eax + 8]
cmp eax, edi
jne 0x40ef10
push edi
lea ecx, [ebp + 0xc]
push ecx
call fcn.0041ed70
mov edx, dword [0x45d48c]
mov eax, dword [edx + 0xc]
mov ecx, 0x45d48c
mov dword [ebp - 0x10], 1
call eax
add eax, 0x10
mov dword [ebp + 0xc], eax
mov edi, 0xa8
mov byte [ebp - 4], 3
call fcn.004032e0
test eax, eax
je 0x40ef64
push eax
mov eax, edi
lea edi, [ebp + 0xc]
call fcn.00403490
mov byte [ebp - 4], 4
mov ecx, dword [esi + 8]
mov edi, 1
xor edx, edx
mov eax, edi
div ecx
mov eax, dword [esi]
mov ebx, edx
test eax, eax
je 0x40f01b
mov eax, dword [eax + ebx*4]
test eax, eax
je 0x40efa0
lea esp, [esp]
cmp dword [eax + 0xc], edi
jne 0x40ef99
cmp dword [eax], edi
je 0x40efaa
mov eax, dword [eax + 8]
test eax, eax
jne 0x40ef90
push edi
lea ecx, [ebp - 0x10]
push ecx
call fcn.0041ed70
mov edi, dword [ebp + 0xc]
mov ebx, dword [eax + 4]
add eax, 4
add edi, 0xfffffff0
sub ebx, 0x10
mov dword [ebp - 0x10], eax
cmp edi, ebx
je 0x40f045
cmp dword [ebx + 0xc], 0
jl 0x40f035
mov edx, dword [edi]
cmp edx, dword [ebx]
jne 0x40f035
mov eax, edi
call fcn.00403230
mov dword [ebp - 0x14], eax
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40eff3
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
add ecx, 0x10
mov dword [edx], ecx
jmp 0x40f045
push 1
push ecx
push esi
call fcn.0041ec30
test al, al
jne 0x40ef20
push 0x8007000e
call fcn.004036b0
push edi
push ecx
push esi
call fcn.0041ec30
test al, al
jne 0x40efa0
push 0x8007000e
call fcn.004036b0
mov eax, dword [ebp + 0xc]
mov ebx, dword [eax - 0xc]
push eax
mov eax, dword [ebp - 0x10]
push eax
call fcn.004036d0
mov byte [ebp - 4], 2
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f062
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [0x45d48c]
mov edx, dword [eax + 0xc]
mov ebx, 2
mov ecx, 0x45d48c
mov dword [ebp - 0x14], ebx
call edx
add eax, 0x10
mov dword [ebp + 0xc], eax
mov edi, 0xa9
mov byte [ebp - 4], 5
call fcn.004032e0
test eax, eax
je 0x40f09c
push eax
mov eax, edi
lea edi, [ebp + 0xc]
call fcn.00403490
mov byte [ebp - 4], 6
mov ecx, dword [esi + 8]
xor edx, edx
mov eax, ebx
div ecx
mov eax, dword [esi]
mov edi, edx
test eax, eax
je 0x40f127
mov eax, dword [eax + edi*4]
test eax, eax
je 0x40f0c8
cmp dword [eax + 0xc], ebx
jne 0x40f0c1
cmp dword [eax], ebx
je 0x40f0d5
mov eax, dword [eax + 8]
test eax, eax
jne 0x40f0b8
push 2
lea eax, [ebp - 0x14]
push eax
mov ebx, edi
call fcn.0041ed70
mov ecx, dword [ebp + 0xc]
mov ebx, dword [eax + 4]
add eax, 4
lea edi, [ecx - 0x10]
sub ebx, 0x10
mov dword [ebp - 0x10], eax
cmp edi, ebx
je 0x40f14b
cmp dword [ebx + 0xc], 0
jl 0x40f13e
mov edx, dword [edi]
cmp edx, dword [ebx]
jne 0x40f13e
mov eax, edi
call fcn.00403230
mov dword [ebp - 0x14], eax
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40f11a
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
add ecx, 0x10
mov dword [edx], ecx
jmp 0x40f14b
push 1
push ecx
push esi
call fcn.0041ec30
test al, al
jne 0x40f0c8
push 0x8007000e
call fcn.004036b0
mov eax, dword [ebp - 0x10]
mov ebx, dword [ecx - 0xc]
push ecx
push eax
call fcn.004036d0
mov byte [ebp - 4], 2
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f168
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [0x45d48c]
mov edx, dword [eax + 0xc]
mov ebx, 3
mov ecx, 0x45d48c
mov dword [ebp - 0x14], ebx
call edx
add eax, 0x10
mov dword [ebp + 0xc], eax
mov edi, 0xaa
mov byte [ebp - 4], 7
call fcn.004032e0
test eax, eax
je 0x40f1a2
push eax
mov eax, edi
lea edi, [ebp + 0xc]
call fcn.00403490
mov byte [ebp - 4], 8
mov ecx, dword [esi + 8]
xor edx, edx
mov eax, ebx
div ecx
mov eax, dword [esi]
mov edi, edx
test eax, eax
je 0x40f22f
mov eax, dword [eax + edi*4]
test eax, eax
je 0x40f1d0
mov edi, edi
cmp dword [eax + 0xc], ebx
jne 0x40f1c9
cmp dword [eax], ebx
je 0x40f1dd
mov eax, dword [eax + 8]
test eax, eax
jne 0x40f1c0
push 3
lea eax, [ebp - 0x14]
push eax
mov ebx, edi
call fcn.0041ed70
mov ecx, dword [ebp + 0xc]
mov ebx, dword [eax + 4]
add eax, 4
lea edi, [ecx - 0x10]
sub ebx, 0x10
mov dword [ebp - 0x10], eax
cmp edi, ebx
je 0x40f253
cmp dword [ebx + 0xc], 0
jl 0x40f246
mov edx, dword [edi]
cmp edx, dword [ebx]
jne 0x40f246
mov eax, edi
call fcn.00403230
mov dword [ebp - 0x14], eax
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40f222
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
add ecx, 0x10
mov dword [edx], ecx
jmp 0x40f253
push 1
push ecx
push esi
call fcn.0041ec30
test al, al
jne 0x40f1d0
push 0x8007000e
call fcn.004036b0
mov eax, dword [ebp - 0x10]
mov ebx, dword [ecx - 0xc]
push ecx
push eax
call fcn.004036d0
mov byte [ebp - 4], 2
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f270
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [0x45d48c]
mov edx, dword [eax + 0xc]
mov ebx, 4
mov ecx, 0x45d48c
mov dword [ebp - 0x14], ebx
call edx
add eax, 0x10
mov dword [ebp + 0xc], eax
mov edi, 0xae
mov byte [ebp - 4], 9
call fcn.004032e0
test eax, eax
je 0x40f2aa
push eax
mov eax, edi
lea edi, [ebp + 0xc]
call fcn.00403490
mov byte [ebp - 4], 0xa
mov ecx, dword [esi + 8]
xor edx, edx
mov eax, ebx
div ecx
mov eax, dword [esi]
mov edi, edx
test eax, eax
je 0x40f335
mov eax, dword [eax + edi*4]
test eax, eax
je 0x40f2d6
cmp dword [eax + 0xc], ebx
jne 0x40f2cf
cmp dword [eax], ebx
je 0x40f2e3
mov eax, dword [eax + 8]
test eax, eax
jne 0x40f2c6
push 4
lea eax, [ebp - 0x14]
push eax
mov ebx, edi
call fcn.0041ed70
mov ecx, dword [ebp + 0xc]
mov ebx, dword [eax + 4]
add eax, 4
lea edi, [ecx - 0x10]
sub ebx, 0x10
mov dword [ebp - 0x10], eax
cmp edi, ebx
je 0x40f359
cmp dword [ebx + 0xc], 0
jl 0x40f34c
mov edx, dword [edi]
cmp edx, dword [ebx]
jne 0x40f34c
mov eax, edi
call fcn.00403230
mov dword [ebp - 0x14], eax
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40f328
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
add ecx, 0x10
mov dword [edx], ecx
jmp 0x40f359
push 1
push ecx
push esi
call fcn.0041ec30
test al, al
jne 0x40f2d6
push 0x8007000e
call fcn.004036b0
mov eax, dword [ebp - 0x10]
mov ebx, dword [ecx - 0xc]
push ecx
push eax
call fcn.004036d0
mov byte [ebp - 4], 2
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f376
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [0x45d48c]
mov edx, dword [eax + 0xc]
mov ebx, 5
mov ecx, 0x45d48c
mov dword [ebp - 0x14], ebx
call edx
add eax, 0x10
mov dword [ebp + 0xc], eax
mov edi, 0xab
mov byte [ebp - 4], 0xb
call fcn.004032e0
test eax, eax
je 0x40f3b0
push eax
mov eax, edi
lea edi, [ebp + 0xc]
call fcn.00403490
mov byte [ebp - 4], 0xc
mov ecx, dword [esi + 8]
xor edx, edx
mov eax, ebx
div ecx
mov eax, dword [esi]
mov edi, edx
test eax, eax
je 0x40f43f
mov eax, dword [eax + edi*4]
test eax, eax
je 0x40f3e0
lea esp, [esp]
cmp dword [eax + 0xc], ebx
jne 0x40f3d9
cmp dword [eax], ebx
je 0x40f3ed
mov eax, dword [eax + 8]
test eax, eax
jne 0x40f3d0
push 5
lea eax, [ebp - 0x14]
push eax
mov ebx, edi
call fcn.0041ed70
mov ecx, dword [ebp + 0xc]
mov ebx, dword [eax + 4]
add eax, 4
lea edi, [ecx - 0x10]
sub ebx, 0x10
mov dword [ebp - 0x10], eax
cmp edi, ebx
je 0x40f463
cmp dword [ebx + 0xc], 0
jl 0x40f456
mov edx, dword [edi]
cmp edx, dword [ebx]
jne 0x40f456
mov eax, edi
call fcn.00403230
mov dword [ebp - 0x14], eax
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40f432
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
add ecx, 0x10
mov dword [edx], ecx
jmp 0x40f463
push 1
push ecx
push esi
call fcn.0041ec30
test al, al
jne 0x40f3e0
push 0x8007000e
call fcn.004036b0
mov eax, dword [ebp - 0x10]
mov ebx, dword [ecx - 0xc]
push ecx
push eax
call fcn.004036d0
mov byte [ebp - 4], 2
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f480
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [0x45d48c]
mov edx, dword [eax + 0xc]
mov ebx, 6
mov ecx, 0x45d48c
mov dword [ebp - 0x14], ebx
call edx
add eax, 0x10
mov dword [ebp + 0xc], eax
mov edi, 0xaf
mov byte [ebp - 4], 0xd
call fcn.004032e0
test eax, eax
je 0x40f4ba
push eax
mov eax, edi
lea edi, [ebp + 0xc]
call fcn.00403490
mov byte [ebp - 4], 0xe
mov ecx, dword [esi + 8]
xor edx, edx
mov eax, ebx
div ecx
mov eax, dword [esi]
mov edi, edx
test eax, eax
je 0x40f545
mov eax, dword [eax + edi*4]
test eax, eax
je 0x40f4e6
cmp dword [eax + 0xc], ebx
jne 0x40f4df
cmp dword [eax], ebx
je 0x40f4f3
mov eax, dword [eax + 8]
test eax, eax
jne 0x40f4d6
push 6
lea eax, [ebp - 0x14]
push eax
mov ebx, edi
call fcn.0041ed70
mov ecx, dword [ebp + 0xc]
mov ebx, dword [eax + 4]
add eax, 4
lea edi, [ecx - 0x10]
sub ebx, 0x10
mov dword [ebp - 0x10], eax
cmp edi, ebx
je 0x40f569
cmp dword [ebx + 0xc], 0
jl 0x40f55c
mov edx, dword [edi]
cmp edx, dword [ebx]
jne 0x40f55c
mov eax, edi
call fcn.00403230
mov dword [ebp - 0x14], eax
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40f538
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
add ecx, 0x10
mov dword [edx], ecx
jmp 0x40f569
push 1
push ecx
push esi
call fcn.0041ec30
test al, al
jne 0x40f4e6
push 0x8007000e
call fcn.004036b0
mov eax, dword [ebp - 0x10]
mov ebx, dword [ecx - 0xc]
push ecx
push eax
call fcn.004036d0
mov byte [ebp - 4], 2
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f586
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [0x45d48c]
mov edx, dword [eax + 0xc]
mov ebx, 7
mov ecx, 0x45d48c
mov dword [ebp - 0x14], ebx
call edx
add eax, 0x10
mov dword [ebp + 0xc], eax
mov edi, 0xb1
mov byte [ebp - 4], 0xf
call fcn.004032e0
test eax, eax
je 0x40f5c0
push eax
mov eax, edi
lea edi, [ebp + 0xc]
call fcn.00403490
mov byte [ebp - 4], 0x10
mov ecx, dword [esi + 8]
xor edx, edx
mov eax, ebx
div ecx
mov eax, dword [esi]
mov edi, edx
test eax, eax
je 0x40f64f
mov eax, dword [eax + edi*4]
test eax, eax
je 0x40f5f0
lea esp, [esp]
cmp dword [eax + 0xc], ebx
jne 0x40f5e9
cmp dword [eax], ebx
je 0x40f5fd
mov eax, dword [eax + 8]
test eax, eax
jne 0x40f5e0
push 7
lea eax, [ebp - 0x14]
push eax
mov ebx, edi
call fcn.0041ed70
mov ecx, dword [ebp + 0xc]
mov ebx, dword [eax + 4]
add eax, 4
lea edi, [ecx - 0x10]
sub ebx, 0x10
mov dword [ebp - 0x10], eax
cmp edi, ebx
je 0x40f673
cmp dword [ebx + 0xc], 0
jl 0x40f666
mov edx, dword [edi]
cmp edx, dword [ebx]
jne 0x40f666
mov eax, edi
call fcn.00403230
mov dword [ebp - 0x14], eax
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40f642
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
add ecx, 0x10
mov dword [edx], ecx
jmp 0x40f673
push 1
push ecx
push esi
call fcn.0041ec30
test al, al
jne 0x40f5f0
push 0x8007000e
call fcn.004036b0
mov eax, dword [ebp - 0x10]
mov ebx, dword [ecx - 0xc]
push ecx
push eax
call fcn.004036d0
mov byte [ebp - 4], 2
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f690
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [0x45d48c]
mov edx, dword [eax + 0xc]
mov ebx, 8
mov ecx, 0x45d48c
mov dword [ebp - 0x14], ebx
call edx
add eax, 0x10
mov dword [ebp + 0xc], eax
mov edi, 0xac
mov byte [ebp - 4], 0x11
call fcn.004032e0
test eax, eax
je 0x40f6ca
push eax
mov eax, edi
lea edi, [ebp + 0xc]
call fcn.00403490
mov byte [ebp - 4], 0x12
mov ecx, dword [esi + 8]
xor edx, edx
mov eax, ebx
div ecx
mov eax, dword [esi]
mov edi, edx
test eax, eax
je 0x40f755
mov eax, dword [eax + edi*4]
test eax, eax
je 0x40f6f6
cmp dword [eax + 0xc], ebx
jne 0x40f6ef
cmp dword [eax], ebx
je 0x40f703
mov eax, dword [eax + 8]
test eax, eax
jne 0x40f6e6
push 8
lea eax, [ebp - 0x14]
push eax
mov ebx, edi
call fcn.0041ed70
mov ecx, dword [ebp + 0xc]
mov ebx, dword [eax + 4]
add eax, 4
lea edi, [ecx - 0x10]
sub ebx, 0x10
mov dword [ebp - 0x10], eax
cmp edi, ebx
je 0x40f779
cmp dword [ebx + 0xc], 0
jl 0x40f76c
mov edx, dword [edi]
cmp edx, dword [ebx]
jne 0x40f76c
mov eax, edi
call fcn.00403230
mov dword [ebp - 0x14], eax
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40f748
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
add ecx, 0x10
mov dword [edx], ecx
jmp 0x40f779
push 1
push ecx
push esi
call fcn.0041ec30
test al, al
jne 0x40f6f6
push 0x8007000e
call fcn.004036b0
mov eax, dword [ebp - 0x10]
mov ebx, dword [ecx - 0xc]
push ecx
push eax
call fcn.004036d0
mov byte [ebp - 4], 2
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f796
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [0x45d48c]
mov edx, dword [eax + 0xc]
mov ebx, 9
mov ecx, 0x45d48c
mov dword [ebp - 0x14], ebx
call edx
add eax, 0x10
mov dword [ebp + 0xc], eax
mov edi, 0xb0
mov byte [ebp - 4], 0x13
call fcn.004032e0
test eax, eax
je 0x40f7d0
push eax
mov eax, edi
lea edi, [ebp + 0xc]
call fcn.00403490
mov byte [ebp - 4], 0x14
mov ecx, dword [esi + 8]
xor edx, edx
mov eax, ebx
div ecx
mov eax, dword [esi]
mov edi, edx
test eax, eax
je 0x40f85f
mov eax, dword [eax + edi*4]
test eax, eax
je 0x40f800
lea esp, [esp]
cmp dword [eax + 0xc], ebx
jne 0x40f7f9
cmp dword [eax], ebx
je 0x40f80d
mov eax, dword [eax + 8]
test eax, eax
jne 0x40f7f0
push 9
lea eax, [ebp - 0x14]
push eax
mov ebx, edi
call fcn.0041ed70
mov ecx, dword [ebp + 0xc]
mov ebx, dword [eax + 4]
add eax, 4
lea edi, [ecx - 0x10]
sub ebx, 0x10
mov dword [ebp - 0x10], eax
cmp edi, ebx
je 0x40f883
cmp dword [ebx + 0xc], 0
jl 0x40f876
mov edx, dword [edi]
cmp edx, dword [ebx]
jne 0x40f876
mov eax, edi
call fcn.00403230
mov dword [ebp - 0x14], eax
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40f852
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
add ecx, 0x10
mov dword [edx], ecx
jmp 0x40f883
push 1
push ecx
push esi
call fcn.0041ec30
test al, al
jne 0x40f800
push 0x8007000e
call fcn.004036b0
mov eax, dword [ebp - 0x10]
mov ebx, dword [ecx - 0xc]
push ecx
push eax
call fcn.004036d0
mov byte [ebp - 4], 2
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f8a0
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [0x45d48c]
mov edx, dword [eax + 0xc]
mov ebx, 0xa
mov ecx, 0x45d48c
mov dword [ebp - 0x14], ebx
call edx
add eax, 0x10
mov dword [ebp + 0xc], eax
mov edi, 0xad
mov byte [ebp - 4], 0x15
call fcn.004032e0
test eax, eax
je 0x40f8da
push eax
mov eax, edi
lea edi, [ebp + 0xc]
call fcn.00403490
mov byte [ebp - 4], 0x16
mov ecx, dword [esi + 8]
xor edx, edx
mov eax, ebx
div ecx
mov eax, dword [esi]
mov edi, edx
test eax, eax
je 0x40f95f
mov eax, dword [eax + edi*4]
test eax, eax
je 0x40f906
cmp dword [eax + 0xc], ebx
jne 0x40f8ff
cmp dword [eax], ebx
je 0x40f913
mov eax, dword [eax + 8]
test eax, eax
jne 0x40f8f6
push 0xa
lea eax, [ebp - 0x14]
push eax
mov ebx, edi
call fcn.0041ed70
mov edi, dword [ebp + 0xc]
mov esi, dword [eax + 4]
lea ebx, [eax + 4]
add edi, 0xfffffff0
sub esi, 0x10
cmp edi, esi
je 0x40f983
cmp dword [esi + 0xc], 0
jl 0x40f976
mov ecx, dword [edi]
cmp ecx, dword [esi]
jne 0x40f976
mov eax, edi
call fcn.00403230
mov dword [ebp - 0x14], eax
lea eax, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x40f955
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
mov eax, dword [ebp - 0x14]
add eax, 0x10
mov dword [ebx], eax
jmp 0x40f983
push 1
push ecx
push esi
call fcn.0041ec30
test al, al
jne 0x40f906
push 0x8007000e
call fcn.004036b0
mov eax, dword [ebp + 0xc]
push eax
push ebx
mov ebx, dword [eax - 0xc]
call fcn.004036d0
mov byte [ebp - 4], 2
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f9a0
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8