Function at 0x4342c0
Capabilities:
Create thread
Link many functions at runtime

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x3c
mov dword [esp], 0xc2c728
call sub.KERNEL32.dll_GetModuleHandleA
sub esp, 4
mov ebx, eax
mov dword [esp + 4], 0xc2c735
mov dword [esp], eax
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0xeea214], eax
mov dword [esp + 4], 0xc2c751
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0xeea218], eax
mov dword [esp + 4], 0xc2c76a
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0xeea210], eax
mov dword [esp + 4], 0xc2c780
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0xeea20c], eax
mov dword [esp + 4], 0xc2c799
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [esp + 4], 0xc2c7b1
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov eax, dword [esp + 0x50]
cmp dword [eax + 0x18], 1
je 0x4343f0
mov ebx, dword [eax + 0x1c]
mov dword [esp], 0x50
call fcn.00894240
mov dword [ebx], eax
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 0x1c]
mov edi, dword [eax]
test edi, edi
je 0x434637
mov edx, dword [esp + 0x50]
mov esi, dword [edx + 0x18]
test esi, esi
je 0x434403
cmp esi, 1
jle 0x434630
xor edx, edx
mov eax, 0x7fffffff
mov dword [edi + 4], esi
div esi
cmp eax, 0x10
ja 0x434412
mov dword [edi + 8], 0
mov esi, 0xfffffff4
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 0x1c]
mov dword [esp], eax
call fcn.00894200
mov eax, dword [esp + 0x50]
mov dword [eax + 0x14], 0
mov dword [eax + 0x18], 1
add esp, 0x3c
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [eax + 0x14], 0
xor esi, esi
add esp, 0x3c
pop ebx
mov eax, esi
pop esi
pop edi
pop ebp
ret
call fcn.008795b0
cmp eax, 1
jle 0x4343bf
lea esi, [eax + 1]
jmp 0x4343a2
mov eax, esi
shl eax, 4
mov dword [esp], eax
call fcn.00894240
test eax, eax
mov dword [edi + 8], eax
je 0x434655
lea eax, [edi + 0x28]
mov dword [edi + 0x44], 0
mov dword [edi + 0x20], 0
mov dword [edi + 0x4c], 0
xor ebp, ebp
call fcn.004340e0
lea eax, [edi + 0x24]
mov dword [esp + 0x28], eax
call fcn.004340e0
lea eax, [edi + 0x2c]
mov dword [esp], eax
mov ebx, eax
mov dword [esp + 0x2c], eax
call sub.KERNEL32.dll_InitializeCriticalSection
sub esp, 4
mov dword [esp], ebx
call sub.KERNEL32.dll_EnterCriticalSection
sub esp, 4
mov ebx, ebp
shl ebx, 4
add ebx, dword [edi + 8]
mov dword [ebx + 4], 0x4339d0
mov dword [ebx + 8], edi
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 0x4339a0
mov dword [esp + 4], 0
mov dword [esp], 0
call sub.msvcrt.dll__beginthreadex
test eax, eax
mov dword [ebx], eax
je 0x434600
add ebp, 1
cmp ebp, esi
jl 0x434474
mov ebx, dword [esp + 0x2c]
mov eax, dword [edi + 0x20]
add eax, dword [edi + 4]
cmp dword [edi + 0x44], eax
je 0x434502
mov eax, dword [0xeea20c]
test eax, eax
je 0x434540
mov ecx, dword [esp + 0x28]
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], ebx
mov dword [esp], ecx
call eax
mov eax, dword [edi + 0x20]
add eax, dword [edi + 4]
sub esp, 0xc
cmp dword [edi + 0x44], eax
jne 0x4344d6
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call sub.KERNEL32.dll_LeaveCriticalSection
mov esi, dword [edi + 4]
sub esp, 4
mov eax, dword [esp + 0x50]
cmp esi, 1
jle 0x434641
mov dword [eax + 0x18], esi
mov eax, dword [eax + 0x1c]
xor esi, esi
mov dword [eax + 4], 0x433c70
add esp, 0x3c
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, dword [edi + 0x24]
lea ebp, [esi + 0x18]
mov dword [esp], esi
call sub.KERNEL32.dll_EnterCriticalSection
sub esp, 4
mov dword [esp], ebp
call sub.KERNEL32.dll_EnterCriticalSection
mov eax, dword [esi + 0x30]
sub esp, 4
add eax, 1
mov dword [esi + 0x30], eax
mov dword [esp], ebp
call sub.KERNEL32.dll_LeaveCriticalSection
sub esp, 4
mov dword [esp], esi
call sub.KERNEL32.dll_LeaveCriticalSection
sub esp, 4
mov dword [esp], ebx
call sub.KERNEL32.dll_LeaveCriticalSection
sub esp, 4
mov dword [esp + 4], 0xffffffff
mov eax, dword [esi + 0x34]
mov dword [esp], eax
call sub.KERNEL32.dll_WaitForSingleObject
sub esp, 8
mov dword [esp], ebp
call sub.KERNEL32.dll_EnterCriticalSection
mov eax, dword [esi + 0x30]
sub esp, 4
sub eax, 1
mov dword [esi + 0x30], eax
mov eax, dword [esi + 0x30]
test eax, eax
je 0x4345e0
mov eax, dword [esi + 0x3c]
test eax, eax
je 0x4345e0
mov dword [esp], ebp
call sub.KERNEL32.dll_LeaveCriticalSection
sub esp, 4
mov dword [esp], ebx
call sub.KERNEL32.dll_EnterCriticalSection
sub esp, 4
jmp 0x4344cb
mov dword [esp], ebp
call sub.KERNEL32.dll_LeaveCriticalSection
mov eax, dword [esi + 0x38]
sub esp, 4
mov dword [esp], eax
call sub.KERNEL32.dll_SetEvent
sub esp, 4
jmp 0x4345c9
mov eax, dword [esp + 0x2c]
mov esi, 0xffffffff
mov dword [esp], eax
call sub.KERNEL32.dll_LeaveCriticalSection
mov eax, edi
sub esp, 4
mov dword [edi + 4], ebp
call fcn.00433ec0
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 0x1c]
jmp 0x4343c6
xor esi, esi
jmp 0x4343c6
mov esi, 0xfffffff4
jmp 0x4343e0
xor edx, edx
test esi, esi
mov eax, dword [eax + 0x1c]
setg dl
sub edx, 1
and esi, edx
jmp 0x4343c6
mov eax, dword [esp + 0x50]
mov esi, 0xfffffff4
mov eax, dword [eax + 0x1c]
jmp 0x4343c6