Function at 0x403659
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5370cf
mov eax, dword fs:[0]
push eax
mov eax, 0x301c4
call fcn.0050d8a0
mov eax, dword [0x59099c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x301a0], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x30190], eax
mov eax, dword [ebp + 0x10]
push 0x59239c
mov dword [ebp - 0x301a8], eax
lea eax, [ebp - 0x30148]
push str.SOFTWARE_
push eax
call fcn.0040dcca
add esp, 0xc
mov eax, dword [ebp + 0x1c]
xor esi, esi
xor eax, 0xc4f7f7f7
mov dword [ebp - 4], esi
cmp dword [ebp - 0x30130], 0x10
mov dword [ebp - 0x301b0], eax
mov eax, dword [ebp - 0x30144]
jae 0x4036e7
lea eax, [ebp - 0x30144]
mov edi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
lea ecx, [ebp - 0x30188]
push ecx
mov ebx, 0x20006
push ebx
push esi
push eax
push 0x80000001
call edi
test eax, eax
je 0x403735
cmp dword [ebp - 0x30130], 0x10
mov eax, dword [ebp - 0x30144]
jae 0x40371c
lea eax, [ebp - 0x30144]
lea ecx, [ebp - 0x30188]
push ecx
push ebx
push esi
push eax
push SysStringLen
call edi
test eax, eax
jne 0x4037fb
mov eax, dword [ebp - 0x30190]
mov ecx, dword [eax + 0x14]
cmp ecx, esi
mov edi, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
je 0x403768
cmp dword [eax + 0x18], 0x10
jb 0x403753
mov eax, dword [eax + 4]
jmp 0x403756
add eax, 4
push ecx
push eax
push 1
push esi
push str.RegName
push dword [ebp - 0x30188]
call edi
mov eax, dword [ebp - 0x301a8]
mov ecx, dword [eax + 0x14]
cmp ecx, esi
je 0x403795
cmp dword [eax + 0x18], 0x10
jb 0x403780
mov eax, dword [eax + 4]
jmp 0x403783
add eax, 4
push ecx
push eax
push 1
push esi
push str.RegCode
push dword [ebp - 0x30188]
call edi
mov ebx, 0x7ffffffe
cmp dword [ebp + 0x14], ebx
je 0x4037b5
push 4
lea eax, [ebp + 0x14]
push eax
push 4
push esi
push str.TimesPlayed
push dword [ebp - 0x30188]
call edi
cmp dword [ebp + 0x18], ebx
je 0x4037d0
push 4
lea eax, [ebp + 0x18]
push eax
push 4
push esi
push str.TimesExecuted
push dword [ebp - 0x30188]
call edi
cmp dword [ebp + 0x1c], 0xffffffff
je 0x4037ef
push 4
lea eax, [ebp - 0x301b0]
push eax
push 4
push esi
push str.RegExData
push dword [ebp - 0x30188]
call edi
push dword [ebp - 0x30188]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x30190]
cmp dword [eax + 0x14], esi
jne 0x403815
mov eax, dword [ebp - 0x301a8]
cmp dword [eax + 0x14], esi
je 0x403d3e
call fcn.004767b0
test al, al
jne 0x40382e
lea edi, [ebp - 0x110]
call fcn.004012c9
jmp 0x4038bc
push 0x560668
lea ecx, [ebp - 0x301cc]
call fcn.0040a2a0
lea eax, [ebp - 0x30164]
push eax
mov byte [ebp - 4], 1
call fcn.004015f0
pop ecx
push eax
lea eax, [ebp - 0x301cc]
push eax
lea eax, [ebp - 0x3012c]
push eax
mov byte [ebp - 4], 2
call fcn.004785f0
add esp, 0xc
push esi
push 1
lea ecx, [ebp - 0x30164]
call fcn.0040aca3
push esi
push 1
lea ecx, [ebp - 0x301cc]
mov byte [ebp - 4], 0
call fcn.0040aca3
cmp dword [ebp - 0x30114], 0x10
mov eax, dword [ebp - 0x30128]
jae 0x40389f
lea eax, [ebp - 0x30128]
push eax
lea eax, [ebp - 0x110]
push eax
call fcn.0050b650
pop ecx
pop ecx
push esi
push 1
lea ecx, [ebp - 0x3012c]
call fcn.0040aca3
lea eax, [ebp - 0x110]
push eax
call fcn.0050b770
pop ecx
lea ecx, [ebp - 0x110]
dec ecx
cmp byte [eax + ecx], 0x5c
je 0x4038e9
lea eax, [ebp - 0x110]
push 0x5605a0
push eax
call fcn.0050b660
pop ecx
pop ecx
lea eax, [ebp - 0x110]
push str.popcreg.dat
push eax
call fcn.0050b660
pop ecx
pop ecx
call fcn.0040d3f1
mov dword [ebp - 0x30198], eax
mov byte [eax + 0x61], 1
mov eax, dword [ebp - 0x30198]
mov dword [eax + 4], eax
mov eax, dword [ebp - 0x30198]
mov dword [eax], eax
mov eax, dword [ebp - 0x30198]
mov dword [eax + 8], eax
mov dword [ebp - 0x30194], esi
lea eax, [ebp - 0x110]
push 0x5606ec
push eax
mov byte [ebp - 4], 3
call fcn.00509b92
mov edi, eax
cmp edi, esi
pop ecx
pop ecx
mov dword [ebp - 0x3018c], edi
je 0x403af5
push edi
push 1
lea eax, [ebp - 0x30184]
push 2
push eax
call fcn.00508cbd
add esp, 0x10
jmp 0x403ae4
movsx eax, word [ebp - 0x30184]
movsx ebx, word [ebp - 0x30184]
push edi
push eax
lea eax, [ebp - 0x10110]
push 1
push eax
call fcn.00508cbd
add esp, 0x10
cmp eax, ebx
jne 0x403aed
push edi
push 1
lea eax, [ebp - 0x30184]
push 2
push eax
mov byte [ebp + ebx - 0x10110], 0
call fcn.00508cbd
add esp, 0x10
cmp eax, 1
jne 0x403aed
movsx eax, word [ebp - 0x30184]
movsx ebx, word [ebp - 0x30184]
push edi
push eax
lea eax, [ebp - 0x30110]
push 1
push eax
call fcn.00508cbd
add esp, 0x10
cmp eax, ebx
jne 0x403aed
push edi
push 1
lea eax, [ebp - 0x30184]
push 2
push eax
mov byte [ebp + ebx - 0x30110], 0
call fcn.00508cbd
add esp, 0x10
cmp eax, 1
jne 0x403aed
movsx eax, word [ebp - 0x30184]
movsx ebx, word [ebp - 0x30184]
push edi
push eax
lea eax, [ebp - 0x20110]
push 1
push eax
call fcn.00508cbd
add esp, 0x10
cmp eax, ebx
jne 0x403aed
lea eax, [ebp - 0x30110]
push eax
lea ecx, [ebp - 0x30180]
mov byte [ebp + ebx - 0x20110], 0
call fcn.0040a2a0
lea eax, [ebp - 0x20110]
push eax
lea ecx, [ebp - 0x30164]
mov byte [ebp - 4], 4
call fcn.0040a2a0
lea eax, [ebp - 0x10110]
push eax
lea ecx, [ebp - 0x301cc]
mov byte [ebp - 4], 5
call fcn.0040a2a0
lea eax, [ebp - 0x301cc]
push eax
lea ecx, [ebp - 0x3019c]
mov byte [ebp - 4], 6
call fcn.0040a71f
push 0xffffffffffffffff
mov ebx, eax
push esi
lea eax, [ebp - 0x30180]
push eax
mov ecx, ebx
call fcn.0040a999
push 0xffffffffffffffff
push esi
lea eax, [ebp - 0x30164]
push eax
lea ecx, [ebx + 0x1c]
call fcn.0040a999
push esi
push 1
lea ecx, [ebp - 0x301cc]
call fcn.0040aca3
lea esi, [ebp - 0x30180]
mov byte [ebp - 4], 3
call fcn.00403d6e
push edi
push 1
lea eax, [ebp - 0x30184]
push 2
push eax
call fcn.00508cbd
add esp, 0x10
xor esi, esi
cmp eax, 1
je 0x40396b
push edi
call fcn.0050bbc1
jmp 0x403b1d
lea eax, [ebp - 0x110]
push eax
call fcn.00401528
lea eax, [ebp - 0x110]
mov dword [esp], 0x5606f0
push eax
call fcn.00509b92
pop ecx
mov dword [ebp - 0x3018c], eax
mov edi, eax
cmp edi, esi
pop ecx
je 0x403d2f
push dword [ebp - 0x30190]
lea ecx, [ebp - 0x30180]
call fcn.0040a2c2
mov byte [ebp - 4], 7
push dword [ebp - 0x301a8]
lea ecx, [ebp - 0x30164]
call fcn.0040a2c2
mov byte [ebp - 4], 8
push dword [ebp - 0x301a0]
lea ecx, [ebp - 0x3019c]
call fcn.0040a71f
push 0xffffffffffffffff
mov edi, eax
push esi
lea eax, [ebp - 0x30180]
push eax
mov ecx, edi
call fcn.0040a999
push 0xffffffffffffffff
push esi
lea eax, [ebp - 0x30164]
push eax
lea ecx, [edi + 0x1c]
call fcn.0040a999
mov eax, dword [ebp - 0x30198]
mov ebx, dword [eax]
lea eax, [ebp - 0x3019c]
mov dword [ebp - 0x301a4], eax
mov dword [ebp - 0x301a0], ebx
mov dword [ebp - 0x301ac], eax
mov eax, dword [ebp - 0x30198]
lea edi, [ebp - 0x301ac]
lea esi, [ebp - 0x301a4]
mov dword [ebp - 0x301a8], eax
call fcn.00415ce5
test al, al
jne 0x403ce8
mov esi, dword [ebp - 0x301a4]
test esi, esi
jne 0x403bda
call fcn.0050bbb1
cmp ebx, dword [esi + 4]
jne 0x403be4
call fcn.0050bbb1
lea eax, [ebx + 0xc]
push eax
lea ecx, [ebp - 0x3012c]
call fcn.0040a2c2
cmp ebx, dword [esi + 4]
jne 0x403bfd
call fcn.0050bbb1
movzx eax, word [ebp - 0x30118]
mov edi, dword [ebp - 0x3018c]
push edi
xor esi, esi
inc esi
push esi
mov dword [ebp - 0x30184], eax
lea eax, [ebp - 0x30184]
push 2
push eax
call fcn.00508f25
mov eax, dword [ebp - 0x30128]
add esp, 0x10
cmp dword [ebp - 0x30114], 0x10
jae 0x403c3b
lea eax, [ebp - 0x30128]
movsx ecx, word [ebp - 0x30184]
push edi
push ecx
push esi
push eax
call fcn.00508f25
movzx eax, word [ebx + 0x3c]
push edi
push esi
mov dword [ebp - 0x30184], eax
lea eax, [ebp - 0x30184]
push 2
push eax
call fcn.00508f25
add esp, 0x20
cmp dword [ebx + 0x40], 0x10
jb 0x403c73
mov eax, dword [ebx + 0x2c]
jmp 0x403c76
lea eax, [ebx + 0x2c]
movsx ecx, word [ebp - 0x30184]
push edi
push ecx
push esi
push eax
call fcn.00508f25
movzx eax, word [ebx + 0x58]
push edi
push esi
mov dword [ebp - 0x30184], eax
lea eax, [ebp - 0x30184]
push 2
push eax
call fcn.00508f25
add esp, 0x20
cmp dword [ebx + 0x5c], 0x10
jb 0x403cae
mov ebx, dword [ebx + 0x48]
jmp 0x403cb1
add ebx, 0x48
movsx eax, word [ebp - 0x30184]
push edi
push eax
push esi
push ebx
call fcn.00508f25
add esp, 0x10
push 0
push esi
lea ecx, [ebp - 0x3012c]
call fcn.0040aca3
lea esi, [ebp - 0x301a4]
call fcn.0040a86e
mov ebx, dword [ebp - 0x301a0]
jmp 0x403ba6
mov esi, dword [ebp - 0x3018c]
push esi
call fcn.0050c1ad
pop ecx
push eax
push esi
call fcn.0051757c
pop ecx
push eax
call fcn.00509796
push esi
call fcn.0050ba2b
add esp, 0xc
push esi
call fcn.00508d4a
pop ecx
push 2
lea eax, [ebp - 0x110]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
lea esi, [ebp - 0x30180]
call fcn.00403d6e
xor esi, esi
lea eax, [ebp - 0x3019c]
mov byte [ebp - 4], 0
call fcn.0040a839
push esi
push 1
lea ecx, [ebp - 0x30148]
call fcn.0040aca3
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0050bc9c
leave
ret