Function at 0x10021b10
Capabilities:
Link many functions at runtime

Disassembly:
sub esp, 0x68
push ebx
push ebp
mov ebp, dword [esp + 0x74]
push esi
mov esi, dword [ebp + 0xa0]
push edi
xor edi, edi
cmp esi, edi
je 0x10021b88
mov eax, dword [esi]
mov ecx, dword [eax + 4]
push esi
call ecx
mov edx, dword [esi]
mov ecx, dword [edx + 0x108]
lea eax, [esp + 0x7c]
push eax
push 1
push 0x3fe
push esi
mov dword [esp + 0x8c], edi
call ecx
mov edx, dword [esi]
mov eax, dword [edx + 8]
mov ebx, dword [esp + 0x7c]
push esi
call eax
push ecx
mov eax, esp
mov dword [esp + 0x1c], edi
mov dword [eax], ebx
cmp ebx, edi
je 0x10021b6e
mov ecx, dword [ebx]
mov edx, dword [ecx + 4]
push ebx
call edx
lea esi, [esp + 0x1c]
call fcn.1000a080
cmp eax, edi
jge 0x10021b8c
cmp eax, 0x80004002
je 0x10021b8c
push eax
call fcn.100830f0
xor ebx, ebx
jmp 0x10021b59
cmp ebx, edi
je 0x10021b98
mov eax, dword [ebx]
mov ecx, dword [eax + 8]
push ebx
call ecx
mov ebx, dword [esp + 0x18]
cmp ebx, edi
je 0x10022b51
mov esi, dword [ebp + 0x108]
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], edi
cmp dword [esi - 0xc], edi
jl 0x10021bd2
lea edx, [esi - 0xc]
push edx
mov dword [esp + 0x80], esi
call dword [sym.imp.KERNEL32.DLL_InterlockedIncrement]
jmp 0x10021bec
mov eax, dword [0x100bc66c]
mov dword [esp + 0x7c], eax
push esi
lea eax, [esp + 0x80]
call fcn.100035a0
mov esi, dword [esp + 0x7c]
mov eax, dword [esi - 8]
cmp eax, 5
mov edi, dword [sym.imp.USER32.DLL_CopyRect]
jl 0x10021df2
mov ecx, dword [0x100bc66c]
mov dword [esp + 0x14], ecx
push esi
push 0x100a97e8
lea ecx, [esp + 0x1c]
call fcn.10001df0
mov edx, dword [ebx]
mov ecx, dword [edx + 0x40]
add esp, 8
lea eax, [esp + 0x58]
push eax
push ebx
call ecx
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x3c]
push eax
call edi
mov eax, dword [0x100c7a30]
test eax, eax
jne 0x10021c6e
push 0x100a6b44
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
test eax, eax
jne 0x10021c52
mov eax, 0x64
jmp 0x10021c72
push 0x100a9e44
push eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov dword [0x100c7a30], eax
test eax, eax
jne 0x10021c6e
mov eax, 0x64
jmp 0x10021c72
push 0x64
call eax
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x38]
add ecx, eax
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esp + 0x4c]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x54]
lea edx, [esp + 0x24]
push edx
push ecx
mov dword [eax + 0xc], ecx
mov eax, esp
mov dword [eax], ebx
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
push ebx
call ecx
call fcn.100261f0
mov edx, dword [ebx]
mov ecx, dword [edx + 0x40]
add esp, 0x18
lea eax, [esp + 0x58]
push eax
push ebx
call ecx
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x2c]
push eax
call edi
mov eax, dword [ebp + 0xa0]
push 0x3ee
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x10021ce7
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
lea esi, [esp + 0x28]
call fcn.10028fb0
mov eax, dword [eax]
add esp, 4
mov ecx, esp
mov dword [esp + 0x20], 0
mov dword [ecx], eax
test eax, eax
je 0x10021d0d
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
lea esi, [esp + 0x20]
call fcn.1001a1d0
test eax, eax
jge 0x10021d27
cmp eax, 0x80004002
je 0x10021d27
push eax
call fcn.100830f0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x10021d37
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov esi, dword [esp + 0x1c]
test esi, esi
jne 0x10021d49
push 0x80004003
call fcn.100830f0
mov eax, dword [esi]
mov edx, dword [eax + 0x40]
lea ecx, [esp + 0x58]
push ecx
push esi
call edx
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0x4c]
push ecx
call edi
mov edi, dword [esp + 0x30]
mov eax, dword [0x100c7a30]
sub edi, dword [esp + 0x28]
test eax, eax
jne 0x10021da5
push 0x100a6b44
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
test eax, eax
jne 0x10021d89
mov eax, 0x20
jmp 0x10021da9
push 0x100a9e44
push eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov dword [0x100c7a30], eax
test eax, eax
jne 0x10021da5
mov eax, 0x20
jmp 0x10021da9
push 0x20
call eax
mov edx, dword [esp + 0x50]
sub edx, eax
sub edx, edi
push 1
mov dword [esp + 0x4c], edx
mov eax, dword [esi]
mov edx, dword [eax + 0x44]
lea ecx, [esp + 0x4c]
push ecx
push esi
call edx
mov eax, dword [esi]
mov ecx, dword [eax + 8]
push esi
call ecx
mov eax, dword [esp + 0x14]
lea edx, [eax - 0xc]
cmp edx, 0x100bc65c
je 0x10021df2
lea esi, [eax - 0xc]
push esi
call dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
test eax, eax
jg 0x10021df2
push esi
call fcn.1008441c
add esp, 4
lea edi, [ebp + 0xf0]
lea eax, [esp + 0x7c]
call fcn.10003840
mov eax, dword [esp + 0x7c]
cmp dword [eax - 8], 5
jle 0x1002210f
mov ecx, dword [0x100bc66c]
push eax
mov dword [esp + 0x18], ecx
push 0x100a97e8
lea ecx, [esp + 0x1c]
call fcn.10001df0
mov edx, dword [ebx]
mov ecx, dword [edx + 0x40]
add esp, 8
lea eax, [esp + 0x58]
push eax
push ebx
call ecx
mov esi, dword [sym.imp.USER32.DLL_CopyRect]
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x3c]
push eax
call esi
mov eax, dword [0x100c7a30]
test eax, eax
jne 0x10021e85
push 0x100a6b44
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
test eax, eax
jne 0x10021e69
mov eax, 0xc8
jmp 0x10021e8c
push 0x100a9e44
push eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov dword [0x100c7a30], eax
test eax, eax
jne 0x10021e85
mov eax, 0xc8
jmp 0x10021e8c
push 0xc8
call eax
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x38]
add ecx, eax
sub esp, 0x10
mov eax, esp
mov dword [eax], edx
mov edx, dword [esp + 0x4c]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x54]
lea edx, [esp + 0x24]
push edx
push ecx
mov dword [eax + 0xc], ecx
mov eax, esp
mov dword [eax], ebx
mov eax, dword [ebx]
mov ecx, dword [eax + 4]
push ebx
call ecx
call fcn.100261f0
mov edx, dword [ebx]
mov ecx, dword [edx + 0x40]
add esp, 0x18
lea eax, [esp + 0x58]
push eax
push ebx
call ecx
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x2c]
push eax
call esi
mov eax, dword [0x100c7a30]
test eax, eax
jne 0x10021f20
push 0x100a6b44
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
test eax, eax
jne 0x10021f04
mov eax, 0x10
jmp 0x10021f24
push 0x100a9e44
push eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov dword [0x100c7a30], eax
test eax, eax
jne 0x10021f20
mov eax, 0x10
jmp 0x10021f24
push 0x10
call eax
push 0
push eax
lea ecx, [esp + 0x30]
push ecx
call dword [sym.imp.USER32.DLL_InflateRect]
mov eax, dword [ebp + 0xa0]
push 0x3ee
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x10021f4e
mov edx, dword [eax]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x28]
call fcn.10028fb0
mov eax, dword [eax]
add esp, 4
mov ecx, esp
mov dword [esp + 0x20], 0
mov dword [ecx], eax
test eax, eax
je 0x10021f74
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
lea esi, [esp + 0x20]
call fcn.1001a1d0
test eax, eax
jge 0x10021f8e
cmp eax, 0x80004002
je 0x10021f8e
push eax
call fcn.100830f0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x10021f9e
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov edi, dword [esp + 0x1c]
test edi, edi
jne 0x10021fb0
push 0x80004003
call fcn.100830f0
mov eax, dword [edi]
mov edx, dword [eax + 0x40]
lea ecx, [esp + 0x58]
push ecx
push edi
call edx
mov ebx, dword [sym.imp.USER32.DLL_CopyRect]
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0x6c]
push ecx
call ebx
mov eax, dword [ebp + 0xa0]
push 0x3ed
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x10021feb
mov edx, dword [eax]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x28]
call fcn.10028fb0
mov eax, dword [eax]
add esp, 4
mov ecx, esp
mov dword [esp + 0x20], 0
mov dword [ecx], eax
test eax, eax
je 0x10022011
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
lea esi, [esp + 0x20]
call fcn.1001a1d0
test eax, eax
jge 0x1002202b
cmp eax, 0x80004002
je 0x1002202b
push eax
call fcn.100830f0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x1002203b
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov esi, dword [esp + 0x1c]
test esi, esi
jne 0x1002204d
push 0x80004003
call fcn.100830f0
mov eax, dword [esi]
mov edx, dword [eax + 0x40]
lea ecx, [esp + 0x58]
push ecx
push esi
call edx
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0x4c]
push ecx
call ebx
mov eax, dword [0x100c7a30]
test eax, eax
jne 0x100220a1
push 0x100a6b44
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
test eax, eax
jne 0x10022085
mov eax, 0x10
jmp 0x100220a5
push 0x100a9e44
push eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov dword [0x100c7a30], eax
test eax, eax
jne 0x100220a1
mov eax, 0x10
jmp 0x100220a5
push 0x10
call eax
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x68]
sub edx, dword [esp + 0x30]
sub ecx, eax
add edx, ecx
mov dword [esp + 0x50], ecx
push 1
mov dword [esp + 0x4c], edx
mov eax, dword [esi]
mov edx, dword [eax + 0x44]
lea ecx, [esp + 0x4c]
push ecx
push esi
call edx
mov eax, dword [esi]
mov ecx, dword [eax + 8]
push esi
call ecx
mov edx, dword [edi]
mov eax, dword [edx + 8]
push edi
call eax
mov eax, dword [esp + 0x14]
lea ecx, [eax - 0xc]
cmp ecx, 0x100bc65c
je 0x100222b9
lea esi, [eax - 0xc]
push esi
call dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
test eax, eax
jg 0x100222b9
push esi
call fcn.1008441c
add esp, 4
jmp 0x100222b9
mov eax, dword [ebp + 0xa0]
push 0x3ee
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x1002212b
mov edx, dword [eax]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x28]
call fcn.10028fb0
mov eax, dword [eax]
add esp, 4
mov ecx, esp
mov dword [esp + 0x20], 0
mov dword [ecx], eax
test eax, eax
je 0x10022151
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
lea esi, [esp + 0x20]
call fcn.1001a1d0
test eax, eax
jge 0x1002216b
cmp eax, 0x80004002
je 0x1002216b
push eax
call fcn.100830f0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x1002217b
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov ebx, dword [esp + 0x1c]
test ebx, ebx
jne 0x1002218d
push 0x80004003
call fcn.100830f0
mov eax, dword [ebx]
mov edx, dword [eax + 0x40]
lea ecx, [esp + 0x68]
push ecx
push ebx
call edx
mov edi, dword [sym.imp.USER32.DLL_CopyRect]
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0x5c]
push ecx
call edi
mov eax, dword [ebp + 0xa0]
push 0x3ed
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x100221c8
mov edx, dword [eax]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x28]
call fcn.10028fb0
mov eax, dword [eax]
add esp, 4
mov ecx, esp
mov dword [esp + 0x20], 0
mov dword [ecx], eax
test eax, eax
je 0x100221ee
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
lea esi, [esp + 0x20]
call fcn.1001a1d0
test eax, eax
jge 0x10022208
cmp eax, 0x80004002
je 0x10022208
push eax
call fcn.100830f0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x10022218
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov esi, dword [esp + 0x1c]
test esi, esi
jne 0x1002222a
push 0x80004003
call fcn.100830f0
mov eax, dword [esi]
mov edx, dword [eax + 0x40]
lea ecx, [esp + 0x68]
push ecx
push esi
call edx
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0x3c]
push ecx
call edi
mov edi, dword [esp + 0x40]
mov eax, dword [0x100c7a30]
sub edi, dword [esp + 0x38]
test eax, eax
jne 0x10022286
push 0x100a6b44
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
test eax, eax
jne 0x1002226a
mov eax, 0x10
jmp 0x1002228a
push 0x100a9e44
push eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov dword [0x100c7a30], eax
test eax, eax
jne 0x10022286
mov eax, 0x10
jmp 0x1002228a
push 0x10
call eax
mov ecx, dword [esp + 0x58]
sub ecx, eax
mov dword [esp + 0x40], ecx
sub ecx, edi
push 1
mov dword [esp + 0x3c], ecx
mov edx, dword [esi]
mov ecx, dword [edx + 0x44]
lea eax, [esp + 0x3c]
push eax
push esi
call ecx
mov edx, dword [esi]
mov eax, dword [edx + 8]
push esi
call eax
mov ecx, dword [ebx]
mov edx, dword [ecx + 8]
push ebx
call edx
mov eax, dword [ebp + 0xd8]
xor ecx, ecx
cmp dword [eax - 8], ecx
lea edi, [ebp + 0xd8]
sete cl
xor edx, edx
mov eax, ecx
test eax, eax
mov eax, dword [ebp + 0xa0]
sete dl
push edx
push 0x3ef
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x100222f3
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
call fcn.10026f40
mov eax, dword [edi]
add esp, 0xc
push eax
mov eax, dword [ebp + 0xa0]
push 0x3ef
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x1002231a
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
call fcn.10027830
add esp, 0xc
lea eax, [esp + 0x7c]
call fcn.10003840
mov eax, dword [esp + 0x7c]
cmp dword [eax - 8], 0
je 0x100224e5
mov eax, dword [ebp + 0xa0]
push 0x3ee
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x10022355
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
lea esi, [esp + 0x28]
call fcn.10028fb0
mov eax, dword [eax]
add esp, 4
mov ecx, esp
mov dword [esp + 0x20], 0
mov dword [ecx], eax
test eax, eax
je 0x1002237b
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
lea esi, [esp + 0x20]
call fcn.1001a1d0
test eax, eax
jge 0x10022395
cmp eax, 0x80004002
je 0x10022395
push eax
call fcn.100830f0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x100223a5
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov ebx, dword [esp + 0x1c]
test ebx, ebx
jne 0x100223b7
push 0x80004003
call fcn.100830f0
mov eax, dword [ebx]
mov edx, dword [eax + 0x40]
lea ecx, [esp + 0x68]
push ecx
push ebx
call edx
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0x5c]
push ecx
call dword [sym.imp.USER32.DLL_CopyRect]
mov eax, dword [ebp + 0xa0]
push 0x3ef
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x100223f0
mov edx, dword [eax]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x28]
call fcn.10028fb0
mov eax, dword [eax]
add esp, 4
mov ecx, esp
mov dword [esp + 0x20], 0
mov dword [ecx], eax
test eax, eax
je 0x10022416
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
lea esi, [esp + 0x20]
call fcn.1000a080
test eax, eax
jge 0x10022430
cmp eax, 0x80004002
je 0x10022430
push eax
call fcn.100830f0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x10022440
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov esi, dword [esp + 0x1c]
test esi, esi
jne 0x10022452
push 0x80004003
call fcn.100830f0
mov eax, dword [esi]
mov edx, dword [eax + 0x40]
lea ecx, [esp + 0x68]
push ecx
push esi
call edx
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0x3c]
push ecx
call dword [sym.imp.USER32.DLL_CopyRect]
mov edi, dword [esp + 0x40]
mov eax, dword [0x100c7a30]
sub edi, dword [esp + 0x38]
test eax, eax
jne 0x100224b2
push 0x100a6b44
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
test eax, eax
jne 0x10022496
mov eax, 0x10
jmp 0x100224b6
push 0x100a9e44
push eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov dword [0x100c7a30], eax
test eax, eax
jne 0x100224b2
mov eax, 0x10
jmp 0x100224b6
push 0x10
call eax
mov ecx, dword [esp + 0x58]
sub ecx, eax
mov dword [esp + 0x40], ecx
sub ecx, edi
push 1
mov dword [esp + 0x3c], ecx
mov edx, dword [esi]
mov ecx, dword [edx + 0x44]
lea eax, [esp + 0x3c]
push eax
push esi
call ecx
mov edx, dword [esi]
mov eax, dword [edx + 8]
push esi
call eax
mov ecx, dword [ebx]
mov edx, dword [ecx + 8]
push ebx
call edx
mov ecx, dword [ebp + 0xd0]
mov esi, dword [ebp + 0xa8]
lea eax, [esp + 0x1c]
call fcn.10020ae0
mov eax, dword [eax]
mov edx, dword [esi]
push eax
mov eax, dword [edx + 0x14]
mov ecx, esi
call eax
mov ebx, eax
lea edi, [esp + 0x20]
call fcn.100036f0
mov eax, dword [esp + 0x1c]
lea ecx, [eax - 0xc]
cmp ecx, 0x100bc65c
je 0x1002253e
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
test eax, eax
jg 0x1002253e
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff4
push eax
call fcn.1008441c
add esp, 4
mov edx, dword [esp + 0x20]
mov eax, dword [ebp + 0xa0]
push edx
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x1002255a
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
call fcn.100260a0
mov eax, dword [ebp + 0xf8]
mov esi, dword [ebp + 0xa8]
mov ecx, dword [ebp + 0xfc]
add esp, 8
test eax, eax
je 0x10022588
mov ebx, 0x100a954c
test ecx, ecx
jne 0x10022596
mov ebx, 0x100a9578
jmp 0x10022596
mov ebx, 0x100a95a8
test ecx, ecx
jne 0x10022596
mov ebx, 0x100a95c8
lea edi, [esp + 0x1c]
call fcn.100036f0
mov eax, dword [esi]
mov edi, dword [esp + 0x1c]
mov edx, dword [eax + 0x10]
push edi
mov ecx, esi
call edx
mov esi, eax
lea eax, [edi - 0xc]
cmp eax, 0x100bc65c
je 0x100225d0
add edi, 0xfffffff4
push edi
call dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
test eax, eax
jg 0x100225d0
push edi
call fcn.1008441c
add esp, 4
mov eax, dword [ebp + 0xa0]
push esi
push 0x3ee
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x100225ed
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
call fcn.10025fd0
mov eax, dword [ebp + 0xe8]
add esp, 0xc
push eax
mov eax, dword [ebp + 0xa0]
push 0x3ed
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x10022618
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
call fcn.10026f40
mov eax, dword [ebp + 0xf0]
add esp, 0xc
push eax
mov eax, dword [ebp + 0xa0]
push 0x3ed
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x10022643
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
call fcn.10027830
mov eax, dword [ebp + 0x100]
add esp, 0xc
push eax
mov eax, dword [ebp + 0xa0]
push 0x3ee
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x1002266e
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
call fcn.10026f40
mov eax, dword [ebp + 0x108]
add esp, 0xc
push eax
mov eax, dword [ebp + 0xa0]
push 0x3ee
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x10022699
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
call fcn.10027830
mov esi, dword [ebp + 0xa8]
mov eax, dword [ebp + 0xe4]
add esp, 0xc
cmp dword [ebp + 0xe0], 0
je 0x100226c6
mov ebx, 0x100a954c
test eax, eax
jne 0x100226d4
mov ebx, 0x100a9578
jmp 0x100226d4
mov ebx, 0x100a95a8
test eax, eax
jne 0x100226d4
mov ebx, 0x100a95c8
lea edi, [esp + 0x1c]
call fcn.100036f0
mov eax, dword [esi]
mov edi, dword [esp + 0x1c]
mov edx, dword [eax + 0x10]
push edi
mov ecx, esi
call edx
mov esi, eax
lea eax, [edi - 0xc]
cmp eax, 0x100bc65c
je 0x1002270e
add edi, 0xfffffff4
push edi
call dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
test eax, eax
jg 0x1002270e
push edi
call fcn.1008441c
add esp, 4
mov eax, dword [ebp + 0xa0]
push esi
push 0x3ed
push ecx
xor esi, esi
mov ecx, esp
mov dword [ecx], eax
cmp eax, esi
je 0x1002272d
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
call fcn.10025fd0
mov eax, dword [ebp + 0x118]
add esp, 0xc
push eax
mov eax, dword [ebp + 0xa0]
push 0x3f0
push ecx
mov ecx, esp
mov dword [ecx], eax
cmp eax, esi
je 0x10022758
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
call fcn.10026f40
mov eax, dword [ebp + 0x120]
add esp, 0xc
push eax
mov eax, dword [ebp + 0xa0]
push 0x3f0
push ecx
mov ecx, esp
mov dword [ecx], eax
cmp eax, esi
je 0x10022783
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
call fcn.10027830
mov edi, dword [ebp + 0xa0]
add esp, 0xc
cmp edi, esi
je 0x100227f3
mov eax, dword [edi]
mov ecx, dword [eax + 4]
push edi
call ecx
mov edx, dword [edi]
mov ecx, dword [edx + 0x108]
lea eax, [esp + 0x1c]
push eax
push 1
push 0x3f1
push edi
mov dword [esp + 0x2c], esi
call ecx
mov edx, dword [edi]
mov eax, dword [edx + 8]
mov ebx, dword [esp + 0x1c]
push edi
call eax
push ecx
mov eax, esp
mov dword [esp + 0x20], esi
mov dword [eax], ebx
cmp ebx, esi
je 0x100227d9
mov ecx, dword [ebx]
mov edx, dword [ecx + 4]
push ebx
call edx
lea esi, [esp + 0x20]
call fcn.1000a080
test eax, eax
jge 0x100227f7
cmp eax, 0x80004002
je 0x100227f7
push eax
call fcn.100830f0
xor ebx, ebx
jmp 0x100227c4
test ebx, ebx
je 0x10022803
mov eax, dword [ebx]
mov ecx, dword [eax + 8]
push ebx
call ecx
mov ebx, dword [esp + 0x1c]
test ebx, ebx
je 0x100228a1
mov edx, dword [ebp + 0xdc]
xor eax, eax
cmp dword [edx - 8], eax
sete al
xor ecx, ecx
test eax, eax
sete cl
push ecx
mov esi, esp
push ecx
mov eax, esp
mov dword [esi], 0
mov dword [eax], ebx
mov edx, dword [ebx]
mov eax, dword [edx + 4]
push ebx
mov edi, ecx
call eax
call fcn.1003f720
test eax, eax
jge 0x10022852
cmp eax, 0x80004002
je 0x10022852
push eax
call fcn.100830f0
mov eax, edi
call fcn.10026ee0
mov edi, dword [ebp + 0xdc]
mov esi, esp
push ecx
mov eax, esp
mov dword [esi], 0
mov dword [eax], ebx
mov ecx, dword [ebx]
mov edx, dword [ecx + 4]
push ebx
call edx
call fcn.1003f720
test eax, eax
jge 0x1002288a
cmp eax, 0x80004002
je 0x1002288a
push eax
call fcn.100830f0
mov eax, edi
call fcn.100276c0
mov eax, dword [ebx]
mov ecx, dword [eax + 0xf0]
add esp, 4
push 1
push ebx
call ecx
test byte [ebp + 0xd0], 0xf
jne 0x10022a0f
mov eax, dword [ebp + 0xa0]
push 0x3ee
push ecx
xor edi, edi
mov ecx, esp
mov dword [ecx], eax
cmp eax, edi
je 0x100228cc
mov edx, dword [eax]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x1c]
call fcn.10028fb0
mov eax, dword [eax]
add esp, 4
mov ecx, esp
mov dword [esp + 0x20], edi
mov dword [ecx], eax
cmp eax, edi
je 0x100228ee
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
lea esi, [esp + 0x20]
call fcn.1001a1d0
cmp eax, edi
jge 0x10022908
cmp eax, 0x80004002
je 0x10022908
push eax
call fcn.100830f0
mov eax, dword [esp + 0x14]
cmp eax, edi
je 0x10022918
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [ebp + 0xa0]
push 0x3ed
push ecx
mov ecx, esp
mov dword [ecx], eax
cmp eax, edi
je 0x10022934
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
lea esi, [esp + 0x2c]
call fcn.10028fb0
mov eax, dword [eax]
add esp, 4
mov ecx, esp
mov dword [esp + 0x18], edi
mov dword [ecx], eax
cmp eax, edi
je 0x10022956
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
lea esi, [esp + 0x18]
call fcn.1001a1d0
cmp eax, edi
jge 0x10022970
cmp eax, 0x80004002
je 0x10022970
push eax
call fcn.100830f0
mov eax, dword [esp + 0x24]
cmp eax, edi
je 0x10022980
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov edi, dword [esp + 0x1c]
test edi, edi
jne 0x10022992
push 0x80004003
call fcn.100830f0
mov eax, dword [edi]
mov edx, dword [eax + 0x40]
lea ecx, [esp + 0x68]
push ecx
push edi
call edx
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0x5c]
push ecx
call dword [sym.imp.USER32.DLL_CopyRect]
mov esi, dword [esp + 0x14]
test esi, esi
jne 0x100229c1
push 0x80004003
call fcn.100830f0
mov edx, dword [esi]
mov ecx, dword [edx + 0x40]
lea eax, [esp + 0x68]
push eax
push esi
call ecx
lea edx, [esp + 0x68]
push edx
lea eax, [esp + 0x3c]
push eax
call dword [sym.imp.USER32.DLL_CopyRect]
mov eax, dword [esp + 0x58]
mov ecx, eax
sub ecx, dword [esp + 0x38]
mov dword [esp + 0x38], eax
add dword [esp + 0x40], ecx
mov edx, dword [esi]
mov ecx, dword [edx + 0x44]
push 1
lea eax, [esp + 0x3c]
push eax
push esi
call ecx
mov edx, dword [esi]
mov eax, dword [edx + 8]
push esi
call eax
mov ecx, dword [edi]
mov edx, dword [ecx + 8]
push edi
call edx
cmp dword [ebp + 0xc0], 0
je 0x10022ae3
mov eax, dword [ebp + 0xf4]
push eax
mov eax, dword [ebp + 0xa0]
push 0x3ed
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x10022a3f
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
mov eax, dword [ebp + 0xc0]
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x10022a56
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
call fcn.10025f30
mov eax, dword [ebp + 0x10c]
add esp, 0x10
push eax
mov eax, dword [ebp + 0xa0]
push 0x3ee
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x10022a81
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
mov eax, dword [ebp + 0xc0]
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x10022a98
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
call fcn.10025f30
mov eax, dword [ebp + 0x124]
add esp, 0x10
push eax
mov eax, dword [ebp + 0xa0]
push 0x3f0
push ecx
mov ecx, esp
mov dword [ecx], eax
test eax, eax
je 0x10022ac3
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push eax
call edx
mov ebp, dword [ebp + 0xc0]
push ecx
mov eax, esp
mov dword [eax], ebp
test ebp, ebp
je 0x10022adb
mov eax, dword [ebp]
mov ecx, dword [eax + 4]
push ebp
call ecx
call fcn.10025f30
add esp, 0x10
test ebx, ebx
je 0x10022aef
mov edx, dword [ebx]
mov eax, dword [edx + 8]
push ebx
call eax
mov eax, dword [esp + 0x20]
lea ecx, [eax - 0xc]
cmp ecx, 0x100bc65c
je 0x10022b15
lea esi, [eax - 0xc]
push esi
call dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
test eax, eax
jg 0x10022b15
push esi
call fcn.1008441c
add esp, 4
mov eax, dword [esp + 0x7c]
lea edx, [eax - 0xc]
cmp edx, 0x100bc65c
je 0x10022b3b
lea esi, [eax - 0xc]
push esi
call dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
test eax, eax
jg 0x10022b3b
push esi
call fcn.1008441c
add esp, 4
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
mov dword [esp + 4], eax
mov edx, dword [ecx + 8]
jmp edx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret 4