Function at 0x40f200
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x461a36
mov eax, dword fs:[0]
push eax
sub esp, 0x270
mov eax, dword [0x47b6e0]
xor eax, esp
mov dword [esp + 0x268], eax
push ebx
push esi
push edi
mov eax, dword [0x47b6e0]
xor eax, esp
push eax
lea eax, [esp + 0x280]
mov dword fs:[0], eax
mov edi, ecx
cmp dword [edi + 0xe0], 0
mov dword [esp + 0x24], edi
jne 0x40f256
xor eax, eax
jmp 0x40f912
mov eax, dword [edi + 0x4d4]
cmp dword [edi + 0x4d0], eax
lea esi, [edi + 0x4cc]
mov dword [esp + 0x14], eax
jbe 0x40f273
call fcn.0044a28c
mov ebx, dword [esi + 4]
cmp ebx, dword [esi + 8]
jbe 0x40f280
call fcn.0044a28c
cmp ebx, dword [esp + 0x14]
je 0x40f299
mov eax, dword [esp + 0x14]
push ebx
mov ebx, dword [esi + 8]
call fcn.004078d0
add esp, 4
mov dword [esi + 8], eax
xor ebx, ebx
cmp dword [edi + 0xf0], ebx
mov dword [edi + 0x510], ebx
jbe 0x40f320
lea esp, [esp]
mov eax, dword [edi + 0xe0]
mov ecx, dword [eax]
lea edx, [esp + 0x40]
push edx
push ebx
push eax
mov eax, dword [ecx + 0x28]
call eax
test eax, eax
jl 0x40f311
cmp word [esp + 0x58], 0
je 0x40f2d7
add dword [edi + 0x510], 1
mov eax, 0x10000
test dword [esp + 0x4c], eax
je 0x40f2fb
test dword [esp + 0x48], eax
je 0x40f2fb
cmp dword [edi + 0x50c], 0
je 0x40f2fb
mov dword [edi + 0x508], 0
lea eax, [esp + 0x40]
call fcn.004072c0
add ebx, 1
cmp ebx, dword [edi + 0xf0]
jb 0x40f2b0
jmp 0x40f320
push eax
push ebx
push 0x46d218
call fcn.004220c0
add esp, 0xc
xor edi, edi
mov dword [esp + 0x10], edi
jmp 0x40f330
mov eax, dword [esi + 4]
test eax, eax
je 0x40f90d
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jae 0x40f90d
call fcn.0042b96b
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x40f903
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov dword [esp + 0x288], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x40f3a9
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x40f3ae
call fcn.0044a28c
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x10]
mov eax, dword [ecx + edx]
push eax
push 0x46d0bc
push 0x46cbf8
lea ecx, [esp + 0x24]
push 0x46c504
push ecx
call fcn.00409cb0
xor ebx, ebx
add esp, 0x14
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
push 0x206
lea edx, [esp + 0x72]
push ebx
mov byte [esp + 0x290], 1
push edx
mov word [esp + 0x78], 0x30
call fcn.0044b520
add esp, 0xc
lea eax, [esp + 0x1c]
push eax
push 0x20019
push ebx
mov ebx, dword [esp + 0x24]
push ebx
push 0x80000001
mov dword [esp + 0x3c], 0x104
call dword [0x464004]
test eax, eax
jne 0x40f49c
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x70]
push edx
push eax
push eax
mov eax, dword [esp + 0x2c]
push 0x46d0cc
push eax
call dword [0x464024]
test eax, eax
jne 0x40f491
mov ecx, dword [esp + 0x1c]
push ecx
call dword [0x464020]
mov ecx, 0x46b674
lea eax, [esp + 0x6c]
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40f6df
test dx, dx
je 0x40f48a
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40f6df
add eax, 4
add ecx, 4
test dx, dx
jne 0x40f460
xor eax, eax
jmp 0x40f6e4
mov edx, dword [esp + 0x1c]
push edx
call dword [0x464020]
mov eax, dword [esi + 4]
test eax, eax
je 0x40f4bd
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x40f4c2
call fcn.0044a28c
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x10]
cmp word [eax + ecx + 0x18], 1
jne 0x40f5f5
test eax, eax
je 0x40f4f3
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x40f4f8
call fcn.0044a28c
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x10]
cmp dword [edx + eax + 0x24], 0
jne 0x40f5f5
mov ecx, dword [esp + 0x24]
mov ebx, dword [ecx + 0xe0]
mov eax, edx
test eax, eax
je 0x40f534
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x40f539
call fcn.0044a28c
mov eax, dword [esi + 4]
add eax, dword [esp + 0x10]
mov edx, dword [ebx]
mov eax, dword [eax + 0x10]
mov ecx, dword [edx + 0x2c]
push 0xffffffffffffffff
push eax
push edi
push ebx
call ecx
test eax, eax
jl 0x40f8cb
mov eax, dword [esi + 4]
test eax, eax
je 0x40f578
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x40f57d
call fcn.0044a28c
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x18]
mov dword [edx + eax + 0x1c], 1
mov eax, ebx
call fcn.00403380
lea ecx, [esp + 0x20]
push ecx
push 0x20006
push 0
push ebx
push 0x80000001
call dword [0x464004]
test eax, eax
jne 0x40f8cb
mov edx, dword [esp + 0x20]
push 0xa
push 0x46cce0
push 1
push eax
push 0x46d0cc
push edx
call dword [0x46401c]
test eax, eax
jne 0x40f5e5
mov eax, dword [esp + 0x20]
push eax
call dword [0x464020]
jmp 0x40f8cb
mov ecx, dword [esp + 0x20]
push ecx
call dword [0x464020]
jmp 0x40f8cb
mov eax, dword [esi + 4]
test eax, eax
je 0x40f616
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x40f61b
call fcn.0044a28c
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x3c]
push ecx
push 0x20006
push 0
push ebx
push 0x80000001
mov dword [eax + edx + 0x1c], 1
call dword [0x464004]
test eax, eax
je 0x40f681
lea edx, [esp + 0x30]
push edx
lea eax, [esp + 0x30]
push eax
push 0
push 0xf003f
push 0
push 0x46b674
push 0
push ebx
push 0x80000001
call dword [0x464010]
test eax, eax
je 0x40f67b
mov ecx, dword [esp + 0x2c]
push ecx
call dword [0x464020]
call dword [0x464368]
lea edx, [esp + 0x14]
push edx
push 0x20006
push 0
push ebx
push 0x80000001
call dword [0x464004]
test eax, eax
jne 0x40f8cb
push 0xa
push 0x46cce0
push 1
push eax
mov eax, dword [esp + 0x24]
push 0x46d0cc
push eax
call dword [0x46401c]
test eax, eax
jne 0x40f6cf
mov ecx, dword [esp + 0x14]
push ecx
call dword [0x464020]
jmp 0x40f8cb
mov edx, dword [esp + 0x14]
push edx
call dword [0x464020]
jmp 0x40f8cb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40f7b0
mov ecx, 0x46cce0
lea eax, [esp + 0x6c]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40f71b
test dx, dx
je 0x40f717
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40f71b
add eax, 4
add ecx, 4
test dx, dx
jne 0x40f6f5
xor eax, eax
jmp 0x40f720
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40f7b0
mov eax, dword [esp + 0x24]
mov ebx, dword [eax + 0xe0]
mov eax, dword [esi + 4]
test eax, eax
je 0x40f753
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x40f758
call fcn.0044a28c
mov eax, dword [esi + 4]
add eax, dword [esp + 0x10]
mov ecx, dword [ebx]
mov edx, dword [eax + 0x10]
mov eax, dword [ecx + 0x2c]
push 0
push edx
push edi
push ebx
call eax
test eax, eax
jl 0x40f8cb
mov eax, dword [esi + 4]
test eax, eax
je 0x40f797
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x40f79c
call fcn.0044a28c
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x10]
mov dword [ecx + edx + 0x1c], 0
jmp 0x40f8cb
mov eax, dword [esi + 4]
test eax, eax
je 0x40f7d1
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x40f7d6
call fcn.0044a28c
mov eax, dword [esi + 4]
mov ebx, dword [esp + 0x10]
cmp word [ebx + eax + 0x18], 1
jne 0x40f89a
test eax, eax
je 0x40f807
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x40f80c
call fcn.0044a28c
mov ecx, dword [esi + 4]
cmp dword [ecx + ebx + 0x24], 0
jne 0x40f89a
mov edx, dword [esp + 0x24]
mov ebx, dword [edx + 0xe0]
mov eax, ecx
test eax, eax
je 0x40f844
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x40f849
call fcn.0044a28c
mov eax, dword [esi + 4]
add eax, dword [esp + 0x10]
mov ecx, dword [ebx]
mov edx, dword [eax + 0x10]
mov eax, dword [ecx + 0x2c]
push 0xffffffffffffffff
push edx
push edi
push ebx
call eax
test eax, eax
jl 0x40f8cb
mov eax, dword [esi + 4]
test eax, eax
je 0x40f884
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x40f889
call fcn.0044a28c
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x10]
mov dword [ecx + edx + 0x1c], 1
jmp 0x40f8cb
mov eax, dword [esi + 4]
test eax, eax
je 0x40f8bb
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x40f8c0
call fcn.0044a28c
mov eax, dword [esi + 4]
mov dword [eax + ebx + 0x1c], 1
mov dword [esp + 0x288], 0xffffffff
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f8f6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add edi, 1
add dword [esp + 0x10], 0x2c
jmp 0x40f330
push 0x80004005
call fcn.00401090
mov eax, 1
mov ecx, dword [esp + 0x280]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x268]
xor ecx, esp
call fcn.00449f9d
mov esp, ebp
pop ebp
ret