Function at 0x43f620
Capabilities:
Check os version
Get number of processors
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x790e32
mov eax, dword fs:[0]
push eax
sub esp, 0x1b8
mov eax, dword [0x867e6c]
xor eax, esp
mov dword [esp + 0x1b0], eax
push ebx
push esi
push edi
mov eax, dword [0x867e6c]
xor eax, esp
push eax
lea eax, [esp + 0x1c8]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov edi, ecx
lea ecx, [esp + 0x84]
mov esi, edx
push ecx
mov dword [esp + 0x30], edi
mov dword [esp + 0x28], eax
mov dword [esp + 0x40], esi
call fcn.0044b2c0
mov dword [esp + 0x1d0], 0
cmp dword [edi + 0xd8], 4
jl 0x43f7bd
mov ecx, dword [esp + 0x24]
lea edi, [esp + 0x19c]
call fcn.0054aa90
mov edx, dword [esp + 0x2c]
mov byte [esp + 0x1d0], 1
mov edi, dword [edx + 0x1d0]
mov ebx, dword [edi + 0x30]
add edi, 0x1c
push eax
mov eax, dword [ebx + 4]
push eax
push ebx
call fcn.0041be70
mov ecx, edi
mov dword [esp + 0x30], eax
call fcn.0041bf10
mov ecx, dword [esp + 0x30]
mov dword [ebx + 4], ecx
mov eax, dword [ecx + 4]
mov edi, 0x10
mov dword [eax], ecx
mov byte [esp + 0x1d0], 0
cmp dword [esp + 0x1b4], edi
jb 0x43f708
mov ecx, dword [esp + 0x1a0]
push ecx
call fcn.006441c7
add esp, 4
mov ebx, dword [esp + 0x2c]
mov eax, dword [ebx + 0x1d0]
add eax, 0x1c
call fcn.005bacb0
cmp dword [eax + 0x18], edi
jb 0x43f724
mov eax, dword [eax + 4]
jmp 0x43f727
add eax, 4
mov dword [esi], eax
mov eax, dword [esp + 0x24]
call fcn.0054aa50
mov ecx, dword [esi]
mov dword [esp + 0x30], eax
fild dword [esp + 0x30]
mov eax, ecx
mov dword [esp + 0x1b4], 0xf
mov dword [esp + 0x1b0], 0
fmul qword [0x82e2f8]
mov byte [esp + 0x1a0], 0
lea edi, [eax + 1]
fstp dword [esi + 0x5c]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x43f768
sub eax, edi
push eax
push ecx
lea ecx, [esp + 0x1a4]
call fcn.004016e0
lea eax, [ebx + 0xdc]
lea ebx, [esp + 0x19c]
mov byte [esp + 0x1d0], 2
call fcn.0054a600
mov byte [esp + 0x1d0], 0
cmp dword [esp + 0x1b4], 0x10
jb 0x43f7cc
mov edx, dword [esp + 0x1a0]
push edx
call fcn.006441c7
add esp, 4
jmp 0x43f7cc
mov dword [esi], 0
fild dword [edi + 0x168]
fstp dword [esi + 0x5c]
mov edi, dword [esp + 0x24]
mov eax, edi
call fcn.0054aa20
movsx ebx, ax
mov eax, dword [esp + 0x2c]
cmp dword [eax + 0xd8], 5
mov dword [esp + 0x4c], ebx
jl 0x43f807
mov eax, edi
call fcn.0054aa20
movsx ecx, ax
mov eax, edi
mov dword [esi + 0x1c], ecx
call fcn.0054aa20
movsx edx, ax
mov dword [esi + 0x20], edx
jmp 0x43f814
lea eax, [ebx - 1]
mov dword [esi + 0x1c], 0
mov dword [esi + 0x20], eax
mov edx, dword [esi + 0x20]
mov ecx, dword [esi + 0x1c]
lea eax, [ecx + edx]
lea edx, [ebx - 1]
cmp eax, edx
jl 0x43f826
mov eax, edx
mov edi, dword [esp + 0x2c]
sub eax, ecx
mov dword [esi + 0x20], eax
add edi, 0xdc
mov eax, ebx
mov dword [esp + 0x40], edi
call fcn.0054a5b0
sub esp, 0x34
mov eax, esp
mov dword [esp + 0x64], esp
push eax
call fcn.0043c700
lea edx, [esi + 4]
mov ecx, ebx
mov dword [esp + 0x64], edx
call fcn.0044a670
mov dword [esp + 0x38], 0
test ebx, ebx
jle 0x440308
mov esi, dword [esp + 0x30]
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov edi, dword [esp + 0x38]
mov eax, 0x4ec4ec4f
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp edi, ecx
jb 0x43f895
call fcn.006441b7
imul edi, edi, 0x34
add edi, dword [esi + 0xc]
mov esi, dword [esp + 0x24]
mov dword [esp + 0x34], edi
call fcn.0054a950
mov byte [esp + 0x1f], al
mov ebx, esi
test al, 1
je 0x43f92d
call fcn.0054a950
movzx eax, al
cmp eax, 0xff
jne 0x43f8c9
mov eax, ebx
call fcn.0054aa20
cwde
test eax, eax
jle 0x43f92d
mov esi, eax
nop
mov eax, ebx
call fcn.0054aa20
cwde
cmp eax, 0x7ff
mov dword [esp + 0x18], eax
jl 0x43f8ee
mov eax, ebx
call fcn.0054aa50
mov dword [esp + 0x18], eax
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x80]
push eax
lea edi, [esp + 0x8c]
call fcn.00449ba0
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x7c]
push ecx
push edx
lea eax, [esp + 0x11c]
push eax
mov ecx, edi
push ecx
call fcn.004498d0
sub esi, 1
jne 0x43f8d0
mov edi, dword [esp + 0x34]
test byte [esp + 0x1f], 2
je 0x43fc73
mov esi, ebx
call fcn.0054a950
movzx eax, al
cmp eax, 0xff
jne 0x43f951
mov eax, ebx
call fcn.0054aa20
cwde
test eax, eax
jle 0x43fc73
mov edx, dword [esp + 0x3c]
add edx, 0x44
mov dword [esp + 0x20], edx
mov dword [esp + 0x14], eax
jmp 0x43f970
lea eax, [esp + 0xc0]
xor ecx, ecx
call fcn.0057e350
mov dword [esp + 0xe8], ecx
mov dword [esp + 0xec], ecx
mov dword [esp + 0xf0], ecx
mov dword [esp + 0xf4], ecx
lea ecx, [esp + 0xf8]
call fcn.00434800
mov eax, ebx
call fcn.0054aa20
movzx edi, ax
mov eax, edi
and eax, 0x7ff
mov dword [esp + 0x18], edi
mov dword [esp + 0xa8], eax
cmp eax, 0x7ff
jne 0x43f9d7
mov eax, ebx
call fcn.0054aa50
mov dword [esp + 0xa8], eax
mov eax, edi
shr eax, 0xf
and al, 1
mov byte [esp + 0xac], al
mov eax, edi
shr eax, 0xe
and al, 1
mov esi, ebx
mov byte [esp + 0xad], al
call fcn.0054a950
fld1
mov edx, dword [0x88ba50]
fstp dword [esp + 0xbc]
movzx ecx, al
mov eax, dword [0x88ba54]
xor esi, esi
mov dword [esp + 0xb0], ecx
mov ecx, dword [0x88ba58]
mov dword [esp + 0xf8], edx
mov edx, dword [0x88ba5c]
mov byte [esp + 0xe4], 0
mov dword [esp + 0xfc], eax
mov dword [esp + 0x100], ecx
mov dword [esp + 0x104], edx
mov dword [esp + 0xb8], esi
mov dword [esp + 0xa4], esi
test edi, 0x2000
je 0x43fa71
mov eax, ebx
call fcn.0054aa20
cwde
mov dword [esp + 0xb4], eax
jmp 0x43fa7c
mov dword [esp + 0xb4], 0
test edi, 0x1000
je 0x43fb55
lea edi, [esp + 0x19c]
mov ecx, ebx
call fcn.0054aa90
mov ecx, dword [esp + 0x2c]
mov byte [esp + 0x1d0], 3
mov edi, dword [ecx + 0x1d0]
mov esi, dword [edi + 0x30]
mov edx, dword [esi + 4]
add edi, 0x1c
push eax
push edx
push esi
call fcn.0041be70
mov ecx, edi
mov dword [esp + 0x28], eax
call fcn.0041bf10
mov eax, dword [esp + 0x28]
mov dword [esi + 4], eax
mov ecx, dword [eax + 4]
mov dword [ecx], eax
mov byte [esp + 0x1d0], 0
cmp dword [esp + 0x1b4], 0x10
jb 0x43faf2
mov eax, dword [esp + 0x1a0]
push eax
call fcn.006441c7
add esp, 4
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 0x1d0]
mov esi, dword [eax + 0x1c]
mov edi, dword [eax + 0x30]
add eax, 0x1c
test esi, esi
jne 0x43fb0e
call fcn.006441b7
mov edi, dword [edi + 4]
test esi, esi
je 0x43fb19
mov eax, dword [esi]
jmp 0x43fb1b
xor eax, eax
cmp edi, dword [eax + 0x14]
jne 0x43fb25
call fcn.006441b7
test esi, esi
jne 0x43fb43
call fcn.006441b7
cmp edi, dword [esi + 0x14]
jne 0x43fb38
call fcn.006441b7
cmp dword [edi + 0x20], 0x10
jb 0x43fb47
mov esi, dword [edi + 0xc]
jmp 0x43fb4a
mov esi, dword [esi]
jmp 0x43fb2e
lea esi, [edi + 0xc]
mov edi, dword [esp + 0x18]
mov dword [esp + 0xa4], esi
test edi, 0x800
je 0x43fb79
mov eax, ebx
call fcn.0054aa50
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
fmul qword [0x82e2f8]
fstp dword [esp + 0xbc]
mov edi, dword [esp + 0x20]
mov edx, dword [edi + 0x10]
sub edx, dword [edi + 0xc]
mov ebx, dword [esp + 0xa8]
lea eax, [ebx + 1]
sar edx, 3
cmp edx, eax
jge 0x43fba1
xor edx, edx
xor ecx, ecx
push edx
push ecx
mov ecx, edi
call fcn.0044a800
mov eax, dword [edi + 0x10]
sub eax, dword [edi + 0xc]
sar eax, 3
cmp ebx, eax
jb 0x43fbb3
call fcn.006441b7
cmp byte [esp + 0xac], 0
mov ecx, dword [edi + 0xc]
mov dword [ecx + ebx*8], esi
je 0x43fc24
mov edx, dword [esp + 0x2c]
mov esi, dword [edx + 0x1d0]
mov ecx, dword [esi + 0x14]
sub ecx, dword [esi + 0x10]
mov edi, dword [esp + 0xb0]
add esi, 4
mov eax, 0x2aaaaaab
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x43fbf7
call fcn.006441b7
mov ebx, dword [esp + 0xa8]
lea edi, [edi + edi*2]
shl edi, 5
add edi, dword [esi + 0xc]
mov esi, dword [esp + 0x20]
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
sar ecx, 3
cmp ebx, ecx
jb 0x43fc1d
call fcn.006441b7
mov edx, dword [esi + 0xc]
mov dword [edx + ebx*8 + 4], edi
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x134], eax
lea edx, [esp + 0xa4]
lea eax, [esp + 0x138]
call fcn.0044a1f0
lea ecx, [esp + 0x134]
push ecx
lea edi, [esp + 0x120]
lea ebx, [esp + 0x88]
call fcn.004497e0
sub dword [esp + 0x14], 1
mov ebx, dword [esp + 0x24]
jne 0x43f970
mov edi, dword [esp + 0x34]
test byte [esp + 0x1f], 4
je 0x43ff7b
mov esi, ebx
call fcn.0054a950
movzx eax, al
cmp eax, 0xff
jne 0x43fc97
mov eax, ebx
call fcn.0054aa20
cwde
test eax, eax
jle 0x43ff7b
mov dword [esp + 0x28], eax
mov eax, ebx
call fcn.0054aa20
movzx eax, ax
mov dword [esp + 0x20], eax
and eax, 0x3ff
mov dword [esp + 0x14], eax
cmp eax, 0x3ff
jne 0x43fccc
mov eax, ebx
call fcn.0054aa50
mov dword [esp + 0x14], eax
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x48]
push eax
lea edi, [esp + 0x8c]
call fcn.00449ba0
mov eax, dword [esp + 0x44]
test eax, eax
jne 0x43fd76
call fcn.006441b7
xor eax, eax
mov esi, dword [esp + 0x48]
cmp esi, dword [eax + 0x18]
jne 0x43fd03
call fcn.006441b7
lea edi, [esi + 0x2c]
mov eax, edi
call fcn.0057e0f0
mov eax, dword [esp + 0x20]
test eax, 0x1000
je 0x43fd7d
mov eax, ebx
call fcn.0054aa50
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
mov eax, ebx
fmul qword [0x82e2f8]
fstp dword [edi]
call fcn.0054aa50
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
mov eax, ebx
fmul qword [0x82e2f8]
fstp dword [esi + 0x30]
call fcn.0054aa50
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
mov eax, ebx
fmul qword [0x82e2f8]
fstp dword [esi + 0x38]
call fcn.0054aa50
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul qword [0x82e2f8]
jmp 0x43fdf5
mov eax, dword [eax]
jmp 0x43fcf5
test eax, 0x4000
je 0x43fdf8
mov eax, ebx
call fcn.0054aa20
movsx ecx, ax
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fdiv qword [0x82dee8]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
call fcn.0076fe20
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [esp + 0x18]
fld dword [esp + 0x14]
call fcn.007701e0
fstp dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
fld dword [esp + 0x14]
cmp dword [edx + 0xd8], 2
fstp dword [esp + 0x14]
jne 0x43fde1
fld dword [esp + 0x18]
fchs
fstp dword [esp + 0x18]
fld dword [esp + 0x14]
fst dword [edi]
fld dword [esp + 0x18]
fld st(0)
fchs
fstp dword [esi + 0x30]
fstp dword [esi + 0x38]
fstp dword [esi + 0x3c]
lea eax, [esp + 0x50]
call fcn.0057e0f0
test dword [esp + 0x20], 0x800
mov eax, ebx
je 0x43fe35
call fcn.0054aa50
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
mov eax, ebx
fdiv qword [0x82de80]
fstp dword [esp + 0x58]
call fcn.0054aa50
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
jmp 0x43fe5f
call fcn.0054aa20
cwde
mov dword [esp + 0x14], eax
mov eax, ebx
fild dword [esp + 0x14]
fdiv qword [0x82de80]
fstp dword [esp + 0x58]
call fcn.0054aa20
movsx ecx, ax
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fdiv qword [0x82de80]
push edi
lea eax, [esp + 0x1a0]
lea edx, [esp + 0x54]
fstp dword [esp + 0x68]
call fcn.0057e110
mov esi, eax
mov eax, dword [esp + 0x20]
mov edx, eax
mov ecx, 9
shr edx, 0xf
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x48]
and dl, 1
mov byte [ecx + 0x50], dl
test eax, 0x8000
je 0x43ff1b
mov eax, ebx
call fcn.0054aa20
mov edi, dword [esp + 0x48]
movsx ecx, ax
mov eax, 0x66666667
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [edi + 0x54], eax
mov eax, ebx
call fcn.0054aa20
movsx ecx, ax
mov eax, 0x66666667
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, ebx
mov dword [edi + 0x58], ecx
call fcn.0054aa20
movsx ecx, ax
mov eax, 0x66666667
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [edi + 0x5c], eax
mov eax, ebx
call fcn.0054aa20
movsx ecx, ax
mov eax, 0x66666667
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov dword [edi + 0x60], ecx
jmp 0x43ff1f
mov edi, dword [esp + 0x48]
test dword [esp + 0x20], 0x2000
je 0x43ff57
mov esi, ebx
call fcn.0054a950
movzx edx, al
mov dword [edi + 0x64], edx
call fcn.0054a950
movzx eax, al
mov dword [edi + 0x68], eax
call fcn.0054a950
movzx ecx, al
mov dword [edi + 0x6c], ecx
call fcn.0054a950
movzx edx, al
mov dword [edi + 0x70], edx
test dword [esp + 0x20], 0x400
je 0x43ff6c
mov eax, ebx
call fcn.0054aa20
cwde
mov dword [edi + 0x24], eax
sub dword [esp + 0x28], 1
jne 0x43fca3
mov edi, dword [esp + 0x34]
test byte [esp + 0x1f], 8
je 0x440075
lea edi, [esp + 0x19c]
mov ecx, ebx
call fcn.0054aa90
mov ebx, dword [esp + 0x2c]
mov ecx, edi
push ecx
mov byte [esp + 0x1d4], 4
call fcn.0043f530
mov ebx, eax
lea edi, [esp + 0x50]
call fcn.00471da0
push 0xffffffffffffffff
xor ebx, ebx
push ebx
push eax
lea ecx, [esp + 0x1a8]
mov byte [esp + 0x1dc], 5
call fcn.00401530
mov esi, 0x10
mov byte [esp + 0x1d0], 4
cmp dword [esp + 0x68], esi
jb 0x43ffed
mov edx, dword [esp + 0x54]
push edx
call fcn.006441c7
add esp, 4
push 0xffffffffffffffff
push ebx
lea eax, [esp + 0x1a4]
push eax
lea ecx, [esp + 0x5c]
mov dword [esp + 0x74], 0xf
mov dword [esp + 0x70], ebx
mov byte [esp + 0x60], bl
call fcn.00401530
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x6c], ecx
mov eax, dword [esp + 0x3c]
lea edx, [esp + 0x128]
add eax, 0x24
push edx
push eax
lea eax, [esp + 0x58]
mov byte [esp + 0x1d8], 6
call fcn.0041daf0
cmp dword [esp + 0x68], esi
jb 0x44004d
mov ecx, dword [esp + 0x54]
push ecx
call fcn.006441c7
add esp, 4
mov byte [esp + 0x1d0], bl
cmp dword [esp + 0x1b4], esi
jb 0x44006d
mov edx, dword [esp + 0x1a0]
push edx
call fcn.006441c7
add esp, 4
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x24]
mov al, byte [esp + 0x1f]
test al, 0x10
je 0x440081
mov byte [edi + 0x18], 1
test al, 0x20
je 0x4401e9
mov esi, ebx
call fcn.0054a950
sub esp, 0x38
movzx ecx, al
mov eax, esp
mov edx, 0xf
mov dword [eax + 0x18], edx
xor esi, esi
mov dword [eax + 0x14], esi
mov byte [eax + 4], 0
mov dword [eax + 0x30], esi
mov dword [eax + 0x34], edx
lea esi, [edi + 0x1c]
mov edx, esi
mov dword [esp + 0x60], ecx
mov dword [esp + 0x4c], esp
mov byte [eax + 0x20], 0
call fcn.0044a4c0
cmp dword [esp + 0x28], 0
mov dword [esp + 0x20], 0
jle 0x4401e9
mov dword [esp + 0x18], 0
jmp 0x4400e6
mov ebx, dword [esp + 0x24]
lea edi, [esp + 0x50]
mov ecx, ebx
call fcn.0054aa90
mov ebx, eax
mov byte [esp + 0x1d0], 7
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x20], eax
jb 0x44011f
call fcn.006441b7
mov edi, dword [esi + 0xc]
add edi, dword [esp + 0x18]
push ebx
mov ebx, dword [esp + 0x30]
call fcn.0043f530
push 0xffffffffffffffff
push 0
push eax
mov ecx, edi
call fcn.00401530
mov byte [esp + 0x1d0], 0
cmp dword [esp + 0x68], 0x10
jb 0x440158
mov ecx, dword [esp + 0x54]
push ecx
call fcn.006441c7
add esp, 4
mov ecx, dword [esp + 0x24]
lea edi, [esp + 0x50]
call fcn.0054aa90
mov ebx, eax
mov byte [esp + 0x1d0], 8
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x20], eax
jb 0x440193
call fcn.006441b7
mov edi, dword [esi + 0xc]
add edi, dword [esp + 0x18]
push ebx
mov ebx, dword [esp + 0x30]
call fcn.0043f530
push 0xffffffffffffffff
push 0
push eax
lea ecx, [edi + 0x1c]
call fcn.00401530
mov byte [esp + 0x1d0], 0
cmp dword [esp + 0x68], 0x10
jb 0x4401cd
mov ecx, dword [esp + 0x54]
push ecx
call fcn.006441c7
add esp, 4
mov eax, dword [esp + 0x20]
add dword [esp + 0x18], 0x38
inc eax
cmp eax, dword [esp + 0x28]
mov dword [esp + 0x20], eax
jl 0x4400e2
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0xa0]
sub esp, 0x64
mov ecx, esp
lea eax, [ecx + 0x1c]
call fcn.0057e350
xor eax, eax
mov dword [ecx + 0x44], eax
mov dword [ecx + 0x48], eax
mov dword [ecx + 0x4c], eax
mov dword [ecx + 0x50], eax
add ecx, 0x54
call fcn.00434800
mov eax, edi
call fcn.0044a3b0
mov edx, dword [esp + 0x9c]
mov ebx, dword [edx]
mov esi, dword [esp + 0x84]
xor eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x78], ebx
mov dword [esp + 0x74], esi
mov dword [esp + 0x28], eax
lea esp, [esp]
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x110], eax
test esi, esi
je 0x44025b
cmp esi, dword [esp + 0x84]
je 0x440260
call fcn.006441b7
cmp ebx, dword [esp + 0x110]
je 0x4402e7
test esi, esi
jne 0x4402e3
call fcn.006441b7
cmp ebx, dword [esi + 0x18]
jne 0x440280
call fcn.006441b7
mov ecx, dword [edi + 0x10]
sub ecx, dword [edi + 0xc]
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
add ebx, 0x10
cmp dword [esp + 0x18], ecx
jb 0x4402a5
call fcn.006441b7
mov edi, dword [edi + 0xc]
mov eax, dword [esp + 0x28]
inc dword [esp + 0x18]
add edi, eax
mov ecx, 0x19
mov esi, ebx
rep movsd dword es:[edi], dword [esi]
add eax, 0x64
lea esi, [esp + 0x74]
mov dword [ebx + 0x10], 0
mov dword [esp + 0x28], eax
call fcn.0044d7c0
mov ebx, dword [esp + 0x78]
mov esi, dword [esp + 0x74]
mov edi, dword [esp + 0x34]
jmp 0x440240
mov esi, dword [esi]
jmp 0x440276
mov eax, dword [esp + 0x38]
inc eax
cmp eax, dword [esp + 0x4c]
mov dword [esp + 0x38], eax
jl 0x43f86d
mov ebx, dword [esp + 0x4c]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x3c]
test ebx, ebx
jne 0x440327
sub esp, 0x34
mov edx, esp
mov dword [esp + 0x74], esp
push edx
call fcn.0043c700
mov edx, dword [esp + 0x64]
mov ecx, 1
call fcn.0044a670
mov eax, dword [esi + 0x54]
sub eax, dword [esi + 0x50]
xor ebx, ebx
test eax, 0xfffffff8
jle 0x44036f
mov ecx, dword [esi + 0x54]
sub ecx, dword [esi + 0x50]
sar ecx, 3
cmp ebx, ecx
jb 0x440348
call fcn.006441b7
mov edx, dword [esi + 0x50]
cmp dword [edx + ebx*8 + 4], 0
lea eax, [edx + ebx*8]
setne al
movzx ecx, al
push ecx
mov edx, edi
call fcn.0054a590
mov edx, dword [esi + 0x54]
sub edx, dword [esi + 0x50]
inc ebx
sar edx, 3
cmp ebx, edx
jl 0x440336
lea esi, [esp + 0x84]
mov dword [esp + 0x1d0], 9
call fcn.0044b280
mov eax, dword [esp + 0x84]
push eax
call fcn.006441c7
add esp, 4
mov al, 1
mov ecx, dword [esp + 0x1c8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x1b0]
xor ecx, esp
call fcn.00643db8
mov esp, ebp
pop ebp
ret 4