Function at 0x403960
Capabilities:
Persist via run registry key

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x650
mov eax, dword [0x405004]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov dword [ebp - 0x64c], eax
mov esi, ecx
push edi
lea eax, [ebp - 0x638]
mov dword [ebp - 0x650], esi
mov dword [ebp - 0x648], eax
mov ebx, edx
push 0x104
lea eax, [ebp - 0x31c]
mov dword [ebp - 0x644], 0x215
push eax
call dword [0x40602c]
test eax, eax
jne 0x403a15
test ebx, ebx
je 0x403b79
call dword [0x406028]
push 0
push 0x100
mov esi, eax
lea eax, [ebp - 0x114]
push eax
push 0
push esi
push 0
push 0x1000
call dword [0x40603c]
lea eax, [ebp - 0x114]
push eax
push esi
push 0x401990
push 0x400
push ebx
call fcn.00401d20
add esp, 0x14
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00404280
mov esp, ebp
pop ebp
ret 4
lea eax, [ebp - 0x31c]
push eax
push 0x4019d0
lea eax, [ebp - 0x218]
push 0x104
push eax
call fcn.00401d20
lea eax, [ebp - 0x218]
push 0x40111c
push eax
call dword [0x4060e8]
mov edi, eax
add esp, 0x18
test edi, edi
jne 0x403a74
test ebx, ebx
je 0x403b79
call dword [0x4060f8]
push dword [eax]
call dword [0x4060bc]
push eax
push dword [ebp - 0x64c]
push 0x4019e0
jmp 0x403b6b
mov esi, dword [esi + 0x20]
test esi, esi
je 0x403ac8
jmp 0x403a80
push edi
push dword [esi + 4]
call dword [0x406090]
mov eax, dword [esi + 0x10]
add esp, 8
test eax, eax
je 0x403ab2
cmp byte [eax], 0
je 0x403ab2
push edi
push 0x401a04
call dword [0x406090]
push edi
push dword [esi + 0x10]
call dword [0x406090]
add esp, 0x10
push edi
push 0x401350
call dword [0x406090]
mov esi, dword [esi + 0x14]
add esp, 8
test esi, esi
jne 0x403a80
push edi
call dword [0x4060dc]
mov eax, dword [ebp - 0x64c]
add esp, 4
test eax, eax
je 0x403b13
lea esi, [ebp - 0x218]
mov edx, 0x104
mov ecx, eax
sub esi, eax
jmp 0x403af0
lea eax, [edx + 0x7ffffefa]
test eax, eax
je 0x403b0b
mov al, byte [esi + ecx]
test al, al
je 0x403b0b
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x403af0
jmp 0x403b0f
test edx, edx
jne 0x403b10
dec ecx
mov byte [ecx], 0
lea eax, [ebp - 0x63c]
push eax
push 0xf003f
push 0
push 0x4017e4
push 0x80000002
call dword [0x40600c]
mov esi, eax
test esi, esi
je 0x403b8e
test ebx, ebx
je 0x403b79
push 0
push 0x100
lea eax, [ebp - 0x114]
push eax
push 0
push esi
push 0
push 0x1000
call dword [0x40603c]
lea eax, [ebp - 0x114]
push eax
push 0x4017e4
push esi
push 0x401818
push 0x400
push ebx
call fcn.00401d20
add esp, 0x18
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00404280
mov esp, ebp
pop ebp
ret 4
push 0
lea eax, [ebp - 0x640]
push eax
push 0
push 0xf003f
push 0
push 0
push 0
push 0x401844
push 0x80000002
call dword [0x406004]
mov esi, eax
test esi, esi
je 0x403c1d
test ebx, ebx
je 0x403bfc
push 0
push 0x100
lea eax, [ebp - 0x114]
push eax
push 0
push esi
push 0
push 0x1000
call dword [0x40603c]
lea eax, [ebp - 0x114]
push eax
push 0x401844
push esi
push 0x40187c
push 0x400
push ebx
call fcn.00401d20
add esp, 0x18
push dword [ebp - 0x63c]
call dword [0x406008]
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00404280
mov esp, ebp
pop ebp
ret 4
push 0xc
push 0x4018ac
push 1
push 0
push 0x4018ac
push dword [ebp - 0x63c]
call dword [section..idata]
mov esi, eax
test esi, esi
je 0x403ca9
test ebx, ebx
je 0x403c7c
push 0
push 0x100
lea eax, [ebp - 0x114]
push eax
push 0
push esi
push 0
push 0x1000
call dword [0x40603c]
lea eax, [ebp - 0x114]
push eax
push esi
push 0x4018b8
push 0x400
push ebx
call fcn.00401d20
add esp, 0x14
push dword [ebp - 0x640]
call dword [0x406008]
push dword [ebp - 0x63c]
call dword [0x406008]
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00404280
mov esp, ebp
pop ebp
ret 4
push 0x104
lea eax, [ebp - 0x420]
push eax
push 0
call dword [0x406018]
test eax, eax
jne 0x403cfd
call dword [0x406028]
mov esi, eax
test ebx, ebx
je 0x403c7c
push 0
push 0x100
lea eax, [ebp - 0x114]
push eax
push 0
push esi
push 0
push 0x1000
call dword [0x40603c]
lea eax, [ebp - 0x114]
push eax
push esi
push 0x4018e0
jmp 0x403c6e
mov edi, dword [ebp - 0x650]
mov eax, 0x40190c
cmp dword [edi + 0x14], 0
jne 0x403d13
mov eax, 0x401100
cmp dword [edi + 0x10], 0
mov ecx, 0x401910
jne 0x403d23
mov ecx, 0x401100
push eax
push ecx
lea eax, [ebp - 0x420]
push eax
push 0x401914
push 0
lea eax, [ebp - 0x644]
push eax
lea eax, [ebp - 0x648]
push eax
lea eax, [ebp - 0x638]
push 0x215
push eax
call fcn.00402840
mov eax, dword [edi + 0x18]
add esp, 0x24
test eax, eax
je 0x403e73
cmp eax, 3
ja case.default.0x403d69
jmp dword [eax*4 + 0x403f34]
lea ecx, [ebp - 0x14]
mov esi, 0x401100
mov eax, ecx
mov edx, 0x10
sub esi, eax
lea eax, [edx + 0x7fffffee]
test eax, eax
je 0x403e3b
mov al, byte [esi + ecx]
test al, al
je 0x403e3b
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x403d81
jmp 0x403e3f
lea ecx, [ebp - 0x14]
mov esi, 0x401280
mov eax, ecx
mov edx, 0x10
sub esi, eax
jmp 0x403dc0
lea eax, [edx + 0x7fffffee]
test eax, eax
je 0x403e3b
mov al, byte [esi + ecx]
test al, al
je 0x403e3b
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x403dc0
jmp 0x403e3f
lea ecx, [ebp - 0x14]
mov esi, 0x401284
mov eax, ecx
mov edx, 0x10
sub esi, eax
lea esp, [esp]
lea eax, [edx + 0x7fffffee]
test eax, eax
je 0x403e3b
mov al, byte [esi + ecx]
test al, al
je 0x403e3b
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x403df0
jmp 0x403e3f
lea ecx, [ebp - 0x14]
mov esi, 0x401288
mov eax, ecx
mov edx, 0x10
sub esi, eax
lea esp, [esp]
lea eax, [edx + 0x7fffffee]
test eax, eax
je 0x403e3b
mov al, byte [esi + ecx]
test al, al
je 0x403e3b
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x403e20
jmp 0x403e3f
test edx, edx
jne 0x403e40
dec ecx
mov byte [ecx], 0
push dword [edi + 0x1c]
lea eax, [ebp - 0x14]
push eax
push 0x401920
push 0
lea eax, [ebp - 0x644]
push eax
lea eax, [ebp - 0x648]
push eax
push dword [ebp - 0x644]
push dword [ebp - 0x648]
call fcn.00402840
add esp, 0x20
push dword [ebp - 0x64c]
push 0x401930
push dword [ebp - 0x644]
push dword [ebp - 0x648]
call fcn.00401d20
lea ecx, [ebp - 0x638]
add esp, 0x10
lea edx, [ecx + 1]
jmp 0x403ea0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x403ea0
sub ecx, edx
lea eax, [ebp - 0x638]
push ecx
push eax
push 1
push 0
push 0x401940
push dword [ebp - 0x640]
call dword [section..idata]
mov esi, eax
test esi, esi
je 0x403f04
test ebx, ebx
je 0x403c7c
push 0
push 0x100
lea eax, [ebp - 0x114]
push eax
push 0
push esi
push 0
push 0x1000
call dword [0x40603c]
lea eax, [ebp - 0x114]
push eax
push esi
push 0x401964
jmp 0x403c6e
push dword [ebp - 0x63c]
call dword [0x406008]
push dword [ebp - 0x640]
call dword [0x406008]
mov ecx, dword [ebp - 4]
mov eax, 1
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00404280
mov esp, ebp
pop ebp
ret 4