Function at 0x4021f0
Capabilities:
Print debug messages

Disassembly:
sub esp, 0x20
or ecx, 0xffffffff
xor eax, eax
mov dword [0x40c0ec], 0x80000001
push ebx
push ebp
push esi
push edi
mov edi, 0x410f40
push 0x410e3c
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push str.CurMode
mov eax, ecx
mov esi, edi
mov edi, 0x40bfe8
push 0x40bfe8
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push bind
and ecx, 3
mov dword [0x40bfe0], 0x40b1e8
rep movsb byte es:[edi], byte [esi]
call fcn.00401f40
add esp, 0x10
mov esi, str.OpenMode
mov eax, 0x410e3c
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x40227e
test cl, cl
je 0x40227a
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x40227e
add eax, 2
add esi, 2
test cl, cl
jne 0x402256
xor eax, eax
jmp 0x402283
sbb eax, eax
sbb eax, 0xffffffff
xor ebp, ebp
cmp eax, ebp
jne 0x4022a2
cmp dword [0x410c2c], ebp
je 0x402730
call fcn.00402740
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov esi, str.EnableMode
mov eax, 0x410e3c
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x4022d4
test cl, cl
je 0x4022d0
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x4022d4
add eax, 2
add esi, 2
test cl, cl
jne 0x4022ac
xor eax, eax
jmp 0x4022d9
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebp
jne 0x4024e8
mov edi, 0x411044
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [0x40c0ec]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [0x40bfe0], 0x40b1bc
mov eax, ecx
mov esi, edi
mov edi, 0x40bfe8
mov dword [esp + 0x10], ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov dword [esp + 0x14], ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x10]
push ecx
push str.count
push 0x40bfe8
push edx
call fcn.00401fd0
mov ecx, dword [0x40c0ec]
lea eax, [esp + 0x24]
push eax
push str.md5count
push 0x40bfe8
push ecx
mov dword [0x40bfe0], 0x40b1b0
call fcn.00401fd0
mov eax, dword [esp + 0x30]
add esp, 0x20
cmp eax, ebp
jbe 0x4023d0
mov ebx, 0x40e368
push ebp
lea edx, [esp + 0x1c]
push str.Enable_02d
push edx
call fcn.004034a8
mov edx, dword [0x40c0ec]
lea ecx, [esp + 0x24]
push 0x410e3c
push ecx
lea eax, [esp + 0x2c]
push 0x40bfe8
push edx
mov dword [0x40bfe0], eax
call fcn.00401f40
mov edi, 0x410e3c
or ecx, 0xffffffff
xor eax, eax
add esp, 0x1c
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebx
add ebx, 0x104
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x10]
and ecx, 3
inc ebp
cmp ebp, eax
rep movsb byte es:[edi], byte [esi]
jb 0x402368
mov eax, dword [esp + 0x14]
xor ebp, ebp
test eax, eax
jbe 0x402470
mov ebx, 0x410808
push ebp
lea ecx, [esp + 0x1c]
push str.MD5_02d
push ecx
mov byte [0x410e3c], 0
call fcn.004034a8
mov ecx, dword [0x40c0ec]
lea eax, [esp + 0x24]
push 0x410e3c
push eax
lea edx, [esp + 0x2c]
push 0x40bfe8
push ecx
mov dword [0x40bfe0], edx
call fcn.00401f40
mov edi, 0x410e3c
or ecx, 0xffffffff
xor eax, eax
add esp, 0x1c
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
jne 0x402459
mov byte [ebp + 0x40c2c4], 0x4e
jmp 0x402460
mov byte [ebp + 0x40c2c4], 0x4d
mov eax, dword [esp + 0x14]
inc ebp
add ebx, 0x21
cmp ebp, eax
jb 0x4023e3
mov eax, 1
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x24], eax
mov eax, dword [0x410c2c]
test eax, eax
je 0x402493
call fcn.00402740
push 0x410c30
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push str.CreateProcess_HookAllApps
push eax
mov dword [0x410c2c], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x402730
mov ecx, dword [esp + 0x14]
push 0x40c2c4
push 0x410808
push ecx
push 0x40e368
mov ecx, 6
sub esp, 0x18
lea esi, [esp + 0x40]
mov edi, esp
rep movsd dword es:[edi], dword [esi]
call eax
add esp, 0x28
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov esi, str.DisableMode
mov eax, 0x410e3c
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x40251a
test cl, cl
je 0x402516
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x40251a
add eax, 2
add esi, 2
test cl, cl
jne 0x4024f2
xor eax, eax
jmp 0x40251f
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebp
jne 0x402730
mov edi, 0x411148
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [0x40c0ec]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [0x40bfe0], 0x40b1bc
mov eax, ecx
mov esi, edi
mov edi, 0x40bfe8
mov dword [esp + 0x14], ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov dword [esp + 0x10], ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x14]
push ecx
push str.count
push 0x40bfe8
push edx
call fcn.00401fd0
mov ecx, dword [0x40c0ec]
lea eax, [esp + 0x20]
push eax
push str.md5count
push 0x40bfe8
push ecx
mov dword [0x40bfe0], 0x40b1b0
call fcn.00401fd0
mov eax, dword [esp + 0x34]
add esp, 0x20
cmp eax, ebp
jbe 0x402621
mov ebx, 0x40e368
push ebp
lea edx, [esp + 0x1c]
push str.Disable_02d
push edx
call fcn.004034a8
mov edx, dword [0x40c0ec]
lea ecx, [esp + 0x24]
push 0x410e3c
push ecx
lea eax, [esp + 0x2c]
push 0x40bfe8
push edx
mov dword [0x40bfe0], eax
call fcn.00401f40
mov edi, 0x410e3c
or ecx, 0xffffffff
xor eax, eax
add esp, 0x1c
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x410e3c
mov eax, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov eax, dword [esp + 0x14]
inc ebp
add ebx, 0x104
cmp ebp, eax
jb 0x4025ae
mov eax, dword [esp + 0x10]
xor ebp, ebp
test eax, eax
jbe 0x4026c1
mov ebx, 0x410808
push ebp
lea ecx, [esp + 0x1c]
push str.MD5_02d
push ecx
mov byte [0x410e3c], 0
call fcn.004034a8
mov ecx, dword [0x40c0ec]
lea eax, [esp + 0x24]
push 0x410e3c
push eax
lea edx, [esp + 0x2c]
push 0x40bfe8
push ecx
mov dword [0x40bfe0], edx
call fcn.00401f40
mov edi, 0x410e3c
or ecx, 0xffffffff
xor eax, eax
add esp, 0x1c
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
jne 0x4026aa
mov byte [ebp + 0x40c2c4], 0x4e
jmp 0x4026b1
mov byte [ebp + 0x40c2c4], 0x4d
mov eax, dword [esp + 0x10]
inc ebp
add ebx, 0x21
cmp ebp, eax
jb 0x402634
mov eax, dword [esp + 0x14]
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], eax
mov eax, dword [0x410c2c]
test eax, eax
mov dword [esp + 0x1c], 1
je 0x4026e7
call fcn.00402740
push 0x410c30
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push str.CreateProcess_HookAllApps
push eax
mov dword [0x410c2c], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x402730
mov ecx, dword [esp + 0x10]
push 0x40c2c4
push 0x410808
push ecx
push 0x40e368
mov ecx, 6
sub esp, 0x18
lea esi, [esp + 0x40]
mov edi, esp
rep movsd dword es:[edi], dword [esi]
call eax
add esp, 0x28
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret