Function at 0x4a6bf0
Capabilities:
Persist via run registry key
Print debug messages
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4fa34e
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
mov eax, 0x1360
call fcn.004d0180
push esi
mov dword [ebp - 0x1364], ecx
lea ecx, [ebp - 0x1220]
call fcn.00401900
mov dword [ebp - 4], 0
mov dword [ebp - 0x218], 1
lea ecx, [ebp - 0x135c]
call fcn.00401900
mov byte [ebp - 4], 1
push 0x104
push 0
lea eax, [ebp - 0x214]
push eax
call fcn.004cf390
add esp, 0xc
mov dword [ebp - 0x122c], 0
lea ecx, [ebp - 0x1228]
call fcn.00401900
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x1224]
call fcn.00401900
mov byte [ebp - 4], 3
push 0x104
push 0
lea ecx, [ebp - 0x110]
push ecx
call fcn.004cf390
add esp, 0xc
mov edx, dword [ebp - 0x1364]
add edx, 0xe8
push edx
push 0x104
lea eax, [ebp - 0x110]
push eax
push 0x53e254
push 0x531cf4
push 0x531cfc
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x53e258
lea ecx, [ebp - 0x110]
push ecx
call fcn.004d01b0
add esp, 8
test eax, eax
je 0x4a6cfb
lea edx, [ebp - 0x110]
push edx
mov ecx, dword [ebp - 0x1364]
add ecx, 0x1edc
call fcn.004e82b5
jmp 0x4a6f8d
mov dword [ebp - 0x1230], 0x100
push 0x531d04
lea ecx, [ebp - 0x1220]
call fcn.004e82b5
lea eax, [ebp - 0x1358]
push eax
push 0x20019
push 0
lea ecx, [ebp - 0x1220]
call fcn.00401920
push eax
push SysReAllocStringLen
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
je 0x4a6d6f
xor ecx, ecx
mov cx, word [0x539af6]
test ecx, ecx
je 0x4a6d56
push 0x531d48
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push 0x53e25c
lea edx, [ebp - 0x214]
push edx
call fcn.004cf9b0
add esp, 8
jmp 0x4a6f75
mov ecx, dword [ebp - 0x1364]
call fcn.004aa70c
cmp eax, 7
jne 0x4a6e7f
lea eax, [ebp - 0x1230]
push eax
lea ecx, [ebp - 0x214]
push ecx
lea edx, [ebp - 0x218]
push edx
push 0
push 0x531d64
mov eax, dword [ebp - 0x1358]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
je 0x4a6de1
xor ecx, ecx
mov cx, word [0x539af6]
test ecx, ecx
je 0x4a6dc8
push 0x531d70
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push 0x53e260
lea edx, [ebp - 0x214]
push edx
call fcn.004cf9b0
add esp, 8
jmp 0x4a6e6d
push 0x531d8c
lea eax, [ebp - 0x214]
push eax
call fcn.004cf9c0
add esp, 8
mov ecx, 0x539838
call fcn.00408660
mov esi, eax
lea ecx, [ebp - 0x214]
push ecx
call fcn.004cf430
add esp, 4
mov edx, 0x104
sub edx, eax
cmp esi, edx
jae 0x4a6e2d
mov ecx, 0x539838
call fcn.00408660
mov dword [ebp - 0x1368], eax
jmp 0x4a6e4c
lea eax, [ebp - 0x214]
push eax
call fcn.004cf430
add esp, 4
mov ecx, 0x104
sub ecx, eax
sub ecx, 1
mov dword [ebp - 0x1368], ecx
mov edx, dword [ebp - 0x1368]
push edx
mov ecx, 0x539838
call fcn.00401920
push eax
lea eax, [ebp - 0x214]
push eax
call fcn.004d0fc0
add esp, 0xc
mov ecx, dword [ebp - 0x1358]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x4a6f75
lea edx, [ebp - 0x1230]
push edx
lea eax, [ebp - 0x214]
push eax
lea ecx, [ebp - 0x218]
push ecx
push 0
push 0x531d90
mov edx, dword [ebp - 0x1358]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
je 0x4a6edc
xor eax, eax
mov ax, word [0x539af6]
test eax, eax
je 0x4a6ec3
push 0x531d9c
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push 0x53e264
lea ecx, [ebp - 0x214]
push ecx
call fcn.004cf9b0
add esp, 8
jmp 0x4a6f68
push 0x531db8
lea edx, [ebp - 0x214]
push edx
call fcn.004cf9c0
add esp, 8
mov ecx, 0x539838
call fcn.00408660
mov esi, eax
lea eax, [ebp - 0x214]
push eax
call fcn.004cf430
add esp, 4
mov ecx, 0x104
sub ecx, eax
cmp esi, ecx
jae 0x4a6f28
mov ecx, 0x539838
call fcn.00408660
mov dword [ebp - 0x136c], eax
jmp 0x4a6f47
lea edx, [ebp - 0x214]
push edx
call fcn.004cf430
add esp, 4
mov ecx, 0x104
sub ecx, eax
sub ecx, 1
mov dword [ebp - 0x136c], ecx
mov edx, dword [ebp - 0x136c]
push edx
mov ecx, 0x539838
call fcn.00401920
push eax
lea eax, [ebp - 0x214]
push eax
call fcn.004d0fc0
add esp, 0xc
mov ecx, dword [ebp - 0x1358]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea edx, [ebp - 0x214]
push edx
mov ecx, dword [ebp - 0x1364]
add ecx, 0x1edc
call fcn.004e82b5
mov eax, dword [ebp - 0x1364]
add eax, 0xe8
push eax
push 0
push 0x531dc8
push 0x531dd4
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov ecx, dword [ebp - 0x1364]
mov dword [ecx + 0x204], eax
mov edx, dword [ebp - 0x1364]
cmp dword [edx + 0x204], 0
jne 0x4a6fd8
mov eax, dword [ebp - 0x1364]
mov dword [eax + 0x204], 1
jmp 0x4a7014
mov ecx, dword [ebp - 0x1364]
cmp dword [ecx + 0x204], 4
jbe 0x4a6ff9
mov edx, dword [ebp - 0x1364]
mov dword [edx + 0x204], 1
jmp 0x4a7014
mov eax, dword [ebp - 0x1364]
mov ecx, dword [eax + 0x204]
sub ecx, 1
mov edx, dword [ebp - 0x1364]
mov dword [edx + 0x204], ecx
mov eax, dword [ebp - 0x1364]
add eax, 0xe8
push eax
push 0
push 0x531ddc
push 0x531de8
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov ecx, dword [ebp - 0x1364]
mov dword [ecx + 0x208], eax
mov edx, dword [ebp - 0x1364]
cmp dword [edx + 0x208], 2
jae 0x4a705f
mov eax, dword [ebp - 0x1364]
mov dword [eax + 0x208], 2
jmp 0x4a709b
mov ecx, dword [ebp - 0x1364]
cmp dword [ecx + 0x208], 4
jbe 0x4a7080
mov edx, dword [ebp - 0x1364]
mov dword [edx + 0x208], 2
jmp 0x4a709b
mov eax, dword [ebp - 0x1364]
mov ecx, dword [eax + 0x208]
sub ecx, 2
mov edx, dword [ebp - 0x1364]
mov dword [edx + 0x208], ecx
mov eax, dword [ebp - 0x1364]
add eax, 0xe8
push eax
push 0
push 0x531df0
push 0x531dfc
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov ecx, dword [ebp - 0x1364]
mov dword [ecx + 0x214], eax
mov edx, dword [ebp - 0x1364]
cmp dword [edx + 0x214], 0
jne 0x4a70e6
mov eax, dword [ebp - 0x1364]
mov dword [eax + 0x214], 1
jmp 0x4a7122
mov ecx, dword [ebp - 0x1364]
cmp dword [ecx + 0x214], 4
jbe 0x4a7107
mov edx, dword [ebp - 0x1364]
mov dword [edx + 0x214], 1
jmp 0x4a7122
mov eax, dword [ebp - 0x1364]
mov ecx, dword [eax + 0x214]
sub ecx, 1
mov edx, dword [ebp - 0x1364]
mov dword [edx + 0x214], ecx
mov eax, dword [ebp - 0x1364]
add eax, 0xe8
push eax
push 0x104
lea ecx, [ebp - 0x1354]
push ecx
push 0x53e268
push 0x531e04
push 0x531e0c
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x53e26c
lea edx, [ebp - 0x1354]
push edx
call fcn.004d01b0
add esp, 8
test eax, eax
jne 0x4a717f
push 0x531e14
mov ecx, dword [ebp - 0x1364]
add ecx, 0x210
call fcn.004e82b5
jmp 0x4a7197
lea eax, [ebp - 0x1354]
push eax
mov ecx, dword [ebp - 0x1364]
add ecx, 0x210
call fcn.004e82b5
mov ecx, dword [ebp - 0x1364]
add ecx, 0xe8
push ecx
push 0x800
lea edx, [ebp - 0xa18]
push edx
push 0x531e1c
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
lea eax, [ebp - 0xa18]
mov dword [ebp - 0x122c], eax
mov ecx, dword [ebp - 0x122c]
movsx edx, byte [ecx]
test edx, edx
je 0x4a7295
mov eax, dword [ebp - 0x122c]
push eax
lea ecx, [ebp - 0x1218]
push ecx
call fcn.004cf9b0
add esp, 8
push 0x531e24
lea edx, [ebp - 0x1218]
push edx
call fcn.004d0f17
add esp, 8
push eax
lea ecx, [ebp - 0x1224]
call fcn.004e82b5
push 0x531e28
push 0
call fcn.004d0f17
add esp, 8
push eax
lea ecx, [ebp - 0x1228]
call fcn.004e82b5
lea ecx, [ebp - 0x1224]
call fcn.00401920
push eax
mov ecx, dword [ebp - 0x1364]
add ecx, 0x210
call fcn.00401920
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x4a7271
lea ecx, [ebp - 0x1228]
call fcn.00401920
push eax
call fcn.004cf71f
add esp, 4
mov ecx, dword [ebp - 0x1364]
mov dword [ecx + 0x20c], eax
mov edx, dword [ebp - 0x122c]
push edx
call fcn.004cf430
add esp, 4
mov ecx, dword [ebp - 0x122c]
lea edx, [ecx + eax + 1]
mov dword [ebp - 0x122c], edx
jmp 0x4a71c7
mov eax, dword [ebp - 0x1364]
add eax, 0xe8
push eax
push 0x20
lea ecx, [ebp - 0x1250]
push ecx
push 0x53e270
push 0x531e2c
push 0x531e38
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov dword [ebp - 0x121c], 0
push 0x53e274
lea edx, [ebp - 0x1250]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
je 0x4a739a
mov eax, dword [ebp - 0x121c]
cmp eax, dword [0x539800]
jge 0x4a7368
cmp dword [ebp - 0x121c], 0x1e
jl 0x4a72fc
jmp 0x4a7368
cmp dword [0x53a9cc], 0
je 0x4a7328
lea ecx, [ebp - 0x1250]
push ecx
mov edx, dword [ebp - 0x121c]
mov eax, dword [edx*4 + 0x51c4c4]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x4a7326
jmp 0x4a7368
jmp 0x4a7354
cmp dword [ebp - 0x121c], 0x1a
jl 0x4a7333
jmp 0x4a7368
lea ecx, [ebp - 0x1250]
push ecx
mov edx, dword [ebp - 0x121c]
mov eax, dword [edx*4 + 0x51c53c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x4a7354
jmp 0x4a7368
mov ecx, dword [ebp - 0x121c]
add ecx, 1
mov dword [ebp - 0x121c], ecx
jmp 0x4a72e3
cmp dword [ebp - 0x121c], 0x1e
jl 0x4a7383
mov edx, dword [ebp - 0x1364]
mov dword [edx + 0x218], 0
jmp 0x4a7395
mov eax, dword [ebp - 0x1364]
mov ecx, dword [ebp - 0x121c]
mov dword [eax + 0x218], ecx
jmp 0x4a744d
mov dword [ebp - 0x1360], 0
jmp 0x4a73b5
mov edx, dword [ebp - 0x1360]
add edx, 1
mov dword [ebp - 0x1360], edx
cmp dword [ebp - 0x1360], 0x1e
jge 0x4a743b
cmp dword [0x53a9cc], 0
je 0x4a73fa
mov ecx, 0x539874
call fcn.00401920
push eax
mov eax, dword [ebp - 0x1360]
mov ecx, dword [eax*4 + 0x51c5a4]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x4a73f8
mov edx, dword [ebp - 0x1360]
mov dword [ebp - 0x121c], edx
jmp 0x4a743b
jmp 0x4a7436
cmp dword [ebp - 0x1360], 0x1a
jl 0x4a7405
jmp 0x4a743b
mov ecx, 0x539874
call fcn.00401920
push eax
mov eax, dword [ebp - 0x1360]
mov ecx, dword [eax*4 + 0x51c61c]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x4a7436
mov edx, dword [ebp - 0x1360]
mov dword [ebp - 0x121c], edx
jmp 0x4a743b
jmp 0x4a73a6
mov eax, dword [ebp - 0x1364]
mov ecx, dword [ebp - 0x121c]
mov dword [eax + 0x218], ecx
push 0
mov ecx, dword [ebp - 0x1364]
call fcn.004e6ccb
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x1224]
call fcn.004e812c
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x1228]
call fcn.004e812c
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x135c]
call fcn.004e812c
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x1220]
call fcn.004e812c
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
ret