Function at 0x4c9c70
Capabilities:
Persist via run registry key

Disassembly:
push ebp
mov ebp, esp
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ebx
push esi
push edi
mov esi, eax
xor eax, eax
push ebp
push 0x4ca0ab
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, 0x4ca0c4
call fcn.004c28a8
xor eax, eax
push ebp
push 0x4ca039
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x4d90fc]
movzx eax, byte [eax]
dec eax
sub al, 2
jae 0x4c9cc3
mov eax, dword [0x4d8ac4]
mov byte [eax], 0
mov eax, dword [0x4d8e08]
mov byte [eax], 1
lea eax, [ebp - 8]
call fcn.004c396c
mov edx, dword [ebp - 8]
mov eax, dword [esi + 0x3b0]
call fcn.004921f0
mov eax, 0x4ca0e0
call fcn.004c28a8
mov eax, dword [0x4d8b60]
cmp byte [eax], 0
jne 0x4c9cf2
call fcn.004bfcd8
mov eax, dword [0x4d9078]
cmp byte [eax], 0
jne 0x4c9d01
call fcn.004b3d60
mov eax, 0x4ca10c
call fcn.004c28a8
lea eax, [ebp - 4]
call fcn.00405a28
mov eax, dword [esi + 0x39c]
mov edx, dword [eax]
call dword [edx + 0xe8]
mov edi, 0x1d
mov ebx, dword [0x4d8a90]
mov eax, dword [esi + 0x39c]
call fcn.00493900
mov edx, dword [ebx]
mov ecx, dword [eax]
call dword [ecx + 0x38]
lea eax, [ebp - 0xc]
lea edx, [ebx + 0xc]
call fcn.00405410
mov eax, dword [ebp - 0xc]
mov edx, dword [0x4d8f14]
mov edx, dword [edx]
call fcn.004055d4
jne 0x4c9d65
lea eax, [ebp - 4]
mov edx, dword [ebx]
call fcn.00405a8c
add ebx, 0x24
dec edi
jne 0x4c9d2c
mov eax, dword [ebp - 4]
xor edx, edx
call fcn.00405d44
jbe 0x4c9d98
mov ebx, dword [esi + 0x39c]
mov eax, ebx
call fcn.00493900
mov edx, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x58]
mov edx, eax
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0xe0]
mov eax, 0x4ca134
call fcn.004c28a8
call fcn.004b6c68
mov eax, dword [0x4d8b3c]
cmp byte [eax], 0
je 0x4c9e1c
mov eax, dword [0x4d8cb0]
cmp byte [eax], 0
jne 0x4c9dcb
mov eax, dword [esi + 0x3dc]
mov dl, 1
mov ecx, dword [eax]
call dword [ecx + 0xdc]
mov eax, dword [esi + 0x3bc]
mov dl, 1
mov ecx, dword [eax]
call dword [ecx + 0xdc]
mov eax, dword [esi + 0x3e4]
mov dl, 1
mov ecx, dword [eax]
call dword [ecx + 0xdc]
push 0x80000001
mov ecx, 0x4ca15c
mov edx, 1
mov eax, 0x4ca184
call fcn.004ab2b0
test eax, eax
setg dl
mov eax, dword [esi + 0x3d4]
mov ecx, dword [eax]
call dword [ecx + 0xdc]
jmp 0x4c9f10
lea eax, [ebp - 0x10]
call fcn.004c3518
lea eax, [ebp - 0x10]
mov edx, 0x4ca1a0
call fcn.00405c2c
mov eax, dword [ebp - 0x10]
call fcn.004767a8
test al, al
jne 0x4c9e62
lea eax, [ebp - 0x14]
call fcn.004c362c
lea eax, [ebp - 0x14]
mov edx, 0x4ca1a0
call fcn.00405c2c
mov eax, dword [ebp - 0x14]
call fcn.004767a8
test al, al
jne 0x4c9e62
xor edx, edx
jmp 0x4c9e64
mov dl, 1
mov eax, dword [esi + 0x3bc]
mov ecx, dword [eax]
call dword [ecx + 0xdc]
mov ecx, 0x80000001
mov edx, 0x4ca1bc
mov eax, 0x4ca1f0
call fcn.004ab57c
mov edx, eax
mov eax, dword [esi + 0x3dc]
mov ecx, dword [eax]
call dword [ecx + 0xdc]
push 0x80000001
mov ecx, 0x4ca204
mov edx, 1
mov eax, 0x4ca228
call fcn.004ab2b0
dec eax
sete dl
mov eax, dword [esi + 0x3e4]
mov ecx, dword [eax]
call dword [ecx + 0xdc]
mov eax, dword [0x4d8b7c]
cmp byte [eax], 0
je 0x4c9ee4
mov edx, dword [0x4d8c60]
movzx edx, byte [edx]
mov eax, dword [esi + 0x3d4]
mov ecx, dword [eax]
call dword [ecx + 0xdc]
jmp 0x4c9f10
push 0x80000001
mov ecx, 0x4ca15c
mov edx, 1
mov eax, 0x4ca184
call fcn.004ab2b0
test eax, eax
setg dl
mov eax, dword [esi + 0x3d4]
mov ecx, dword [eax]
call dword [ecx + 0xdc]
mov eax, esi
call fcn.004c98c0
mov edx, eax
mov eax, dword [esi + 0x3cc]
mov ecx, dword [eax]
call dword [ecx + 0xdc]
mov eax, esi
call fcn.004c9ac8
mov edx, eax
mov eax, dword [esi + 0x3c4]
mov ecx, dword [eax]
call dword [ecx + 0xdc]
mov eax, dword [0x4d8b7c]
cmp byte [eax], 0
je 0x4c9f6f
mov eax, dword [esi + 0x3a4]
xor edx, edx
call fcn.0044e328
mov eax, dword [esi + 0x3b8]
xor edx, edx
call fcn.0044e328
mov eax, dword [esi + 0x3d8]
xor edx, edx
call fcn.0044e328
mov eax, dword [0x4d8cb0]
cmp byte [eax], 0
je 0x4c9f86
mov eax, dword [esi + 0x3d8]
xor edx, edx
call fcn.0044e328
mov eax, dword [0x4d8ac4]
cmp byte [eax], 0
je 0x4c9f9d
mov eax, dword [esi + 0x3e0]
xor edx, edx
call fcn.0044e328
mov eax, dword [0x4d9040]
cmp byte [eax], 0
je 0x4c9fb4
mov eax, dword [esi + 0x3b8]
xor edx, edx
call fcn.0044e328
mov eax, dword [0x4d8dc4]
cmp byte [eax], 0
je 0x4c9fd8
mov eax, dword [esi + 0x36c]
xor edx, edx
mov ecx, dword [eax]
call dword [ecx + 0x68]
mov eax, dword [esi + 0x36c]
xor edx, edx
call fcn.0044e328
mov eax, dword [0x4d8ad4]
cmp byte [eax], 0
je 0x4c9fef
mov eax, dword [esi + 0x3d0]
xor edx, edx
call fcn.0044e328
mov eax, dword [0x4d8ab8]
cmp byte [eax], 0
jne 0x4ca002
call fcn.004c6860
test al, al
jne 0x4ca00f
mov eax, dword [esi + 0x3c8]
xor edx, edx
call fcn.0044e328
mov eax, dword [0x4d8b08]
cmp byte [eax], 0
jne 0x4ca022
call fcn.004c6c2c
test al, al
jne 0x4ca02f
mov eax, dword [esi + 0x3c0]
xor edx, edx
call fcn.0044e328
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4ca069
mov eax, 0x4ca250
call fcn.004c28a8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4ca0b2
lea eax, [ebp - 0x18]
call fcn.004051ac
lea eax, [ebp - 0x14]
mov edx, 2
call fcn.00405a40
lea eax, [ebp - 0xc]
call fcn.004051ac
lea eax, [ebp - 8]
mov edx, 2
call fcn.00405a40
ret