Function at 0x40c14b
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xc
push ebx
push ebp
push esi
push edi
call fcn.0040b656
mov edi, dword [sym.imp.KERNEL32.dll_CreateEventA]
cmp eax, 2
jae 0x40c17a
push str.Local6496
push 1
push 1
push 0
call edi
test eax, eax
je 0x40c17a
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
call fcn.0040b656
cmp eax, 2
jae 0x40c199
push 0
push 0
push 0
push 0
call edi
test eax, eax
je 0x40c199
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ebx, dword [sym.imp.USER32.dll_DialogBoxParamA]
mov ebp, dword [sym.imp.KERNEL32.dll_Sleep]
xor ecx, ecx
mov byte [esp + 0x13], cl
cmp byte [esp + 0x13], cl
je 0x40c1d6
mov esi, 0x238
push ecx
push ecx
push ecx
push ecx
push ecx
call ebx
push 0x238
call ebp
xor eax, eax
push eax
push eax
push eax
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0
pop ecx
dec esi
jne 0x40c1b6
call fcn.0040b656
cmp eax, 2
jae 0x40c1f3
push ecx
push 1
push 1
push ecx
call edi
test eax, eax
je 0x40c1f3
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
call fcn.0040b656
xor esi, esi
cmp eax, 3
jae 0x40c21b
push str.Global253
push esi
push 0x1f0001
call dword [sym.imp.KERNEL32.dll_OpenMutexA]
test eax, eax
je 0x40c21b
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
call fcn.0040b656
cmp eax, 2
jae 0x40c236
push esi
push esi
push esi
push esi
call edi
test eax, eax
je 0x40c236
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor ecx, ecx
mov byte [esp + 0x13], cl
cmp byte [esp + 0x13], cl
je 0x40c267
mov esi, 0x35f
push ecx
push ecx
push ecx
push ecx
push ecx
call ebx
push 0x35f
call ebp
xor eax, eax
push eax
push eax
push eax
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0
pop ecx
dec esi
jne 0x40c247
call fcn.0040b656
cmp eax, 2
jae 0x40c284
push ecx
push 1
push 1
push ecx
call edi
test eax, eax
je 0x40c284
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], al
je 0x40c2b5
mov esi, 0x224
push eax
push eax
push eax
push eax
push eax
call ebx
push 0x224
call ebp
xor eax, eax
push eax
push eax
push eax
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0
pop eax
dec esi
jne 0x40c295
call fcn.0040b656
push 2
pop ebp
cmp eax, ebp
jae 0x40c2d7
push ebp
call fcn.0041a976
pop ecx
test eax, eax
je 0x40c2d7
push eax
mov byte [eax + 1], 0xf
call fcn.0040c4f8
pop ecx
xor ebx, ebx
mov byte [esp + 0x13], bl
cmp byte [esp + 0x13], bl
je 0x40c2f5
push ebx
push ebx
call dword [sym.imp.USER32.dll_IsDialogMessageA]
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.USER32.dll_SetDlgItemInt]
call fcn.0040b656
mov esi, dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
cmp eax, ebp
jae 0x40c30f
lea eax, [esp + 0x14]
push eax
mov dword [esp + 0x18], ebx
call esi
call fcn.0040b656
cmp eax, ebp
jae 0x40c323
lea eax, [esp + 0x18]
push eax
mov dword [esp + 0x1c], ebx
call esi
mov eax, dword [0x43ad10]
or eax, dword [0x43ad14]
jne 0x40c43b
call fcn.0040b656
cmp eax, ebp
jae 0x40c353
push str.550550
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
test eax, eax
je 0x40c353
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
call fcn.0040b656
mov esi, dword [sym.imp.KERNEL32.dll_CreateMutexA]
cmp eax, 3
jae 0x40c36c
push str.Local164
push ebx
push ebx
call esi
call fcn.0040b656
cmp eax, ebp
jae 0x40c388
push ebx
push 1
push 1
push ebx
call edi
test eax, eax
je 0x40c388
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
call fcn.0040b656
cmp eax, ebp
jae 0x40c3a7
push ebp
call fcn.0041a976
pop ecx
test eax, eax
je 0x40c3a7
push eax
mov byte [eax + 1], 0x23
call fcn.0040c4f8
pop ecx
call fcn.0040b656
cmp eax, 3
jae 0x40c3ba
push str.Local440
push ebx
push ebx
call esi
call fcn.0040b656
cmp eax, ebp
jae 0x40c3d9
push ebp
call fcn.0041a976
pop ecx
test eax, eax
je 0x40c3d9
push eax
mov byte [eax + 1], 0xd2
call fcn.0040c4f8
pop ecx
call fcn.0040b656
cmp eax, 3
jae 0x40c3ff
push str.Global218
push ebx
push 0x1f0001
call dword [sym.imp.KERNEL32.dll_OpenMutexA]
test eax, eax
je 0x40c3ff
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov esi, ebx
mov eax, esi
push 8
cdq
pop edi
mov ecx, eax
shrd eax, edx, 1
and ecx, 1
shr edx, 1
or ecx, ebx
je 0x40c421
xor eax, 0xd7870f42
xor edx, 0xc96c5795
dec edi
jne 0x40c407
mov dword [esi*8 + 0x43a518], eax
mov dword [esi*8 + 0x43a51c], edx
inc esi
cmp esi, 0x100
jl 0x40c401
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
not ecx
not edx
test edi, edi
je 0x40c47a
mov esi, dword [esp + 0x24]
test esi, esi
je 0x40c47a
movzx eax, byte [edi]
xor eax, ecx
shrd ecx, edx, 8
and eax, 0xff
shr edx, 8
xor ecx, dword [eax*8 + 0x43a518]
xor edx, dword [eax*8 + 0x43a51c]
inc edi
dec esi
jne 0x40c457
pop edi
pop esi
not ecx
pop ebp
not edx
mov eax, ecx
pop ebx
add esp, 0xc
ret