Function at 0x414200
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
push ebx
push esi
push edi
mov edi, ecx
lea eax, [edi + 4]
test eax, eax
je 0x4144c8
mov eax, dword [ebp + 8]
cmp dword [edi + eax*4 + 4], 0
je 0x4144c8
mov eax, dword [edi]
xor esi, esi
add eax, 0x38
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [edi]
mov eax, dword [eax + 0xc8]
inc eax
lea ebx, [eax + eax*2]
shl ebx, 2
push ebx
call fcn.0041f021
add esp, 4
mov dword [ebp - 8], eax
test eax, eax
jne 0x41425f
mov eax, 0x8007000e
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push ebx
push 0
push eax
call fcn.00417b90
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov edx, eax
lea eax, [edx + 2]
mov cx, word [edx]
add edx, 2
test cx, cx
jne 0x414276
mov ecx, dword [edi + 0x24]
sub edx, eax
sar edx, 1
lea ebx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x414290
sub ecx, ebx
sar ecx, 1
lea ebx, [ecx + 0x2e]
add ebx, edx
lea eax, [ebx + ebx]
push eax
call fcn.0041f021
add esp, 4
mov dword [ebp - 0xc], eax
test eax, eax
je 0x414346
mov edx, dword [edi]
mov eax, 0x44514c
mov esi, dword [edi + 0x24]
mov ecx, 0x451c64
cmp byte [edx + 0x77d], 0
cmove ecx, eax
cmp byte [edx + 0x77e], 0
push ecx
mov ecx, 0x44514c
mov eax, 0x451c9c
cmove eax, ecx
cmp word [esi], 0
push eax
mov eax, 0x448630
push esi
cmove eax, ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov esi, dword [ebp - 0xc]
push eax
push 0x451cd0
push ebx
push esi
call fcn.004013f0
mov ebx, dword [ebp - 8]
mov ecx, esi
add esp, 0x20
mov dword [ebx + 8], esi
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x414320
sub ecx, edx
mov dword [ebx], 0xb
sar ecx, 1
mov esi, 1
lea eax, [ecx*2 + 2]
mov dword [ebx + 4], eax
jmp 0x414349
mov ebx, dword [ebp - 8]
mov edx, dword [edi]
cmp dword [edx + 0xc8], 0
jbe 0x4143c4
mov ecx, dword [edx + 0xc4]
mov eax, dword [ecx]
cmp eax, ecx
je 0x4143c4
lea ecx, [esi + esi*2]
lea ebx, [ebx + ecx*4]
mov ecx, 0xb40c0000
add ebx, 4
sub ecx, esi
mov dword [ebp - 0x14], ecx
cmp dword [eax + 0x1c], 8
lea ecx, [eax + 8]
mov edx, ecx
jb 0x414380
mov edx, dword [ecx]
mov dword [ebx + 4], edx
cmp dword [ecx + 0x14], 8
jb 0x41438b
mov ecx, dword [ecx]
lea edx, [ecx + 2]
mov dword [ebp - 0x10], edx
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x414391
sub ecx, dword [ebp - 0x10]
sar ecx, 1
lea ecx, [ecx*2 + 2]
mov dword [ebx], ecx
mov ecx, dword [ebp - 0x14]
add ecx, esi
inc esi
mov dword [ebx - 4], ecx
add ebx, 0xc
mov edx, dword [edi]
mov ecx, dword [eax]
mov eax, ecx
cmp ecx, dword [edx + 0xc4]
jne 0x414373
mov eax, dword [ebp - 8]
mov dword [ebp - 0x20], eax
lea eax, [edx + 0x38]
push eax
mov dword [ebp - 0x24], esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x1c], 0x4149b0
mov dword [ebp - 0x18], edi
cmp ebx, 3
jne 0x41442d
push 0x10
call fcn.00416174
mov edx, eax
add esp, 4
mov dword [ebp + 8], edx
mov dword [edx], 0
mov dword [edx + 4], 0
mov dword [edx + 8], 0
mov dword [edx + 0xc], 0
mov ecx, dword [edi]
mov dword [edi + 0x74], edx
movzx eax, byte [ecx + 0x77d]
mov dword [edx + 0xc], eax
mov eax, dword [edi + 0x74]
mov dword [edi + 0x58], eax
lea eax, [ebx - 2]
jmp switch.0x00414435
lea eax, [ebx - 2]
cmp eax, 4
ja case.0x414435.2
jmp dword [eax*4 + 0x4144d8]
mov al, 1
jmp 0x414442
xor al, al
mov byte [edi + 0x71], al
mov eax, dword [edi]
cmp byte [eax + 0x77e], 0
je 0x41446c
xor ecx, ecx
lea eax, [ebp - 0x1c]
push eax
test esi, esi
lea eax, [ebp - 0x24]
cmove eax, ecx
mov ecx, edi
push eax
push dword [edi + 0x44]
push ebx
call fcn.00414560
jmp 0x4144a0
mov ecx, dword [edi + 0x44]
xor edx, edx
cmp byte [eax + 0x77d], dl
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x24]
je 0x414491
test esi, esi
cmove eax, edx
push eax
push ecx
push ebx
mov ecx, edi
call fcn.004145d0
jmp 0x4144a0
test esi, esi
cmove eax, edx
push eax
push ecx
push ebx
mov ecx, edi
call fcn.004144f0
mov esi, eax
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4144b2
push eax
call fcn.0041f006
add esp, 4
push dword [ebp - 8]
call fcn.0041f006
add esp, 4
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
pop edi
pop esi
mov eax, 0x57
pop ebx
mov esp, ebp
pop ebp
ret 4