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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x104
mov eax, dword [ecx + 4]
push ebx
push esi
mov dword [esp + 0x70], eax
push edi
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], 0x184c158
mov edx, 0x184c160
mov eax, 1
lock xadd dword [edx], eax
mov eax, dword [ecx + 0x74]
mov dword [esp + 0x24], eax
add eax, 8
mov ecx, 1
lock xadd dword [eax], ecx
mov eax, dword [esp + 0x24]
test byte [eax + 0x1c], 1
jne 0x168a4a0
mov edx, dword [eax + 8]
cmp edx, 1
je 0x168a4a0
mov ecx, dword [esp + 0x24]
push 8
push 0x20
push 0x1686140
push 0x1686170
call fcn.0128b690
mov esi, eax
mov eax, dword [esp + 0x24]
add eax, 8
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x168a49c
mov ecx, dword [esp + 0x24]
push 0x1686140
call fcn.0128b360
mov dword [esp + 0x24], esi
mov edx, dword [ebp + 0x10]
mov eax, dword [edx]
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
mov dword [esp + 0x2c], 0
test ecx, ecx
jle 0x168aaa4
jmp 0x168a4c0
mov edx, dword [eax + 8]
add edx, dword [esp + 0x2c]
mov eax, dword [eax + edx*4 + 0x14]
mov dword [esp + 0x28], eax
test eax, eax
je 0x168aa88
push eax
call fcn.0169baa0
mov ecx, dword [eax + 0x4c]
and ecx, 0x7fffffff
add esp, 4
cmp ecx, 1
jne 0x168aa88
mov ebx, dword [esp + 0x28]
mov edx, dword [ebx + 4]
mov eax, dword [edx + 0x70]
mov dword [esp + 0x14], eax
lock xadd dword [eax], ecx
mov eax, dword [esp + 0x14]
test byte [eax + 0x10], 1
jne 0x168a573
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
push ecx
lea ecx, [esp + 0x18]
lea edi, [eax + edx*4 + 0x14]
call fcn.012a9390
mov esi, eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0xc]
lea edx, [eax + ecx*4 + 0x14]
mov ecx, dword [eax + 8]
push edi
push edx
lea edx, [eax + ecx*4 + 0x14]
push edx
lea ecx, [esp + 0x20]
call fcn.01685cf0
mov eax, esi
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x168a56f
mov edx, dword [esi + 0xc]
mov ecx, dword [esi + 8]
lea eax, [esi + edx*4 + 0x14]
lea edx, [esi + ecx*4 + 0x14]
push eax
push edx
lea ecx, [esp + 0x1c]
call fcn.01685bc0
push esi
call fcn.01285a10
add esp, 4
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
sub edx, ecx
mov dword [esp + 0x1c], 0
test edx, edx
jle 0x168a806
mov dword [esp + 0x98], ebx
add ecx, dword [esp + 0x1c]
mov ebx, dword [eax + ecx*4 + 0x14]
lea eax, [eax + ecx*4 + 0x14]
mov eax, dword [esp + 0x18]
cmp dword [eax + 0xa0], 1
jne 0x168a6f5
mov eax, dword [ebx]
mov dword [esp + 0x50], eax
mov dword [esp + 0x5c], eax
mov eax, dword [ebx + 4]
mov dword [esp + 0x60], eax
mov ecx, 1
lock xadd dword [eax], ecx
mov esi, dword [esp + 0x5c]
lea edx, [esp + 0x60]
push edx
call 0x128b5c0
add esp, 4
rol esi, 0x10
xor esi, eax
mov eax, dword [esp + 0x18]
mov edi, dword [eax + 0x74]
mov ecx, dword [edi + 0x18]
add eax, 0x74
mov dword [esp + 0x64], esi
mov dword [esp + 0x3c], edi
test ecx, ecx
je 0x168a68d
mov eax, esi
xor edx, edx
div ecx
mov eax, dword [edi + 4]
mov esi, dword [eax + edx*4]
lea eax, [eax + edx*4]
mov dword [esp + 0x40], eax
cmp esi, edi
je 0x168a691
mov ecx, dword [esp + 0x64]
cmp ecx, dword [esi + 4]
jne 0x168a67f
mov edx, dword [esp + 0x5c]
cmp edx, dword [esi + 8]
jne 0x168a67f
mov eax, dword [esp + 0x60]
mov eax, dword [eax + 8]
mov ecx, dword [esi + 0xc]
cmp eax, dword [ecx + 8]
jne 0x168a67f
mov edx, dword [esp + 0x60]
mov ecx, dword [ecx + 0xc]
mov edi, dword [edx + 0xc]
cmp eax, 4
jb 0x168a65b
mov edx, dword [edi]
cmp edx, dword [ecx]
jne 0x168a67f
sub eax, 4
add ecx, 4
add edi, 4
cmp eax, 4
jae 0x168a647
test eax, eax
je 0x168a691
mov dl, byte [ecx]
cmp dl, byte [edi]
jne 0x168a67f
cmp eax, 1
jbe 0x168a691
mov dl, byte [ecx + 1]
cmp dl, byte [edi + 1]
jne 0x168a67f
cmp eax, 2
jbe 0x168a691
mov al, byte [ecx + 2]
cmp al, byte [edi + 2]
je 0x168a691
mov dword [esp + 0x40], esi
mov esi, dword [esi]
cmp esi, dword [esp + 0x3c]
jne 0x168a617
jmp 0x168a691
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x40]
cmp dword [edx], ecx
jne 0x168a6db
mov eax, dword [ebx + 4]
mov eax, dword [eax + 0xc]
push eax
lea ecx, [esp + 0xf4]
push ecx
mov ecx, dword [esp + 0x58]
call fcn.0126d450
mov ecx, dword [esp + 0x18]
push eax
lea edx, [esp + 0x60]
push edx
lea eax, [esp + 0xec]
push eax
add ecx, 0x74
call fcn.016871b0
lea ecx, [esp + 0xf0]
call fcn.012a03b0
mov ecx, dword [esp + 0x60]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x168a6f5
mov eax, dword [esp + 0x60]
push eax
call fcn.01285a10
add esp, 4
mov ecx, dword [ebx]
mov eax, dword [ebx + 4]
mov dword [esp + 0x90], ecx
mov dword [esp + 0x94], eax
mov edx, 1
lock xadd dword [eax], edx
lea eax, [esp + 0x90]
push eax
lea ecx, [esp + 0x28]
call fcn.01687070
mov ecx, dword [esp + 0x94]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x168a742
mov eax, dword [esp + 0x94]
push eax
call fcn.01285a10
add esp, 4
lea ecx, [esp + 0x98]
push ecx
lea ecx, [esp + 0x14]
call fcn.01689ba0
mov ecx, dword [eax]
mov edx, dword [ecx]
mov ecx, eax
cmp edx, 1
je 0x168a7a3
push 1
push 0x7fffffff
call fcn.01685fc0
push 0x20
mov edi, eax
call fcn.01666532
mov esi, eax
add esp, 4
test esi, esi
je 0x168a7e1
mov eax, dword [ebx]
mov dword [esi], eax
mov eax, dword [ebx + 4]
mov dword [esi + 4], eax
mov ecx, 1
lock xadd dword [eax], ecx
lea edx, [ebx + 8]
push edx
lea ecx, [esi + 8]
call fcn.012a0f80
mov al, byte [ebx + 0x18]
mov byte [esi + 0x18], al
jmp 0x168a7e3
call fcn.012a8e60
push 0x20
mov edi, eax
call fcn.01666532
mov esi, eax
add esp, 4
test esi, esi
je 0x168a7e1
mov ecx, dword [ebx]
mov dword [esi], ecx
mov eax, dword [ebx + 4]
mov dword [esi + 4], eax
mov edx, 1
lock xadd dword [eax], edx
lea eax, [ebx + 8]
push eax
lea ecx, [esi + 8]
call fcn.012a0f80
mov cl, byte [ebx + 0x18]
mov byte [esi + 0x18], cl
jmp 0x168a7e3
xor esi, esi
mov edx, dword [esp + 0x1c]
mov dword [edi], esi
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 8]
mov esi, dword [eax + 0xc]
inc edx
sub esi, ecx
mov dword [esp + 0x1c], edx
cmp edx, esi
jl 0x168a592
mov ebx, dword [esp + 0x28]
mov ecx, ebx
call fcn.0169bae0
mov dword [esp + 0x58], eax
test eax, eax
je 0x168aa53
jmp 0x168a824
mov eax, dword [esp + 0x58]
test eax, eax
je 0x168a82d
mov eax, dword [eax + 4]
jmp 0x168a82f
xor eax, eax
mov esi, dword [eax + 0x70]
mov eax, dword [esp + 0x14]
cmp eax, esi
je 0x168a8ef
mov edx, esi
mov eax, 1
lock xadd dword [edx], eax
mov ecx, dword [esp + 0x14]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x168a87e
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0xc]
lea edx, [eax + ecx*4 + 0x14]
mov ecx, dword [eax + 8]
push edx
lea edx, [eax + ecx*4 + 0x14]
push edx
lea ecx, [esp + 0x1c]
mov edi, eax
call fcn.01685bc0
push edi
call fcn.01285a10
add esp, 4
mov eax, esi
mov dword [esp + 0x14], eax
test byte [esi + 0x10], 1
jne 0x168a8ef
mov ecx, dword [esi + 8]
mov eax, dword [esi + 4]
lea esi, [esi + ecx*4 + 0x14]
push eax
lea ecx, [esp + 0x18]
call fcn.012a9390
mov edi, eax
mov eax, dword [esp + 0x14]
mov edx, dword [eax + 0xc]
lea ecx, [eax + edx*4 + 0x14]
mov edx, dword [eax + 8]
push esi
push ecx
lea eax, [eax + edx*4 + 0x14]
push eax
lea ecx, [esp + 0x20]
call fcn.01685cf0
mov ecx, edi
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x168a8eb
mov eax, dword [edi + 0xc]
mov edx, dword [edi + 8]
lea ecx, [edi + eax*4 + 0x14]
push ecx
lea eax, [edi + edx*4 + 0x14]
push eax
lea ecx, [esp + 0x1c]
call fcn.01685bc0
push edi
call fcn.01285a10
add esp, 4
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
sub edx, ecx
mov dword [esp + 0x1c], 0
test edx, edx
jle 0x168aa3e
jmp 0x168a910
add ecx, dword [esp + 0x1c]
mov esi, dword [eax + ecx*4 + 0x14]
lea eax, [eax + ecx*4 + 0x14]
mov eax, dword [esi]
mov dword [esp + 0x80], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x84], eax
mov ecx, 1
lock xadd dword [eax], ecx
lea edx, [esp + 0x80]
push edx
lea ecx, [esp + 0x28]
call fcn.01687070
mov edi, eax
mov eax, dword [esp + 0x84]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x168a96b
mov edx, dword [esp + 0x84]
push edx
call fcn.01285a10
add esp, 4
test edi, edi
jle 0x168aa21
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x9c]
push ecx
lea ecx, [esp + 0x14]
mov dword [esp + 0xa0], eax
call fcn.01689ba0
mov ecx, eax
mov eax, dword [ecx]
mov edx, dword [eax]
cmp edx, 1
je 0x168a9df
push 1
push 0x7fffffff
call fcn.01685fc0
push 0x20
mov ebx, eax
call fcn.01666532
mov edi, eax
add esp, 4
test edi, edi
je 0x168aa1d
mov eax, dword [esi]
mov dword [edi], eax
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov ecx, 1
lock xadd dword [eax], ecx
lea edx, [esi + 8]
push edx
lea ecx, [edi + 8]
call fcn.012a0f80
mov al, byte [esi + 0x18]
mov byte [edi + 0x18], al
jmp 0x168aa1f
call fcn.012a8e60
push 0x20
mov ebx, eax
call fcn.01666532
mov edi, eax
add esp, 4
test edi, edi
je 0x168aa1d
mov ecx, dword [esi]
mov dword [edi], ecx
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov edx, 1
lock xadd dword [eax], edx
lea eax, [esi + 8]
push eax
lea ecx, [edi + 8]
call fcn.012a0f80
mov cl, byte [esi + 0x18]
mov byte [edi + 0x18], cl
jmp 0x168aa1f
xor edi, edi
mov dword [ebx], edi
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
mov ecx, dword [eax + 8]
mov esi, dword [eax + 0xc]
inc edx
sub esi, ecx
mov dword [esp + 0x1c], edx
cmp edx, esi
jl 0x168a910
mov ecx, dword [esp + 0x58]
call fcn.0169bae0
mov dword [esp + 0x58], eax
test eax, eax
jne 0x168a820
mov edx, dword [esp + 0x14]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x168aa88
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0xc]
lea edx, [eax + ecx*4 + 0x14]
mov ecx, dword [eax + 8]
push edx
lea edx, [eax + ecx*4 + 0x14]
push edx
lea ecx, [esp + 0x1c]
mov esi, eax
call fcn.01685bc0
push esi
call fcn.01285a10
add esp, 4
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
mov ecx, dword [esp + 0x2c]
mov edx, dword [eax + 0xc]
sub edx, dword [eax + 8]
inc ecx
mov dword [esp + 0x2c], ecx
cmp ecx, edx
jl 0x168a4c0
mov eax, dword [esp + 0x24]
xor ebx, ebx
cmp dword [eax + 0xc], ebx
je 0x168ab88
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx]
mov ecx, dword [eax + 0xc]
cmp ecx, dword [eax + 8]
je 0x168aaca
mov edx, dword [eax + ecx*4 + 0x10]
mov dword [esp + 0x50], edx
jmp 0x168aace
mov dword [esp + 0x50], ebx
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x50]
push ecx
mov ecx, dword [esp + 0x20]
call fcn.01686dd0
lea edx, [esp + 0x50]
push edx
lea ecx, [esp + 0x14]
mov edi, eax
call fcn.01689ba0
mov esi, eax
mov eax, dword [edi]
mov ecx, dword [eax + 0xc]
cmp ecx, dword [eax + 8]
je 0x168ab53
mov eax, dword [esi]
mov edx, dword [eax + 0xc]
cmp edx, dword [eax + 8]
jne 0x168ab11
push edi
mov ecx, esi
call fcn.01686860
jmp 0x168ab53
mov eax, dword [eax]
cmp eax, 1
je 0x168ab2f
mov ecx, dword [edi]
mov eax, dword [ecx + 0xc]
sub eax, dword [ecx + 8]
mov ecx, esi
push eax
push 0x7fffffff
call fcn.01685fc0
jmp 0x168ab37
push edi
mov ecx, esi
call 0x12a8e70
mov edi, dword [edi]
mov edx, dword [edi + 8]
mov ecx, dword [esi]
lea edx, [edi + edx*4 + 0x14]
push edx
mov edx, dword [ecx + 0xc]
lea ecx, [ecx + edx*4 + 0x14]
push ecx
push eax
mov ecx, esi
call fcn.01685cf0
mov edx, dword [esp + 0x4c]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x168ab88
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + 0xc]
lea edx, [eax + ecx*4 + 0x14]
mov ecx, dword [eax + 8]
push edx
lea edx, [eax + ecx*4 + 0x14]
push edx
lea ecx, [esp + 0x54]
mov esi, eax
call fcn.01685bc0
push esi
call fcn.01285a10
add esp, 4
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x18]
test ecx, ecx
jle 0x168ae9f
jmp 0x168abb0
mov edx, dword [eax + 8]
add edx, dword [esp + 0x2c]
lea ecx, [esp + 0xa4]
mov eax, dword [eax + edx*4 + 0x14]
push ecx
lea edx, [esp + 0x70]
push edx
lea ecx, [ebx + 0xb4]
mov dword [esp + 0xac], eax
call fcn.016892e0
mov eax, dword [esp + 0x6c]
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
mov dword [esp + 0x4c], 0
test ecx, ecx
jle 0x168ae6d
mov edx, dword [eax + 8]
add edx, dword [esp + 0x4c]
push 0x180f0c8
mov esi, dword [eax + edx*4 + 0x14]
mov eax, dword [esp + 0x78]
push eax
push 0x181517c
push esi
mov dword [esp + 0x64], esi
call fcn.01270db0
add esp, 0x10
lea ecx, [esp + 0x54]
push ecx
lea ecx, [ebx + 0xbc]
call 0x1433250
mov ecx, esi
mov edi, esi
call fcn.012de270
test eax, eax
je 0x168ac4d
jmp 0x168ac40
mov ecx, eax
mov edi, eax
call fcn.012de270
test eax, eax
jne 0x168ac40
mov ecx, edi
call fcn.01694270
mov ecx, dword [ebx + 0xc0]
mov edi, dword [ecx + 0x18]
lea edx, [ebx + 0xc0]
test edi, edi
je 0x168ac92
xor edx, edx
mov eax, esi
div edi
mov eax, dword [ecx + 4]
lea edx, [eax + edx*4]
mov eax, dword [edx]
cmp eax, ecx
je 0x168ac92
lea esp, [esp]
cmp esi, dword [eax + 4]
jne 0x168ac8a
cmp esi, dword [eax + 8]
je 0x168ac92
mov edx, eax
mov eax, dword [edx]
cmp eax, ecx
jne 0x168ac80
cmp dword [edx], ecx
je 0x168ace2
lea ecx, [esp + 0xd0]
push ecx
push esi
mov ecx, 0x180f5c4
mov dword [esp + 0xe0], 0x80000000
mov dword [esp + 0xd8], 0
call fcn.01287a70
mov ecx, eax
call fcn.01693de0
lea ecx, [esp + 0xd0]
call fcn.012a03b0
lea edx, [esp + 0x54]
push edx
lea ecx, [ebx + 0xc0]
call fcn.01637640
lea eax, [esp + 0x54]
push eax
lea ecx, [esp + 0xac]
push ecx
lea ecx, [ebx + 0xb8]
call fcn.01687270
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x18]
mov ecx, dword [edx + 4]
mov byte [esp + 0x23], 0
test eax, eax
je 0x168ad20
lea ecx, [ecx]
dec eax
cmp dword [ecx], edx
jne 0x168add5
add ecx, 4
test eax, eax
jne 0x168ad10
mov ecx, edx
mov eax, ecx
mov dword [esp + 0x54], eax
cmp ecx, edx
je 0x168ae07
mov ecx, dword [eax + 0xc]
mov edx, dword [ecx + 8]
mov edi, dword [ecx + 0xc]
sub edi, edx
mov dword [esp + 0x50], 0
test edi, edi
jle 0x168ade9
mov eax, dword [esp + 0xac]
lea edx, [ecx + edx*4 + 0x14]
mov dword [esp + 0x3c], edx
lea ebx, [ebx]
mov ecx, dword [edx]
mov edx, dword [ecx]
cmp edx, dword [esp + 0xa8]
jne 0x168adbb
mov esi, dword [ecx + 4]
mov ecx, dword [esi + 8]
cmp ecx, dword [eax + 8]
jne 0x168adbb
mov edx, dword [eax + 0xc]
mov esi, dword [esi + 0xc]
cmp ecx, 4
jb 0x168ad97
mov ebx, dword [esi]
cmp ebx, dword [edx]
jne 0x168adbb
sub ecx, 4
add edx, 4
add esi, 4
cmp ecx, 4
jae 0x168ad83
test ecx, ecx
je 0x168addc
mov bl, byte [edx]
cmp bl, byte [esi]
jne 0x168adbb
cmp ecx, 1
jbe 0x168addc
mov bl, byte [edx + 1]
cmp bl, byte [esi + 1]
jne 0x168adbb
cmp ecx, 2
jbe 0x168addc
mov cl, byte [edx + 2]
cmp cl, byte [esi + 2]
je 0x168addc
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x3c]
inc ecx
add edx, 4
mov dword [esp + 0x50], ecx
mov dword [esp + 0x3c], edx
cmp ecx, edi
jl 0x168ad60
jmp 0x168ade1
mov ecx, dword [ecx]
jmp 0x168ad22
mov byte [esp + 0x23], 1
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x54]
push eax
call fcn.0128b3d0
add esp, 4
mov dword [esp + 0x54], eax
cmp eax, dword [esp + 0x10]
jne 0x168ad30
cmp byte [esp + 0x23], 0
jne 0x168ae26
mov edx, dword [esp + 0xac]
mov eax, dword [edx + 0xc]
lea ecx, [esp + 0xb0]
push ecx
mov ecx, dword [esp + 0xac]
push eax
call fcn.0126f570
lea ecx, [esp + 0xb0]
call fcn.012a03b0
mov edx, dword [esp + 0xac]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x168ae52
mov ecx, dword [esp + 0xac]
push ecx
call fcn.01285a10
add esp, 4
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x4c]
mov edx, dword [eax + 0xc]
sub edx, dword [eax + 8]
inc ecx
mov dword [esp + 0x4c], ecx
cmp ecx, edx
jl 0x168abf4
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x168ae83
mov edx, dword [esp + 0x6c]
push edx
call fcn.01285a10
add esp, 4
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
mov ecx, dword [esp + 0x2c]
mov edx, dword [eax + 0xc]
sub edx, dword [eax + 8]
inc ecx
mov dword [esp + 0x2c], ecx
cmp ecx, edx
jl 0x168abb0
mov dword [esp + 0x38], 0x184c268
mov eax, 0x184c268
mov ecx, 1
lock xadd dword [eax], ecx
cmp byte [ebx + 0xb0], 0
je 0x168b00b
mov edx, dword [ebp + 8]
mov eax, dword [edx]
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
xor ebx, ebx
test ecx, ecx
jle 0x168aff7
mov edx, dword [eax + 8]
add edx, ebx
mov esi, dword [eax + edx*4 + 0x14]
lea eax, [esp + 0x7c]
push eax
mov ecx, esi
call fcn.0169c870
push eax
lea ecx, [esp + 0x3c]
call fcn.01686a50
mov ecx, dword [esp + 0x7c]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x168af10
mov eax, dword [esp + 0x7c]
push eax
call fcn.01285a10
add esp, 4
mov ecx, esi
call fcn.0169c4b0
lea ecx, [esp + 0xa0]
push ecx
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x74]
push edx
add ecx, 0xc8
mov dword [esp + 0xa8], eax
call fcn.01686b20
push eax
lea ecx, [esp + 0x3c]
call fcn.01686a50
mov eax, dword [esp + 0x70]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x168af5e
mov edx, dword [esp + 0x70]
push edx
call fcn.01285a10
add esp, 4
lea eax, [esp + 0x68]
push eax
mov ecx, esi
call fcn.0169c7e0
mov eax, dword [esp + 0x68]
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
xor esi, esi
test ecx, ecx
jle 0x168afcd
mov edi, dword [esp + 0x18]
mov edi, edi
mov edx, dword [eax + 8]
add edx, esi
lea eax, [eax + edx*4 + 0x14]
push eax
lea ecx, [esp + 0x7c]
push ecx
lea ecx, [edi + 0xcc]
call fcn.01686b20
push eax
lea ecx, [esp + 0x3c]
call fcn.01686a50
mov edx, dword [esp + 0x78]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x168afbe
mov ecx, dword [esp + 0x78]
push ecx
call fcn.01285a10
add esp, 4
mov eax, dword [esp + 0x68]
mov edx, dword [eax + 0xc]
sub edx, dword [eax + 8]
inc esi
cmp esi, edx
jl 0x168af80
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x168afe3
mov edx, dword [esp + 0x68]
push edx
call fcn.01285a10
add esp, 4
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
inc ebx
cmp ebx, ecx
jl 0x168aed7
mov edx, dword [esp + 0x18]
add edx, 0xc4
push edx
lea ecx, [esp + 0x3c]
call fcn.01686a50
mov edx, dword [esp + 0x38]
mov ecx, dword [edx + 0xc]
sub ecx, dword [edx + 8]
xor eax, eax
mov dword [esp + 0x58], eax
test ecx, ecx
jle 0x168b712
mov ecx, dword [edx + 8]
add ecx, eax
mov edi, dword [edx + ecx*4 + 0x14]
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 8]
mov dword [esp + 0x2c], edi
cmp eax, 1
je 0x168b07b
mov ecx, dword [esp + 0x10]
push 4
push 0x10
push 0x1686ca0
push 0x16876d0
call fcn.0128b690
mov esi, eax
mov eax, dword [esp + 0x10]
add eax, 8
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x168b073
mov ecx, dword [esp + 0x10]
push 0x1686ca0
call fcn.0128b360
mov edx, esi
mov dword [esp + 0x10], edx
jmp 0x168b07f
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x18]
mov ecx, dword [edx + 4]
test eax, eax
je 0x168b0a0
lea esp, [esp]
dec eax
cmp dword [ecx], edx
jne 0x168b452
add ecx, 4
test eax, eax
jne 0x168b090
mov ecx, edx
mov esi, ecx
mov edx, dword [edx + 8]
mov dword [esp + 0x28], esi
cmp edx, 1
je 0x168b0eb
mov ecx, dword [esp + 0x10]
push 4
push 0x10
push 0x1686ca0
push 0x16876d0
call fcn.0128b690
mov ebx, eax
mov eax, dword [esp + 0x10]
add eax, 8
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x168b0e7
mov ecx, dword [esp + 0x10]
push 0x1686ca0
call fcn.0128b360
mov dword [esp + 0x10], ebx
cmp esi, dword [esp + 0x10]
je 0x168b5d2
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
mov edx, dword [esi + 8]
lea edi, [esi + 0xc]
mov dword [esp + 0x64], edx
cmp eax, 1
je 0x168b164
mov eax, dword [edi]
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
push ecx
mov ecx, edi
lea ebx, [eax + edx*4 + 0x14]
call fcn.012a9390
mov esi, eax
mov eax, dword [edi]
mov ecx, dword [eax + 0xc]
lea edx, [eax + ecx*4 + 0x14]
mov ecx, dword [eax + 8]
push ebx
push edx
lea edx, [eax + ecx*4 + 0x14]
push edx
mov ecx, edi
call fcn.01685cf0
mov eax, esi
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x168b164
mov edx, dword [esi + 0xc]
mov ecx, dword [esi + 8]
lea eax, [esi + edx*4 + 0x14]
lea edx, [esi + ecx*4 + 0x14]
push eax
push edx
mov ecx, edi
call fcn.01685bc0
push esi
call fcn.01285a10
add esp, 4
mov edi, dword [edi]
mov eax, dword [edi + 8]
lea ecx, [edi + eax*4 + 0x14]
mov dword [esp + 0x1c], ecx
mov ebx, dword [esp + 0x28]
mov eax, dword [ebx + 0xc]
mov edx, dword [eax]
add ebx, 0xc
cmp edx, 1
je 0x168b1dd
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
push ecx
mov ecx, ebx
lea edi, [eax + edx*4 + 0x14]
call fcn.012a9390
mov esi, eax
mov eax, dword [ebx]
mov ecx, dword [eax + 0xc]
lea edx, [eax + ecx*4 + 0x14]
mov ecx, dword [eax + 8]
push edi
push edx
lea edx, [eax + ecx*4 + 0x14]
push edx
mov ecx, ebx
call fcn.01685cf0
mov eax, esi
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x168b1dd
mov edx, dword [esi + 0xc]
mov ecx, dword [esi + 8]
lea eax, [esi + edx*4 + 0x14]
lea edx, [esi + ecx*4 + 0x14]
push eax
push edx
mov ecx, ebx
call fcn.01685bc0
push esi
call fcn.01285a10
add esp, 4
mov eax, dword [ebx]
mov ecx, dword [eax + 0xc]
lea edx, [eax + ecx*4 + 0x14]
cmp dword [esp + 0x1c], edx
je 0x168b587
mov eax, 0x184c268
mov dword [esp + 0x30], eax
mov ecx, eax
mov edx, 1
lock xadd dword [ecx], edx
mov dword [esp + 0x34], eax
mov ecx, 1
lock xadd dword [eax], ecx
mov edx, dword [esp + 0x1c]
mov eax, dword [edx]
mov ecx, dword [esp + 0x2c]
push eax
push ecx
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0x90]
push edx
call fcn.01688420
mov edi, eax
mov esi, dword [edi]
cmp dword [esp + 0x30], esi
je 0x168b2c3
mov eax, esi
mov ecx, 1
lock xadd dword [eax], ecx
mov edx, dword [esp + 0x30]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x168b261
mov ecx, dword [esp + 0x30]
push ecx
call fcn.01285a10
add esp, 4
mov dword [esp + 0x30], esi
test byte [esi + 0x10], 1
jne 0x168b2c3
mov eax, dword [esi + 4]
mov edx, dword [esi + 8]
push eax
lea ecx, [esp + 0x34]
lea esi, [esi + edx*4 + 0x14]
call fcn.012a9390
mov ebx, eax
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 8]
lea ecx, [eax + ecx*4 + 0x14]
lea eax, [eax + edx*4 + 0x14]
cmp esi, eax
je 0x168b2af
sub ecx, eax
sar ecx, 2
test ecx, ecx
jle 0x168b2af
add ecx, ecx
add ecx, ecx
push ecx
push esi
push eax
call fcn.016665c0
add esp, 0xc
mov edx, ebx
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x168b2c3
push ebx
call fcn.01285a10
add esp, 4
mov esi, dword [edi + 4]
cmp dword [esp + 0x34], esi
je 0x168b357
mov ecx, esi
mov edx, 1
lock xadd dword [ecx], edx
mov eax, dword [esp + 0x34]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x168b2f5
mov edx, dword [esp + 0x34]
push edx
call fcn.01285a10
add esp, 4
mov dword [esp + 0x34], esi
test byte [esi + 0x10], 1
jne 0x168b357
mov ecx, dword [esi + 8]
mov eax, dword [esi + 4]
lea esi, [esi + ecx*4 + 0x14]
push eax
lea ecx, [esp + 0x38]
call fcn.012a9390
mov ebx, eax
mov eax, dword [esp + 0x34]
mov edx, dword [eax + 0xc]
lea ecx, [eax + edx*4 + 0x14]
mov edx, dword [eax + 8]
lea eax, [eax + edx*4 + 0x14]
cmp esi, eax
je 0x168b343
sub ecx, eax
sar ecx, 2
test ecx, ecx
jle 0x168b343
add ecx, ecx
add ecx, ecx
push ecx
push esi
push eax
call fcn.016665c0
add esp, 0xc
mov edx, ebx
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x168b357
push ebx
call fcn.01285a10
add esp, 4
mov ecx, dword [esp + 0x8c]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x168b377
mov eax, dword [esp + 0x8c]
push eax
call fcn.01285a10
add esp, 4
mov ecx, dword [esp + 0x88]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x168b397
mov eax, dword [esp + 0x88]
push eax
call fcn.01285a10
add esp, 4
mov eax, dword [esp + 0x30]
mov dword [esp + 0x48], eax
mov ecx, 1
lock xadd dword [eax], ecx
mov ecx, dword [esp + 0x48]
test byte [ecx + 0x10], 1
jne 0x168b3c3
mov edx, dword [ecx + 4]
push edx
lea ecx, [esp + 0x4c]
call fcn.013bf770
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx + 0xc]
mov eax, dword [ecx + 8]
cmp edx, eax
je 0x168b4e0
sub edx, eax
xor esi, esi
test edx, edx
jle 0x168b496
mov ebx, dword [esp + 0x18]
add eax, esi
mov eax, dword [ecx + eax*4 + 0x14]
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
mov dword [esp + 0x40], eax
push edx
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0xf4]
push ecx
lea ecx, [ebx + 0xb8]
call fcn.01687470
lea edx, [esp + 0x64]
push edx
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0xf0]
push ecx
lea ecx, [ebx + 0xbc]
call 0x12d5b40
lea edx, [esp + 0x64]
mov ecx, ebx
push edx
add ecx, 0xb4
call fcn.016894e0
mov ecx, eax
mov eax, dword [ecx]
mov eax, dword [eax]
cmp eax, 1
je 0x168b459
push 1
push 0x7fffffff
call fcn.01432cb0
jmp 0x168b45e
mov ecx, dword [ecx]
jmp 0x168b0a2
call fcn.012a8e60
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x40]
push 0x80
push 0x180f0c8
push edx
push 0x181517c
push ecx
mov dword [eax], ecx
call fcn.01271310
mov ecx, dword [esp + 0x5c]
mov eax, dword [ecx + 8]
mov edx, dword [ecx + 0xc]
inc esi
sub edx, eax
add esp, 0x14
cmp esi, edx
jl 0x168b3e1
mov edi, dword [esp + 0x1c]
mov esi, dword [edi]
test esi, esi
je 0x168b4c9
lea ecx, [esi + 8]
call fcn.012a03b0
mov eax, dword [esi + 4]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x168b4c0
mov edx, dword [esi + 4]
push edx
call fcn.01285a10
add esp, 4
push esi
call fcn.016664d6
add esp, 4
mov ecx, dword [esp + 0x28]
push edi
add ecx, 0xc
call fcn.012a92c0
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x1c], eax
jmp 0x168b4e5
add dword [esp + 0x1c], 4
mov eax, dword [esp + 0x34]
mov edx, dword [eax + 8]
mov edi, dword [eax + 0xc]
sub edi, edx
xor esi, esi
test edi, edi
jle 0x168b534
mov edi, dword [esp + 0x18]
jmp 0x168b500
lea ecx, [esp + 0x23]
push ecx
add edx, esi
lea eax, [eax + edx*4 + 0x14]
push eax
lea ecx, [esp + 0xe8]
push ecx
lea ecx, [edi + 0xc0]
call fcn.015b77e0
mov eax, dword [esp + 0x34]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 0xc]
inc esi
sub ecx, edx
cmp esi, ecx
jl 0x168b500
mov ecx, dword [esp + 0x48]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x168b54a
mov eax, dword [esp + 0x48]
push eax
call fcn.01285a10
add esp, 4
mov ecx, dword [esp + 0x34]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x168b564
mov eax, dword [esp + 0x34]
push eax
call fcn.01285a10
add esp, 4
mov ecx, dword [esp + 0x30]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x168b171
mov eax, dword [esp + 0x30]
push eax
call fcn.01285a10
add esp, 4
jmp 0x168b171
mov ebx, eax
mov ecx, dword [ebx + 0xc]
cmp ecx, dword [ebx + 8]
jne 0x168b5b6
mov edx, dword [esp + 0x28]
push edx
lea eax, [esp + 0xd0]
push eax
lea ecx, [esp + 0x18]
call fcn.01688810
mov esi, dword [eax]
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x2c]
jmp 0x168b0a4
mov ecx, dword [esp + 0x28]
push ecx
call fcn.0128b3d0
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x30]
add esp, 4
mov esi, eax
jmp 0x168b0a4
mov dword [esp + 0x3c], 0x184c074
mov edx, 0x184c074
mov eax, 1
lock xadd dword [edx], eax
mov dword [esp + 0x44], 0x184c268
mov ecx, 0x184c268
mov edx, 1
lock xadd dword [ecx], edx
lea eax, [esp + 0x44]
push eax
push 0x180f5c4
push 0
lea ecx, [esp + 0x48]
push ecx
push edi
call 0x126e940
mov edx, dword [esp + 0x50]
add esp, 0x14
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x168b632
mov ecx, dword [esp + 0x3c]
push ecx
call fcn.01273020
add esp, 4
push edi
mov ecx, 0x180f5c4
call fcn.01287a70
mov esi, eax
test esi, esi
je 0x168b667
mov edx, dword [esp + 0x44]
mov eax, dword [edx]
lea ecx, [esp + 0x44]
cmp eax, 1
je 0x168b660
push 1
push 0x7fffffff
call fcn.01432cb0
jmp 0x168b665
call fcn.012a8e60
mov dword [eax], esi
mov eax, dword [esp + 0x44]
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
xor esi, esi
test ecx, ecx
jle 0x168b6e1
jmp 0x168b680
mov ecx, dword [eax + 8]
lea edx, [esp + 0x100]
add ecx, esi
mov ecx, dword [eax + ecx*4 + 0x14]
push edx
call fcn.01693330
test dword [eax + 8], 0x3fffffff
lea ecx, [esp + 0x100]
setne bl
call fcn.012a03b0
test bl, bl
jne 0x168b6c1
mov eax, dword [esp + 0x44]
mov edx, dword [eax + 0xc]
sub edx, dword [eax + 8]
inc esi
cmp esi, edx
jl 0x168b680
jmp 0x168b6e1
mov ecx, edi
call fcn.015805a0
cmp eax, 2
jne 0x168b6d4
mov ecx, edi
call fcn.01694270
push 0
mov ecx, edi
call fcn.016950a0
mov eax, dword [esp + 0x44]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x168b6f7
mov edx, dword [esp + 0x44]
push edx
call fcn.01285a10
add esp, 4
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x58]
mov ecx, dword [edx + 0xc]
sub ecx, dword [edx + 8]
inc eax
mov dword [esp + 0x58], eax
cmp eax, ecx
jl 0x168b023
mov esi, dword [esp + 0x10]
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 4]
test eax, eax
je 0x168b730
dec eax
cmp dword [ecx], esi
jne 0x168b87f
add ecx, 4
test eax, eax
jne 0x168b720
mov ecx, esi
mov edi, ecx
cmp ecx, esi
je 0x168b78e
jmp 0x168b740
mov eax, dword [edi + 0xc]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
sub edx, ecx
xor esi, esi
test edx, edx
jle 0x168b779
add ecx, esi
mov eax, dword [eax + ecx*4 + 0x14]
mov edx, dword [eax + 4]
lea ecx, [eax + 8]
push ecx
mov ecx, dword [edx + 0xc]
push ecx
mov ecx, dword [eax]
call fcn.0126f570
mov eax, dword [edi + 0xc]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
inc esi
sub edx, ecx
cmp esi, edx
jl 0x168b751
push edi
call fcn.0128b3d0
mov edi, eax
add esp, 4
cmp edi, dword [esp + 0x10]
jne 0x168b740
mov edx, dword [esp + 0x38]
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
mov ecx, dword [eax + 8]
mov esi, dword [eax + 0xc]
sub esi, ecx
xor ebx, ebx
test esi, esi
jle 0x168b824
add ecx, ebx
mov esi, dword [eax + ecx*4 + 0x14]
test esi, esi
je 0x168b80e
push esi
call fcn.0169baa0
mov ecx, dword [eax + 0x4c]
and ecx, 0x7fffffff
add esp, 4
cmp ecx, 1
jne 0x168b80e
mov edx, dword [esp + 0x18]
mov ecx, dword [edx + 0xb4]
mov edi, dword [ecx + 0x18]
add edx, 0xb4
test edi, edi
je 0x168b802
xor edx, edx
mov eax, esi
div edi
mov eax, dword [ecx + 4]
lea edx, [eax + edx*4]
mov eax, dword [edx]
cmp eax, ecx
je 0x168b802
nop
cmp esi, dword [eax + 4]
jne 0x168b7fa
cmp esi, dword [eax + 8]
je 0x168b802
mov edx, eax
mov eax, dword [edx]
cmp eax, ecx
jne 0x168b7f0
cmp dword [edx], ecx
jne 0x168b80e
mov ecx, dword [esi + 4]
call fcn.0169bb40
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
inc ebx
sub edx, ecx
cmp ebx, edx
jl 0x168b7a5
mov edx, dword [esp + 0x38]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x168b83a
mov ecx, dword [esp + 0x38]
push ecx
call fcn.01285a10
add esp, 4
mov eax, dword [esp + 0x24]
add eax, 8
or edx, 0xffffffff
lock xadd dword [eax], edx
jne 0x168b858
mov ecx, dword [esp + 0x24]
push 0x1686140
call fcn.0128b360
mov eax, dword [esp + 0x10]
add eax, 8
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x168b876
mov ecx, dword [esp + 0x10]
push 0x1686ca0
call fcn.0128b360
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov ecx, dword [ecx]
jmp 0x168b732