Function at 0x4042a0
Capabilities:
Encode data using xor
Write file on windows

Disassembly:
sub esp, 0x80
mov eax, dword [0x415020]
xor eax, esp
mov dword [esp + 0x7c], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x416c08]
mov ecx, dword [0x412b78]
mov dword [eax], ecx
movzx edx, word [0x412b7c]
mov word [eax + 4], dx
mov eax, dword [0x416c08]
mov ecx, dword [0x412b70]
mov dword [eax + 6], ecx
movzx edx, byte [0x412b74]
mov byte [eax + 0xa], dl
movzx ecx, word [0x412b6c]
add eax, 6
mov eax, dword [0x416c08]
mov word [eax + 0xb], cx
movzx edx, byte [0x412b6e]
mov byte [eax + 0xd], dl
mov ecx, dword [0x412b78]
add eax, 0xb
mov eax, dword [0x416c08]
mov dword [eax + 0xe], ecx
movzx edx, word [0x412b7c]
mov word [eax + 0x12], dx
mov ecx, dword [0x412b64]
add eax, 0xe
mov eax, dword [0x416c08]
mov dword [eax + 0x14], ecx
movzx edx, byte [0x412b68]
mov byte [eax + 0x18], dl
movzx ecx, word [0x412b6c]
add eax, 0x14
mov eax, dword [0x416c08]
mov word [eax + 0x19], cx
movzx edx, byte [0x412b6e]
add eax, 0x19
mov byte [eax + 2], dl
mov eax, dword [0x416c08]
mov ecx, dword [0x412b78]
mov dword [eax + 0x1c], ecx
movzx edx, word [0x412b7c]
add eax, 0x1c
mov word [eax + 4], dx
mov eax, dword [0x416c08]
mov ecx, dword [0x412b58]
add eax, 0x22
mov dword [eax], ecx
mov edx, dword [0x412b5c]
mov ebp, dword [esp + 0x94]
mov dword [eax + 4], edx
mov cl, byte [0x412b60]
mov esi, ebp
mov byte [eax + 8], cl
mov bl, 0x24
xor ecx, ecx
lea edi, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x4043a7
sub esi, edi
mov eax, 0x1e
sub eax, esi
cdq
sub eax, edx
sar eax, 1
test eax, eax
jle 0x4043d6
mov byte [esp + ecx + 0x14], 0x41
inc ecx
mov byte [esp + ecx + 0x14], 0x20
xor bl, 0x61
add ecx, 3
sub eax, 1
jne 0x4043c0
xor edx, edx
test esi, esi
jle 0x4043fb
lea esp, [esp]
mov al, byte [edx + ebp]
mov byte [esp + ecx + 0x14], 0x41
inc ecx
mov byte [esp + ecx + 0x14], al
xor al, bl
xor al, 0x41
inc edx
add ecx, 3
cmp edx, esi
mov bl, al
jl 0x4043e0
cmp ecx, 0x78
jge 0x40441d
mov al, byte [0x41501c]
mov byte [esp + ecx + 0x14], 0x41
inc ecx
mov byte [esp + ecx + 0x14], al
xor al, bl
xor al, 0x41
add ecx, 3
cmp ecx, 0x78
mov bl, al
jl 0x404400
mov edi, dword [esp + 0x98]
mov eax, edi
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x404430
sub eax, edx
mov esi, eax
mov eax, 0x1e
sub eax, esi
cdq
sub eax, edx
sar eax, 1
mov ecx, 2
mov dword [esp + 0x10], ecx
test eax, eax
jle 0x40446e
mov byte [esp + ecx + 0x14], 0x41
inc ecx
mov byte [esp + ecx + 0x14], 0x20
xor bl, 0x61
add ecx, 3
sub eax, 1
jne 0x404454
mov dword [esp + 0x10], ecx
xor edx, edx
test esi, esi
jle 0x404493
mov al, byte [edx + edi]
mov byte [esp + ecx + 0x14], 0x41
inc ecx
mov byte [esp + ecx + 0x14], al
xor al, bl
xor al, 0x41
inc edx
add ecx, 3
cmp edx, esi
mov bl, al
jl 0x404474
mov dword [esp + 0x10], ecx
cmp ecx, 0x78
jge 0x4044c1
jmp 0x4044a0
mov al, byte [0x41501c]
mov byte [esp + ecx + 0x14], 0x41
inc ecx
mov byte [esp + ecx + 0x14], al
xor al, bl
xor al, 0x41
add ecx, 3
cmp ecx, 0x78
mov bl, al
jl 0x4044a0
mov dword [esp + 0x10], ecx
mov edi, dword [0x416c08]
add edi, 0x2b
mov ecx, 0x1e
lea esi, [esp + 0x14]
rep movsd dword es:[edi], dword [esi]
mov edx, dword [0x416c08]
mov dword [edx + 0xa3], 2
mov eax, dword [0x416c08]
mov byte [eax + 0xa7], bl
mov eax, dword [0x416c08]
movzx ecx, word [0x412b6c]
mov word [eax + 0xa8], cx
movzx edx, byte [0x412b6e]
mov byte [eax + 0xaa], dl
mov ecx, dword [0x412b78]
add eax, 0xa8
mov eax, dword [0x416c08]
mov dword [eax + 0xab], ecx
movzx edx, word [0x412b7c]
mov word [eax + 0xaf], dx
mov ecx, dword [0x412b78]
add eax, 0xab
mov eax, dword [0x416c08]
mov dword [eax + 0xb1], ecx
movzx edx, word [0x412b7c]
mov word [eax + 0xb5], dx
mov ecx, dword [0x412b50]
add eax, 0xb1
mov eax, dword [0x416c08]
mov dword [eax + 0xb7], ecx
movzx edx, byte [0x412b54]
add eax, 0xb7
mov byte [eax + 4], dl
mov eax, dword [0x416c08]
movzx ecx, word [0x412b6c]
add eax, 0xbc
mov word [eax], cx
movzx edx, byte [0x412b6e]
mov byte [eax + 2], dl
mov ecx, dword [0x416c08]
mov edx, dword [0x416a4c]
push 0
lea eax, [esp + 0x14]
push eax
push 0xbf
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_WriteFile]
cmp byte [0x41501c], 0
mov ecx, dword [esp + 0x8c]
pop edi
setne al
pop esi
dec al
pop ebp
and al, 0x20
pop ebx
xor ecx, esp
mov byte [0x41501c], al
call fcn.00405c9c
add esp, 0x80
ret