Function at 0x10041520
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x264
mov eax, dword [0x100bb300]
xor eax, esp
mov dword [esp + 0x260], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0xc]
push edi
call fcn.10041ac0
test eax, eax
je 0x10041912
mov eax, dword [0x100c7a60]
mov esi, dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov edi, dword [sym.imp.KERNEL32.DLL_GetModuleHandleW]
xor ebx, ebx
cmp eax, ebx
jne 0x1004159c
push 0x100a6b44
call edi
cmp eax, ebx
jne 0x1004157b
lea eax, [ebx - 3]
jmp 0x100415a0
push 0x100a9e44
push eax
call esi
mov ecx, eax
mov dword [0x100c7a60], ecx
cmp ecx, ebx
jne 0x10041596
mov eax, 0xfffffffd
jmp 0x100415a6
push 0xfffffffffffffffd
call ecx
jmp 0x100415a0
push 0xfffffffffffffffd
call eax
mov ecx, dword [0x100c7a60]
mov dword [esp + 0x38], eax
cmp ecx, ebx
jne 0x100415db
push 0x100a6b44
call edi
cmp eax, ebx
jne 0x100415c0
mov eax, 0xfffffffd
jmp 0x100415df
push 0x100a9e44
push eax
call esi
mov ecx, eax
mov dword [0x100c7a60], ecx
cmp ecx, ebx
jne 0x100415db
mov eax, 0xfffffffd
jmp 0x100415e5
push 0xfffffffffffffffd
call ecx
mov ecx, dword [0x100c7a60]
mov dword [esp + 0x3c], eax
cmp ecx, ebx
jne 0x1004161a
push 0x100a6b44
call edi
cmp eax, ebx
jne 0x100415ff
mov eax, 0xfffffffd
jmp 0x1004161e
push 0x100a9e44
push eax
call esi
mov ecx, eax
mov dword [0x100c7a60], ecx
cmp ecx, ebx
jne 0x1004161a
mov eax, 0xfffffffd
jmp 0x10041624
push 0xfffffffffffffffd
call ecx
mov ecx, dword [0x100c7a60]
mov dword [esp + 0x40], eax
cmp ecx, ebx
jne 0x10041659
push 0x100a6b44
call edi
cmp eax, ebx
jne 0x1004163e
mov eax, 0xfffffffd
jmp 0x1004165d
push 0x100a9e44
push eax
call esi
mov ecx, eax
mov dword [0x100c7a60], ecx
cmp ecx, ebx
jne 0x10041659
mov eax, 0xfffffffd
jmp 0x10041663
push 0xfffffffffffffffd
call ecx
mov ecx, dword [0x100c7a60]
mov dword [esp + 0x44], eax
cmp ecx, ebx
jne 0x10041698
push 0x100a6b44
call edi
cmp eax, ebx
jne 0x1004167d
mov eax, 0xfffffffd
jmp 0x1004169c
push 0x100a9e44
push eax
call esi
mov ecx, eax
mov dword [0x100c7a60], ecx
cmp ecx, ebx
jne 0x10041698
mov eax, 0xfffffffd
jmp 0x100416a2
push 0xfffffffffffffffd
call ecx
mov ecx, dword [0x100c7a60]
mov dword [esp + 0x48], eax
cmp ecx, ebx
jne 0x100416d7
push 0x100a6b44
call edi
cmp eax, ebx
jne 0x100416bc
mov eax, 0xfffffffd
jmp 0x100416db
push 0x100a9e44
push eax
call esi
mov ecx, eax
mov dword [0x100c7a60], ecx
cmp ecx, ebx
jne 0x100416d7
mov eax, 0xfffffffd
jmp 0x100416e1
push 0xfffffffffffffffd
call ecx
mov ecx, dword [0x100c7a60]
mov dword [esp + 0x4c], eax
cmp ecx, ebx
jne 0x10041716
push 0x100a6b44
call edi
cmp eax, ebx
jne 0x100416fb
mov eax, 0xfffffffc
jmp 0x1004171a
push 0x100a9e44
push eax
call esi
mov ecx, eax
mov dword [0x100c7a60], ecx
cmp ecx, ebx
jne 0x10041716
mov eax, 0xfffffffc
jmp 0x10041720
push 0xfffffffffffffffc
call ecx
mov ecx, dword [0x100c7a60]
mov dword [esp + 0x50], eax
cmp ecx, ebx
jne 0x10041755
push 0x100a6b44
call edi
cmp eax, ebx
jne 0x1004173a
mov eax, 0xfffffffc
jmp 0x10041759
push 0x100a9e44
push eax
call esi
mov ecx, eax
mov dword [0x100c7a60], ecx
cmp ecx, ebx
jne 0x10041755
mov eax, 0xfffffffc
jmp 0x1004175f
push 0xfffffffffffffffc
call ecx
mov ecx, dword [0x100c7a60]
mov dword [esp + 0x54], eax
cmp ecx, ebx
jne 0x10041794
push 0x100a6b44
call edi
cmp eax, ebx
jne 0x10041779
mov eax, 0xfffffffc
jmp 0x10041798
push 0x100a9e44
push eax
call esi
mov ecx, eax
mov dword [0x100c7a60], ecx
cmp ecx, ebx
jne 0x10041794
mov eax, 0xfffffffc
jmp 0x1004179e
push 0xfffffffffffffffc
call ecx
mov ecx, dword [0x100c7a60]
mov dword [esp + 0x58], eax
cmp ecx, ebx
jne 0x100417d9
push 0x100a6b44
call edi
cmp eax, ebx
jne 0x100417b8
mov eax, 0xfffffffc
jmp 0x100417dd
push 0x100a9e44
push eax
call esi
mov edx, eax
mov dword [0x100c7a60], edx
cmp edx, ebx
jne 0x100417d3
mov eax, 0xfffffffc
jmp 0x100417e3
push 0xfffffffffffffffc
call edx
jmp 0x100417dd
push 0xfffffffffffffffc
call ecx
mov edx, dword [0x100c7a60]
xor ecx, ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], 1
mov dword [esp + 0x2c], ebx
cmp edx, ebx
jne 0x10041844
push 0x100a6b44
call edi
cmp eax, ebx
jne 0x10041823
mov eax, 0x70
jmp 0x10041848
push 0x100a9e44
push eax
call esi
mov ecx, eax
mov dword [0x100c7a60], ecx
cmp ecx, ebx
jne 0x1004183e
mov eax, 0x70
jmp 0x1004184e
push 0x70
call ecx
jmp 0x10041848
push 0x70
call edx
mov ecx, dword [0x100c7a60]
mov dword [esp + 0x18], eax
cmp ecx, ebx
jne 0x10041886
push 0x100a6b44
call edi
cmp eax, ebx
jne 0x10041868
mov eax, 0x4e
jmp 0x1004188a
push 0x100a9e44
push eax
call esi
mov dword [0x100c7a60], eax
cmp eax, ebx
jne 0x10041880
mov eax, 0x4e
jmp 0x1004188a
push 0x4e
call eax
jmp 0x1004188a
push 0x4e
call ecx
lea ecx, [esp + 0x38]
push 0x100c5a78
push 0x64
mov dword [esp + 0x24], eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], 0xa
call fcn.10085206
add esp, 8
cmp eax, ebx
je 0x100418cd
mov edx, dword [esp + 0x10]
push 1
add edx, 0x88
push edx
lea esi, [esp + 0x20]
call fcn.10055e40
mov dword [esp + 0x14], eax
jmp 0x100418d1
mov dword [esp + 0x14], ebx
mov edi, dword [esp + 0x10]
add edi, 0xe0
lea ebx, [esp + 0x14]
call fcn.10055610
mov edi, dword [esp + 0x10]
lea eax, [edi + 0x34]
lea esi, [edi + 0xd4]
call fcn.10055160
mov edi, dword [edi + 0x188]
test edi, edi
je 0x10041a98
mov eax, dword [edi]
mov ecx, dword [eax]
push 0x10
push edi
call ecx
jmp 0x10041a98
lea esi, [esp + 0x30]
call fcn.100437a0
xor edi, edi
cmp dword [esp + 0x30], edi
jne 0x10041965
mov esi, dword [esp + 0x34]
cmp esi, edi
je 0x10041a98
lea edx, [esi + 8]
or eax, 0xffffffff
lock xadd dword [edx], eax
jne 0x10041a98
mov edx, dword [esi]
mov eax, dword [edx]
mov ecx, esi
call eax
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x10041a98
mov eax, dword [esi]
mov edx, dword [eax + 4]
mov ecx, esi
call edx
jmp 0x10041a98
mov eax, dword [esp + 0x10]
mov ebx, dword [0x100bc66c]
mov esi, dword [eax + 0x188]
mov dword [esp + 0x14], ebx
mov dword [eax + 0x198], edi
cmp esi, edi
je 0x100419c9
push 0x206
lea ecx, [esp + 0x66]
xor eax, eax
push edi
push ecx
mov word [esp + 0x6c], ax
call fcn.10087b80
mov edx, dword [esi]
mov ecx, dword [edx + 0xc]
add esp, 0xc
push 0x104
lea eax, [esp + 0x64]
push eax
push esi
call ecx
lea edx, [esp + 0x60]
push edx
push 0x100ac34c
lea ecx, [esp + 0x1c]
call fcn.10001df0
mov ebx, dword [esp + 0x1c]
add esp, 8
test byte [0x100c7b40], 1
jne 0x100419ec
or dword [0x100c7b40], 1
push 0x100a34b0
mov dword [0x100c7b3c], edi
call fcn.1008416d
add esp, 4
push 0x100a7638
push 0x100c7b3c
mov edx, 0x100a7638
mov ecx, ebx
mov eax, 0x100a99b8
call fcn.10006000
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x198], 0xffffffff
je 0x10041a46
mov esi, 0x10044d40
call fcn.1003e950
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], ecx
xor edi, edi
push edi
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], 0x100ad01c
mov dword [esp + 0x24], esi
mov edx, dword [eax]
mov edx, dword [edx + 0x1c]
push ecx
push eax
call edx
lea eax, [ebx - 0xc]
cmp eax, 0x100bc65c
je 0x10041a67
add ebx, 0xfffffff4
push ebx
call dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
test eax, eax
jg 0x10041a67
push ebx
call fcn.1008441c
add esp, 4
mov esi, dword [esp + 0x34]
cmp esi, edi
je 0x10041a98
lea ecx, [esi + 8]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x10041a98
mov eax, dword [esi]
mov edx, dword [eax]
mov ecx, esi
call edx
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x10041a98
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, esi
call eax
mov ecx, dword [esp + 0x26c]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.10083dbb
mov esp, ebp
pop ebp
ret 8