Function at 0x40b669
Capabilities:
Create thread
Set environment variable

Disassembly:
push ecx
push ebp
xor ebp, ebp
push esi
mov dword [0x41a29c], ebp
call fcn.00409ef3
push 0x41a284
mov dword [0x41a2ac], ebp
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push dword [0x417030]
mov dword [0x417838], 9
call fcn.00406055
push dword [0x417030]
call fcn.004062d8
pop ecx
pop ecx
mov dword [0x41a2a8], eax
xor ecx, ecx
jmp 0x40b6bf
mov edx, dword [eax + 4]
mov word [edx + 0x1a], cx
mov eax, dword [eax]
inc ecx
cmp eax, ebp
jne 0x40b6b5
mov ecx, dword [0x41a2a8]
push ebx
xor ebx, ebx
xor esi, esi
push edi
inc ebx
jmp 0x40b709
mov eax, dword [ecx + 4]
mov eax, dword [eax + 0x14]
xor edx, edx
imul eax, eax, 0xc
mov eax, dword [eax + 0x4148a0]
jmp 0x40b6fc
inc dword [0x41a2a4]
mov edi, dword [eax]
imul edi, edi, 0x24
test byte [edi + 0x41795c], bl
je 0x40b6f9
inc edx
add eax, 4
cmp dword [eax], 0xa
jne 0x40b6e5
cmp edx, esi
jle 0x40b707
mov esi, edx
mov ecx, dword [ecx]
cmp ecx, ebp
jne 0x40b6d2
push dword [0x41a2a4]
push 0x415a28
call fcn.0040a23c
cmp dword [0x41aad4], ebp
pop ecx
pop ecx
je 0x40b737
cmp dword [0x41702c], ebp
je 0x40b737
cmp esi, ebx
jle 0x40b737
mov eax, ebx
jmp 0x40b739
xor eax, eax
mov ecx, dword [0x417030]
mov dword [0x41a2b8], eax
neg eax
sbb eax, eax
and eax, dword [0x41a2a8]
mov dword [ecx + 0x10], eax
cmp dword [0x41a2b8], ebp
mov dword [0x41a2a0], 0x40ab21
jne 0x40b76d
mov dword [0x41a2a0], 0x40a657
push 0x400
push 0x41a2c0
push ebp
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push eax
call fcn.0040a2a1
mov dword [esp], str.bananana
push str.MPCL_SERVER_373011
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
cmp dword [0x41a2b8], ebp
je 0x40b7b2
or dword [0x417be4], 0xffffffff
call fcn.0040acba
cmp dword [0x41a2b8], ebp
jne 0x40b7b7
call fcn.0040ac6b
mov eax, dword [0x417bdc]
shl eax, 2
push eax
call fcn.00408299
cmp dword [0x417bdc], ebx
pop ecx
mov esi, eax
mov edi, ebx
jle 0x40b7f2
lea eax, [esp + 0x10]
push eax
push ebp
push edi
push fcn.0040b4e5
push ebp
push ebp
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov dword [esi + edi*4], eax
inc edi
cmp edi, dword [0x417bdc]
jl 0x40b7d2
push ebp
call fcn.0040b4e5
mov ecx, dword fs:[0x2c]
mov eax, dword [0x41ab64]
mov eax, dword [ecx + eax*4]
or dword [eax + 4], 0xffffffff
push 0xffffffffffffffff
push ebx
lea eax, [esi + 4]
push eax
mov eax, dword [0x417bdc]
dec eax
push eax
call dword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
cmp dword [0x417bdc], ebx
mov edi, ebx
jle 0x40b83e
push dword [esi + edi*4]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
inc edi
cmp edi, dword [0x417bdc]
jl 0x40b82c
push esi
call fcn.004082af
cmp dword [0x41a2b8], ebp
pop ecx
je 0x40b852
call fcn.0040ae42
mov esi, dword [0x41a2a8]
xor ecx, ecx
mov dword [0x419130], ecx
mov eax, esi
jmp 0x40b873
cmp ecx, ebp
jne 0x40b877
mov ecx, dword [eax + 0x2c]
mov dword [0x419130], ecx
mov eax, dword [eax]
cmp eax, ebp
jne 0x40b864
cmp dword [0x41a2ac], ebx
pop edi
pop ebx
jne 0x40b88b
push 0x1f68
call fcn.00408a41
cmp ecx, ebp
jne 0x40b8c5
jmp 0x40b8b5
cmp dword [esi + 0x28], ebp
je 0x40b8b3
mov eax, dword [esi + 0x30]
cmp eax, ebp
je 0x40b8b3
push 4
push eax
call fcn.00401648
pop ecx
pop ecx
mov ecx, dword [esi + 4]
mov ecx, dword [ecx]
mov dword [eax], ecx
mov ecx, dword [esi + 4]
mov dword [ecx], eax
mov esi, dword [esi]
cmp esi, ebp
jne 0x40b891
push dword [0x417030]
call fcn.00407a6d
pop ecx
call fcn.00409f8b
mov esi, dword [0x41a2a8]
jmp 0x40b8e2
mov eax, dword [esi + 0x30]
cmp eax, ebp
je 0x40b8e0
push eax
call fcn.004082af
pop ecx
mov esi, dword [esi]
cmp esi, ebp
jne 0x40b8d2
push 0x41a284
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
pop esi
pop ebp
pop ecx
ret