Function at 0x1003ad00
Capabilities:
Link many functions at runtime

Disassembly:
sub esp, 0x2c
push ebx
mov ebx, dword [esp + 0x34]
mov eax, dword [ebx]
push ebp
push esi
push edi
test eax, eax
jne 0x1003ad1b
push 0x80004003
call fcn.100830f0
mov edx, dword [esp + 0x44]
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0xc0]
call eax
mov eax, dword [ebx]
test eax, eax
jne 0x1003ad3b
push 0x80004003
call fcn.100830f0
mov ecx, dword [eax]
lea edx, [esp + 0x28]
push edx
push eax
mov eax, dword [ecx + 0x40]
call eax
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x1c]
push edx
call dword [sym.imp.USER32.DLL_CopyRect]
cmp dword [esp + 0x48], 0
mov esi, dword [esp + 0x18]
jbe 0x1003af17
mov eax, 0x100a7ca8
lea edi, [esp + 0x14]
call fcn.1003e030
mov edi, dword [esp + 0x14]
test edi, edi
je 0x1003af17
mov eax, dword [ebx]
test eax, eax
jne 0x1003ad91
push 0x80004003
call fcn.100830f0
mov ecx, dword [eax]
mov edx, dword [ecx + 0xf4]
push edi
push eax
call edx
mov eax, dword [0x100c7a60]
test eax, eax
jne 0x1003addf
push 0x100a6b44
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
test eax, eax
jne 0x1003adbc
mov eax, 0x3c
jmp 0x1003ade3
push 0x100a9e44
push eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov ecx, eax
mov dword [0x100c7a60], ecx
test ecx, ecx
jne 0x1003add9
lea eax, [ecx + 0x3c]
jmp 0x1003ade9
push 0x3c
call ecx
jmp 0x1003ade3
push 0x3c
call eax
mov ecx, dword [0x100c7a60]
lea ebp, [eax + esi]
mov esi, dword [esp + 0x24]
sub esi, dword [esp + 0x1c]
test ecx, ecx
jne 0x1003ae29
push 0x100a6b44
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
test eax, eax
jne 0x1003ae0c
lea edx, [eax + 0xf]
jmp 0x1003ae2f
push 0x100a9e44
push eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov ecx, eax
mov dword [0x100c7a60], ecx
test ecx, ecx
jne 0x1003ae29
lea edx, [eax + 0xf]
jmp 0x1003ae35
push 0xf
call ecx
mov edx, eax
mov ecx, dword [0x100c7a60]
mov eax, esi
sub eax, edx
cdq
sub eax, edx
mov esi, eax
sar esi, 1
add esi, dword [esp + 0x1c]
test ecx, ecx
jne 0x1003ae7c
push 0x100a6b44
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
test eax, eax
jne 0x1003ae5c
lea ebx, [eax + 0xf]
jmp 0x1003ae82
push 0x100a9e44
push eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov dword [0x100c7a60], eax
test eax, eax
jne 0x1003ae76
lea ebx, [eax + 0xf]
jmp 0x1003ae8b
push 0xf
call eax
jmp 0x1003ae80
push 0xf
call ecx
mov ebx, eax
mov eax, dword [0x100c7a60]
test eax, eax
jne 0x1003aebd
push 0x100a6b44
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
test eax, eax
jne 0x1003aea1
mov eax, 0xf
jmp 0x1003aec1
push 0x100a9e44
push eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov dword [0x100c7a60], eax
test eax, eax
jne 0x1003aebd
mov eax, 0xf
jmp 0x1003aec1
push 0xf
call eax
add eax, ebp
push 1
add ebx, esi
lea ecx, [esp + 0x2c]
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], ebx
mov eax, dword [edi]
mov edx, dword [eax + 0x44]
push ecx
push edi
call edx
mov ecx, dword [esp + 0x48]
mov eax, dword [edi]
mov edx, dword [eax + 0x108]
push ecx
push edi
call edx
mov eax, dword [edi]
mov ecx, dword [eax + 0x28]
push 0xfa4
push edi
call ecx
mov esi, dword [esp + 0x30]
sub esi, dword [esp + 0x28]
mov edx, dword [edi]
mov eax, dword [edx + 8]
push edi
add esi, ebp
call eax
mov ebx, dword [esp + 0x40]
mov eax, 0x100a7ca8
lea edi, [esp + 0x48]
call fcn.1003df80
mov ebp, dword [esp + 0x48]
test ebp, ebp
je 0x1003b12e
mov eax, dword [ebx]
test eax, eax
jne 0x1003af41
push 0x80004003
call fcn.100830f0
mov ecx, dword [eax]
mov edx, dword [ecx + 0xf4]
push ebp
push eax
call edx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x34], eax
mov eax, dword [0x100c7a60]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], edx
test eax, eax
jne 0x1003afb3
mov ebx, dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
push 0x100a6b44
call ebx
mov edi, dword [sym.imp.KERNEL32.DLL_GetProcAddress]
test eax, eax
jne 0x1003af94
mov eax, 4
jmp 0x1003afc3
push 0x100a9e44
push eax
call edi
mov ecx, eax
mov dword [0x100c7a60], ecx
test ecx, ecx
jne 0x1003afad
lea eax, [ecx + 4]
jmp 0x1003afc9
push 4
call ecx
jmp 0x1003afc3
push 4
call eax
mov ebx, dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
mov edi, dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov ecx, dword [0x100c7a60]
add eax, esi
mov esi, dword [esp + 0x24]
sub esi, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
test ecx, ecx
jne 0x1003b004
push 0x100a6b44
call ebx
test eax, eax
jne 0x1003afeb
lea edx, [eax + 0x1e]
jmp 0x1003b00a
push 0x100a9e44
push eax
call edi
mov ecx, eax
mov dword [0x100c7a60], ecx
test ecx, ecx
jne 0x1003b004
lea edx, [eax + 0x1e]
jmp 0x1003b010
push 0x1e
call ecx
mov edx, eax
mov ecx, dword [0x100c7a60]
mov eax, esi
sub eax, edx
cdq
sub eax, edx
sar eax, 1
add eax, dword [esp + 0x1c]
mov dword [esp + 0x2c], eax
test ecx, ecx
jne 0x1003b050
push 0x100a6b44
call ebx
test eax, eax
jne 0x1003b037
mov eax, 0x1e
jmp 0x1003b054
push 0x100a9e44
push eax
call edi
mov ecx, eax
mov dword [0x100c7a60], ecx
test ecx, ecx
jne 0x1003b050
lea eax, [ecx + 0x1e]
jmp 0x1003b05a
push 0x1e
call ecx
mov ecx, dword [0x100c7a60]
mov edx, dword [esp + 0x2c]
add eax, edx
mov dword [esp + 0x34], eax
test ecx, ecx
jne 0x1003b098
push 0x100a6b44
call ebx
test eax, eax
jne 0x1003b07a
mov eax, 0x7d
jmp 0x1003b09c
push 0x100a9e44
push eax
call edi
mov dword [0x100c7a60], eax
test eax, eax
jne 0x1003b092
mov eax, 0x7d
jmp 0x1003b09c
push 0x7d
call eax
jmp 0x1003b09c
push 0x7d
call ecx
sub dword [esp + 0x30], eax
push 0x333333
lea eax, [esp + 0x4c]
push 9
push eax
call fcn.1003e3f0
mov esi, dword [esp + 0x54]
mov ecx, dword [ebp]
mov edx, dword [ecx + 0x124]
add esp, 0xc
push esi
push ebp
call edx
test esi, esi
je 0x1003b0d1
mov eax, dword [esi]
mov ecx, dword [eax + 8]
push esi
call ecx
mov edx, dword [ebp]
mov ecx, dword [edx + 0x44]
push 1
lea eax, [esp + 0x2c]
push eax
push ebp
call ecx
mov edx, dword [ebp]
mov eax, dword [edx + 0x7c]
push 0xf
push ebp
call eax
mov ecx, dword [ebp]
mov edx, dword [ecx + 0x28]
push 0xfa0
push ebp
call edx
mov eax, dword [ebp]
mov ecx, dword [eax + 0x5c]
push 0
push 0x20
push ebp
call ecx
mov edx, dword [ebp]
mov eax, dword [edx + 0x68]
push 0
push 0x200
push ebp
call eax
mov edi, dword [esp + 0x4c]
push ecx
mov ebx, esp
call fcn.10005c40
mov ecx, ebp
call fcn.10027460
mov ebx, dword [esp + 0x40]
lea edi, [esp + 0x40]
call fcn.1003e1f0
mov esi, dword [esp + 0x40]
test esi, esi
je 0x1003b335
mov eax, dword [ebx]
test eax, eax
jne 0x1003b153
push 0x80004003
call fcn.100830f0
mov ecx, dword [eax]
mov edx, dword [ecx + 0xf4]
push esi
push eax
call edx
mov ecx, dword [esp + 0x5c]
mov eax, dword [esi]
mov edx, dword [eax + 0x28]
push ecx
push esi
call edx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x34], eax
mov eax, dword [0x100c7a60]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], edx
test eax, eax
jne 0x1003b1ce
push 0x100a6b44
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
test eax, eax
jne 0x1003b1ab
mov eax, 0x30
jmp 0x1003b1d2
push 0x100a9e44
push eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov ecx, eax
mov dword [0x100c7a60], ecx
test ecx, ecx
jne 0x1003b1c8
lea eax, [ecx + 0x30]
jmp 0x1003b1d8
push 0x30
call ecx
jmp 0x1003b1d2
push 0x30
call eax
mov ecx, dword [0x100c7a60]
sub dword [esp + 0x30], eax
test ecx, ecx
jne 0x1003b213
push 0x100a6b44
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
test eax, eax
jne 0x1003b1f6
mov eax, 0x46
jmp 0x1003b217
push 0x100a9e44
push eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov ecx, eax
mov dword [0x100c7a60], ecx
test ecx, ecx
jne 0x1003b213
lea eax, [ecx + 0x46]
jmp 0x1003b21d
push 0x46
call ecx
mov ecx, dword [0x100c7a60]
mov edx, dword [esp + 0x30]
mov edi, dword [esp + 0x24]
sub edi, dword [esp + 0x1c]
sub edx, eax
mov dword [esp + 0x28], edx
test ecx, ecx
jne 0x1003b264
push 0x100a6b44
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
test eax, eax
jne 0x1003b247
lea edx, [eax + 0x14]
jmp 0x1003b26a
push 0x100a9e44
push eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov ecx, eax
mov dword [0x100c7a60], ecx
test ecx, ecx
jne 0x1003b264
lea edx, [eax + 0x14]
jmp 0x1003b270
push 0x14
call ecx
mov edx, eax
mov ecx, dword [0x100c7a60]
mov eax, edi
sub eax, edx
cdq
sub eax, edx
sar eax, 1
add eax, dword [esp + 0x1c]
mov dword [esp + 0x2c], eax
test ecx, ecx
jne 0x1003b2bd
push 0x100a6b44
call dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
test eax, eax
jne 0x1003b29b
mov eax, 0x14
jmp 0x1003b2c1
push 0x100a9e44
push eax
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov dword [0x100c7a60], eax
test eax, eax
jne 0x1003b2b7
mov eax, 0x14
jmp 0x1003b2c1
push 0x14
call eax
jmp 0x1003b2c1
push 0x14
call ecx
mov ecx, dword [esp + 0x2c]
add eax, ecx
mov dword [esp + 0x34], eax
mov edx, dword [esi]
mov ecx, dword [edx + 0x44]
push 1
lea eax, [esp + 0x2c]
push eax
push esi
call ecx
mov edx, dword [esi]
mov eax, dword [edx + 0x7c]
push 4
push esi
call eax
mov edx, dword [esp + 0x50]
mov ecx, dword [esi]
mov eax, dword [ecx + 0x104]
push edx
push esi
call eax
mov edx, dword [esp + 0x44]
mov ecx, dword [esi]
mov eax, dword [ecx + 0xc0]
push edx
push esi
call eax
mov edi, dword [esp + 0x54]
push ecx
mov ebx, esp
call fcn.10005c40
mov ecx, esi
call fcn.10027460
mov ecx, dword [esp + 0x58]
mov eax, dword [ecx]
test eax, eax
je 0x1003b32d
mov edx, dword [esi]
push eax
mov eax, dword [edx + 0x110]
push esi
call eax
mov ecx, dword [esi]
mov edx, dword [ecx + 8]
push esi
call edx
test ebp, ebp
je 0x1003b342
mov eax, dword [ebp]
mov ecx, dword [eax + 8]
push ebp
call ecx
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x2c
ret 0x20