Function at 0x40500d
Capabilities:
Encode data using xor

Disassembly:
push 0xffffffffffffffff
push 0x426436
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x444
push ebx
push ebp
push esi
mov esi, ecx
push edi
lea ecx, [esp + 0x18]
mov dword [esp + 0x28], esi
call fcn.0041f663
xor ebx, ebx
lea ecx, [esp + 0x2c]
mov dword [esp + 0x45c], ebx
call fcn.0041f663
mov eax, dword [esi + 0x384]
push ebx
push ebx
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x468], 1
mov byte [esp + 0x1f], 1
call fcn.0041f775
test eax, eax
jne 0x405065
push ebx
push 0x10
push str.Output_Open_File_Error
call fcn.00421eaa
jmp 0x405507
mov ecx, 0x2bc8
or eax, 0xffffffff
mov edi, 0x54e9c0
mov dword [0x559a1c], ebx
rep stosd dword es:[edi], eax
mov ecx, 0x385
or eax, 0xffffffff
mov edi, 0x54dba8
mov dword [0x54ffa0], ebx
rep stosd dword es:[edi], eax
mov ecx, 0x385
or eax, 0xffffffff
mov edi, 0x54cd90
mov dword [0x552b68], ebx
rep stosd dword es:[edi], eax
mov ecx, 0x4b1
or eax, 0xffffffff
mov edi, 0x54bac8
mov dword [0x551584], ebx
rep stosd dword es:[edi], eax
mov ecx, 0x385
or eax, 0xffffffff
mov edi, 0x54acb0
mov dword [0x55414c], ebx
rep stosd dword es:[edi], eax
mov ecx, 0x385
or eax, 0xffffffff
mov edi, 0x549e98
mov dword [0x555730], ebx
rep stosd dword es:[edi], eax
mov ecx, 0x2bd
or eax, 0xffffffff
mov edi, 0x5493a0
mov dword [0x556d14], ebx
rep stosd dword es:[edi], eax
mov ecx, 0x301
xor eax, eax
mov edi, 0x547c00
mov dword [0x5582f8], ebx
rep stosd dword es:[edi], eax
mov ecx, 0x2e5
or eax, 0xffffffff
mov edi, 0x548808
mov dword [0x5598dc], ebx
rep stosd dword es:[edi], eax
mov dword [0x54e9b8], ebx
mov dword [0x549398], ebx
mov dword [0x54dba0], ebx
mov dword [0x54cd88], ebx
mov dword [0x54bac0], ebx
mov dword [0x54aca8], ebx
mov dword [0x549e90], ebx
mov dword [0x548800], ebx
call fcn.00401310
lea ecx, [esp + 0x18]
call fcn.0041fa6f
lea ecx, [esp + 0x18]
mov edi, eax
call fcn.0041f946
cmp eax, edi
jae 0x405278
mov ebp, dword [esp + 0x28]
lea eax, [esp + 0x14]
push 1
push eax
lea ecx, [esp + 0x20]
call fcn.0041f892
mov al, byte [esp + 0x13]
cmp al, bl
mov eax, dword [esp + 0x14]
je case.0x4051b2.67
mov ecx, eax
and ecx, 0xff
lea esi, [ecx - 0x42]
cmp esi, 0x16
ja case.0x4051b2.67
xor edx, edx
mov dl, byte [esi + 0x405598]
jmp dword [edx*4 + 0x405590]
cmp al, 0x56
jne 0x4051c1
xor ebp, ebp
jmp 0x405210
cmp al, 0x49
jne 0x4051cc
mov ebp, 2
jmp 0x405210
cmp al, 0x4e
jne 0x4051d7
mov ebp, 1
jmp 0x405210
cmp al, 0x53
jne 0x4051e2
mov ebp, 3
jmp 0x405210
cmp al, 0x58
jne 0x4051ed
mov ebp, 5
jmp 0x405210
cmp al, 0x42
jne 0x4051f8
mov ebp, 6
jmp 0x405210
cmp al, 0x54
jne 0x405203
mov ebp, 8
jmp 0x405210
cmp al, 0x57
je 0x40520b
cmp al, 0x44
jne 0x405210
mov ebp, 9
lea ecx, [esp + 0x18]
xor esi, esi
call fcn.0041f946
cmp eax, edi
jae 0x405249
lea eax, [esp + 0x14]
push 1
push eax
lea ecx, [esp + 0x20]
call fcn.0041f892
mov al, byte [esp + 0x14]
cmp al, 0xa
je 0x405249
mov byte [esp + esi + 0x54], al
lea ecx, [esp + 0x18]
inc esi
call fcn.0041f946
cmp eax, edi
jb 0x40521f
push ebp
lea ecx, [esp + 0x58]
push esi
push ecx
mov byte [esp + esi + 0x60], bl
call fcn.00401380
mov eax, dword [esp + 0x20]
add esp, 0xc
cmp al, 0xa
lea ecx, [esp + 0x18]
sete byte [esp + 0x13]
call fcn.0041f946
cmp eax, edi
jb 0x405176
lea ecx, [esp + 0x18]
call fcn.0041f990
mov edx, dword [0x54aca8]
mov eax, dword [0x549e90]
mov ebp, dword [0x54bac0]
mov edi, dword [0x54cd88]
mov esi, dword [0x54dba0]
add eax, edx
mov edx, dword [0x549398]
mov ecx, dword [0x54e9b8]
add eax, ebp
mov ebp, dword [0x5582f8]
add eax, edi
mov edi, dword [0x55414c]
add eax, esi
mov esi, dword [0x551584]
add eax, edx
mov edx, dword [0x552b68]
add eax, ecx
mov ecx, dword [0x54ffa0]
add eax, ebp
add eax, edi
add eax, esi
add eax, edx
add eax, ecx
je 0x405507
mov ecx, 0x1000
mov esi, 0x436b30
mov edi, 0x447ac8
mov eax, dword [0x548800]
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x800
mov esi, 0x43ab30
mov edi, 0x44bac8
lea eax, [eax + eax*2]
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x400
mov esi, 0x43cb30
mov edi, 0x44dac8
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x42c
mov esi, 0x431a80
mov edi, 0x44eac8
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x1000
mov esi, 0x432b30
mov edi, 0x44fb78
rep movsd dword es:[edi], dword [esi]
shl eax, 6
mov ecx, eax
mov esi, 0x547c00
mov edx, ecx
mov edi, 0x4564c8
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor esi, esi
cmp eax, ebx
jle 0x40537d
mov cl, byte [esi + 0x4564c8]
not cl
add cl, 0xa
xor cl, 0xa0
mov byte [esi + 0x4564c8], cl
inc esi
cmp esi, eax
jl 0x405364
xor esi, esi
cmp eax, ebx
jle 0x40539c
mov dl, byte [esi + 0x547c00]
not dl
add dl, 0xa
xor dl, 0xa0
mov byte [esi + 0x547c00], dl
inc esi
cmp esi, eax
jl 0x405383
mov ecx, 0x280
or eax, 0xffffffff
mov edi, 0x4570c8
mov esi, 0x54e9c0
rep stosd dword es:[edi], eax
mov ecx, 0x578
mov edi, 0x457ac8
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x41a
mov esi, 0x54ffa4
mov edi, 0x4590a8
or eax, 0xffffffff
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x15e
mov esi, 0x551588
mov edi, 0x45a110
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x41a
mov esi, 0x552b6c
mov edi, 0x45a688
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x384
mov esi, 0x54dba8
mov edi, 0x45b6f0
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x2e4
mov esi, 0x548808
mov edi, 0x45c500
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x2bc
mov esi, 0x5493a0
mov edi, 0x45d090
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x168
mov esi, 0x54cd90
mov edi, 0x45db80
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x4b0
mov esi, 0x54bac8
mov edi, 0x45e120
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x384
mov esi, 0x54acb0
mov edi, 0x45f3e0
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x384
mov esi, 0x549e98
mov edi, 0x4601f0
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x1ab2
mov edi, 0x461000
rep stosd dword es:[edi], eax
xor eax, eax
xor esi, esi
xor ecx, ecx
mov cl, byte [esi + 0x447ac8]
add eax, ecx
inc esi
cmp esi, 0x20000
jl 0x405479
mov ebp, dword [esp + 0x28]
lea esi, [esp + 0x3c]
not eax
mov ecx, dword [ebp + 0x7c]
mov edx, dword [ebp + 0x80]
mov dword [esp + 0x44], eax
mov dword [esp + 0x4c], ecx
movzx ax, byte [ebp + 0x84]
mov ecx, 6
mov edi, 0x447ab0
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], 0x20000
mov word [esp + 0x48], bx
mov word [esp + 0x4a], ax
rep movsd dword es:[edi], dword [esi]
push ebx
push 0x1001
push str.c:_softcam.bin
mov ecx, 0x547bb8
call fcn.0041f775
test eax, eax
jne 0x40552f
mov ecx, 0x547bb8
call fcn.0041f9d1
push 0x10
push str.Upgrade
push str.Cant_write_the_file_
mov ecx, ebp
call fcn.0041cfac
lea ecx, [esp + 0x2c]
mov byte [esp + 0x45c], bl
call fcn.0041f6b8
lea ecx, [esp + 0x18]
mov dword [esp + 0x45c], 0xffffffff
call fcn.0041f6b8
xor eax, eax
jmp 0x405576
push 0x20000
push 0x447ac8
mov ecx, 0x547bb8
call fcn.0041f8cc
mov ecx, 0x547bb8
call fcn.0041f990
lea ecx, [esp + 0x2c]
mov byte [esp + 0x45c], bl
call fcn.0041f6b8
lea ecx, [esp + 0x18]
mov dword [esp + 0x45c], 0xffffffff
call fcn.0041f6b8
mov eax, 1
mov ecx, dword [esp + 0x454]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x450
ret