Function at 0x40cc1c
Capabilities:
Encode data using xor
Get file size
Read file on windows

Disassembly:
sub esp, 0x56c
push ebp
push edi
push esi
push ebx
mov esi, 0x57d250
mov dword [esp + 0x58], esi
add esp, 0xfffffff8
lea ebx, [esp + 0x468]
push ebx
push 0x40cc10
call fcn.004077cc
add esp, 0xfffffffc
push 0
push pe_nt_image_headers32
push 3
push 0
push 0
push 0x80000000
push ebx
call sub.KERNEL32.dll_CreateFileA
mov ebx, eax
add esp, 0x14
cmp ebx, 0xffffffff
jne 0x40cc8a
mov eax, dword [0x6df150]
add esp, 0xfffffffc
push 0x40cc10
mov eax, dword [eax + 0x32c]
push eax
push 0x4078c0
call fcn.00407070
add esp, 0x10
cmp ebx, 0xffffffff
je 0x40d359
add esp, 0xfffffff8
push 0
push ebx
call sub.KERNEL32.dll_GetFileSize
mov edx, eax
add esp, 8
add esp, 0xfffffff4
push 0
lea eax, [esp + 0x6c]
push eax
push edx
mov eax, dword [esp + 0x70]
push eax
push ebx
call sub.KERNEL32.dll_ReadFile
push ebx
call sub.KERNEL32.dll_CloseHandle
add esp, 0xc
cmp dword [esp + 0x5c], 0
jne 0x40ccea
mov eax, dword [0x6df150]
add esp, 0xfffffffc
push 0x40cc10
mov eax, dword [eax + 0x330]
push eax
push 0x408dc6
call fcn.00407070
add esp, 0x10
mov ebx, dword [esp + 0x5c]
test ebx, ebx
je 0x40d359
mov dword [esp + 0x1c], 0
lea edi, [esp + 0x58]
lea esi, [esp + 0x54]
cmp dword [esp + 0x1c], ebx
jge 0x40cd28
lea esi, [esi]
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x1c]
mov dl, byte [esp + 0x1c]
xor byte [ecx + eax], dl
inc ecx
mov dword [esp + 0x1c], ecx
cmp ecx, ebx
jl 0x40cd10
mov eax, dword [esp + 0x58]
mov dword [0x44e920], 0
mov dword [0x44e930], 0
mov dword [0x44e940], 0
add esp, 0xfffffffc
push esi
push 0x6df1c0
push eax
call fcn.00403f1c
add esp, 0x10
mov esi, dword [esp + 0x54]
test eax, eax
jle 0x40d2ff
add eax, dword [esp + 0x58]
mov dword [esp + 0x58], eax
mov ecx, 0x6df1c0
xor ebx, ebx
mov ebp, dword [eax]
cmp ebx, esi
jge 0x40cd8a
mov edx, esi
nop
xor eax, eax
mov al, byte [ecx]
add ebx, eax
inc ecx
dec edx
jne 0x40cd80
cmp ebp, ebx
jne 0x40cd92
mov eax, esi
jmp 0x40cda4
mov eax, dword [0x6df150]
mov eax, dword [eax + 0x2f8]
mov dword [0x44e950], eax
xor eax, eax
add dword [edi], 4
test eax, eax
je 0x40d359
mov edx, dword [esp + 0x58]
lea eax, [esp + 0x50]
mov dword [0x44e920], 0
mov dword [0x44e930], 0
mov dword [0x44e940], 0
add esp, 0xfffffffc
push eax
push 0x44ef60
push edx
call fcn.00403f1c
add esp, 0x10
mov esi, dword [esp + 0x50]
test eax, eax
jle 0x40d2ff
add eax, dword [esp + 0x58]
mov dword [esp + 0x58], eax
mov ecx, 0x44ef60
xor ebx, ebx
mov ebp, dword [eax]
cmp ebx, esi
jge 0x40ce1a
mov edx, esi
lea esi, [esi]
xor eax, eax
mov al, byte [ecx]
add ebx, eax
inc ecx
dec edx
jne 0x40ce10
cmp ebp, ebx
jne 0x40ce22
mov eax, esi
jmp 0x40ce34
mov eax, dword [0x6df150]
mov eax, dword [eax + 0x2f8]
mov dword [0x44e950], eax
xor eax, eax
add dword [edi], 4
test eax, eax
je 0x40d359
mov edx, dword [esp + 0x58]
lea eax, [esp + 0x4c]
mov dword [0x44e920], 0
mov dword [0x44e930], 0
mov dword [0x44e940], 0
add esp, 0xfffffffc
push eax
push 0x5fd520
push edx
call fcn.00403f1c
add esp, 0x10
mov esi, dword [esp + 0x4c]
test eax, eax
jle 0x40d2ff
add eax, dword [esp + 0x58]
mov dword [esp + 0x58], eax
mov ecx, 0x5fd520
xor ebx, ebx
mov ebp, dword [eax]
cmp ebx, esi
jge 0x40ceaa
mov edx, esi
lea esi, [esi]
xor eax, eax
mov al, byte [ecx]
add ebx, eax
inc ecx
dec edx
jne 0x40cea0
cmp ebp, ebx
jne 0x40ceb2
mov eax, esi
jmp 0x40cec4
mov eax, dword [0x6df150]
mov eax, dword [eax + 0x2f8]
mov dword [0x44e950], eax
xor eax, eax
add dword [edi], 4
test eax, eax
je 0x40d359
mov edx, dword [esp + 0x58]
lea eax, [esp + 0x48]
mov dword [0x44e920], 0
mov dword [0x44e930], 0
mov dword [0x44e940], 0
add esp, 0xfffffffc
push eax
push 0x4effe0
push edx
call fcn.00403f1c
add esp, 0x10
mov esi, dword [esp + 0x48]
test eax, eax
jle 0x40d2ff
add eax, dword [esp + 0x58]
mov dword [esp + 0x58], eax
mov ecx, 0x4effe0
xor ebx, ebx
mov ebp, dword [eax]
cmp ebx, esi
jge 0x40cf3a
mov edx, esi
lea esi, [esi]
xor eax, eax
mov al, byte [ecx]
add ebx, eax
inc ecx
dec edx
jne 0x40cf30
cmp ebp, ebx
jne 0x40cf42
mov eax, esi
jmp 0x40cf54
mov eax, dword [0x6df150]
mov eax, dword [eax + 0x2f8]
mov dword [0x44e950], eax
xor eax, eax
add dword [edi], 4
test eax, eax
je 0x40d359
mov edx, dword [esp + 0x58]
lea eax, [esp + 0x44]
mov dword [0x44e920], 0
mov dword [0x44e930], 0
mov dword [0x44e940], 0
add esp, 0xfffffffc
push eax
push 0x4f0480
push edx
call fcn.00403f1c
add esp, 0x10
mov esi, dword [esp + 0x44]
test eax, eax
jle 0x40d2ff
add eax, dword [esp + 0x58]
mov dword [esp + 0x58], eax
mov ecx, 0x4f0480
xor ebx, ebx
mov ebp, dword [eax]
cmp ebx, esi
jge 0x40cfca
mov edx, esi
lea esi, [esi]
xor eax, eax
mov al, byte [ecx]
add ebx, eax
inc ecx
dec edx
jne 0x40cfc0
cmp ebp, ebx
jne 0x40cfd2
mov eax, esi
jmp 0x40cfe4
mov eax, dword [0x6df150]
mov eax, dword [eax + 0x2f8]
mov dword [0x44e950], eax
xor eax, eax
add dword [edi], 4
test eax, eax
je 0x40d359
mov edx, dword [esp + 0x58]
lea eax, [esp + 0x40]
mov dword [0x44e920], 0
mov dword [0x44e930], 0
mov dword [0x44e940], 0
add esp, 0xfffffffc
push eax
push 0x5366e0
push edx
call fcn.00403f1c
add esp, 0x10
mov esi, dword [esp + 0x40]
test eax, eax
jle 0x40d2ff
add eax, dword [esp + 0x58]
mov dword [esp + 0x58], eax
mov ecx, 0x5366e0
xor ebx, ebx
mov ebp, dword [eax]
cmp ebx, esi
jge 0x40d05a
mov edx, esi
lea esi, [esi]
xor eax, eax
mov al, byte [ecx]
add ebx, eax
inc ecx
dec edx
jne 0x40d050
cmp ebp, ebx
jne 0x40d062
mov eax, esi
jmp 0x40d074
mov eax, dword [0x6df150]
mov eax, dword [eax + 0x2f8]
mov dword [0x44e950], eax
xor eax, eax
add dword [edi], 4
test eax, eax
je 0x40d359
mov edx, dword [esp + 0x58]
lea eax, [esp + 0x3c]
mov dword [0x44e920], 0
mov dword [0x44e930], 0
mov dword [0x44e940], 0
add esp, 0xfffffffc
push eax
push 0x537190
push edx
call fcn.00403f1c
add esp, 0x10
mov esi, dword [esp + 0x3c]
test eax, eax
jle 0x40d2ff
add eax, dword [esp + 0x58]
mov dword [esp + 0x58], eax
mov ecx, 0x537190
xor ebx, ebx
mov ebp, dword [eax]
cmp ebx, esi
jge 0x40d0ea
mov edx, esi
lea esi, [esi]
xor eax, eax
mov al, byte [ecx]
add ebx, eax
inc ecx
dec edx
jne 0x40d0e0
cmp ebp, ebx
jne 0x40d0f2
mov eax, esi
jmp 0x40d104
mov eax, dword [0x6df150]
mov eax, dword [eax + 0x2f8]
mov dword [0x44e950], eax
xor eax, eax
add dword [edi], 4
test eax, eax
je 0x40d359
mov edx, dword [esp + 0x58]
lea eax, [esp + 0x38]
mov dword [0x44e920], 0
mov dword [0x44e930], 0
mov dword [0x44e940], 0
add esp, 0xfffffffc
push eax
push 0x4efbc0
push edx
call fcn.00403f1c
add esp, 0x10
mov esi, dword [esp + 0x38]
test eax, eax
jle 0x40d2ff
add eax, dword [esp + 0x58]
mov dword [esp + 0x58], eax
mov ecx, 0x4efbc0
xor ebx, ebx
mov ebp, dword [eax]
cmp ebx, esi
jge 0x40d17a
mov edx, esi
lea esi, [esi]
xor eax, eax
mov al, byte [ecx]
add ebx, eax
inc ecx
dec edx
jne 0x40d170
cmp ebp, ebx
jne 0x40d182
mov eax, esi
jmp 0x40d194
mov eax, dword [0x6df150]
mov eax, dword [eax + 0x2f8]
mov dword [0x44e950], eax
xor eax, eax
add dword [edi], 4
test eax, eax
je 0x40d359
mov edx, dword [esp + 0x58]
lea eax, [esp + 0x34]
mov dword [0x44e920], 0
mov dword [0x44e930], 0
mov dword [0x44e940], 0
add esp, 0xfffffffc
push eax
push 0x4f06a0
push edx
call fcn.00403f1c
add esp, 0x10
mov esi, dword [esp + 0x34]
test eax, eax
jle 0x40d2ff
add eax, dword [esp + 0x58]
mov dword [esp + 0x58], eax
mov ecx, 0x4f06a0
xor ebx, ebx
mov ebp, dword [eax]
cmp ebx, esi
jge 0x40d20a
mov edx, esi
lea esi, [esi]
xor eax, eax
mov al, byte [ecx]
add ebx, eax
inc ecx
dec edx
jne 0x40d200
cmp ebp, ebx
jne 0x40d212
mov eax, esi
jmp 0x40d224
mov eax, dword [0x6df150]
mov eax, dword [eax + 0x2f8]
mov dword [0x44e950], eax
xor eax, eax
add dword [edi], 4
test eax, eax
je 0x40d359
mov edx, dword [esp + 0x58]
lea eax, [esp + 0x30]
mov dword [0x44e920], 0
mov dword [0x44e930], 0
mov dword [0x44e940], 0
add esp, 0xfffffffc
push eax
push 0x536b20
push edx
call fcn.00403f1c
add esp, 0x10
mov esi, dword [esp + 0x30]
test eax, eax
jle 0x40d2ff
add eax, dword [esp + 0x58]
mov dword [esp + 0x58], eax
mov ecx, 0x536b20
xor ebx, ebx
mov ebp, dword [eax]
cmp ebx, esi
jge 0x40d29a
mov edx, esi
lea esi, [esi]
xor eax, eax
mov al, byte [ecx]
add ebx, eax
inc ecx
dec edx
jne 0x40d290
cmp ebp, ebx
jne 0x40d2a2
mov eax, esi
jmp 0x40d2b4
mov eax, dword [0x6df150]
mov eax, dword [eax + 0x2f8]
mov dword [0x44e950], eax
xor eax, eax
add dword [edi], 4
test eax, eax
je 0x40d359
mov edx, dword [esp + 0x58]
lea eax, [esp + 0x2c]
mov dword [0x44e920], 0
mov dword [0x44e930], 0
mov dword [0x44e940], 0
add esp, 0xfffffffc
push eax
push 0x699080
push edx
call fcn.00403f1c
add esp, 0x10
mov esi, dword [esp + 0x2c]
test eax, eax
jg 0x40d311
mov eax, dword [0x6df150]
mov eax, dword [eax + 0x304]
mov dword [0x44e950], eax
jmp 0x40d359
add eax, dword [esp + 0x58]
mov dword [esp + 0x58], eax
mov ecx, 0x699080
xor ebx, ebx
mov ebp, dword [eax]
cmp ebx, esi
jge 0x40d332
mov edx, esi
xor eax, eax
mov al, byte [ecx]
add ebx, eax
inc ecx
dec edx
jne 0x40d328
cmp ebp, ebx
jne 0x40d340
mov eax, esi
jmp 0x40d352
mov eax, dword [0x6df150]
mov eax, dword [eax + 0x2f8]
mov dword [0x44e950], eax
xor eax, eax
add dword [edi], 4
test eax, eax
jne 0x40d360
xor eax, eax
jmp 0x40d599
xor edx, edx
lea ebp, [esp + 0x60]
mov al, byte [edx + 0x4f06a0]
cmp al, 7
jbe 0x40d372
inc al
cmp al, 0xf
jbe 0x40d378
inc al
cmp al, 0x17
jbe 0x40d37e
inc al
cmp al, 0x1f
jbe 0x40d384
inc al
cmp al, 0x27
jbe 0x40d38a
inc al
cmp al, 0x2f
jbe 0x40d390
inc al
cmp al, 0x37
jbe 0x40d396
inc al
cmp al, 0x3f
jbe 0x40d39c
inc al
cmp al, 0x47
jbe 0x40d3a2
inc al
cmp al, 0x4f
jbe 0x40d3a8
inc al
cmp al, 0x57
jbe 0x40d3ae
inc al
cmp al, 0x5f
jbe 0x40d3b4
inc al
cmp al, 0x67
jbe 0x40d3ba
inc al
cmp al, 0x6f
jbe 0x40d3c0
inc al
cmp al, 0x77
jbe 0x40d3c6
inc al
mov byte [edx + 0x4f06a0], al
inc edx
cmp edx, 0x46000
jl 0x40d366
xor edx, edx
mov al, byte [edx + 0x699080]
cmp al, 7
jbe 0x40d3e3
inc al
cmp al, 0xf
jbe 0x40d3e9
inc al
cmp al, 0x17
jbe 0x40d3ef
inc al
cmp al, 0x1f
jbe 0x40d3f5
inc al
cmp al, 0x27
jbe 0x40d3fb
inc al
cmp al, 0x2f
jbe 0x40d401
inc al
cmp al, 0x37
jbe 0x40d407
inc al
cmp al, 0x3f
jbe 0x40d40d
inc al
cmp al, 0x47
jbe 0x40d413
inc al
cmp al, 0x4f
jbe 0x40d419
inc al
cmp al, 0x57
jbe 0x40d41f
inc al
cmp al, 0x5f
jbe 0x40d425
inc al
cmp al, 0x67
jbe 0x40d42b
inc al
cmp al, 0x6f
jbe 0x40d431
inc al
cmp al, 0x77
jbe 0x40d437
inc al
mov byte [edx + 0x699080], al
inc edx
cmp edx, 0x46000
jl 0x40d3d7
mov dword [esp + 0x1c], 0x4efbc0
mov esi, dword [esp + 0x1c]
mov ebx, ebp
mov edi, ebp
xor edx, edx
cld
mov ecx, 0x100
rep movsd dword es:[edi], dword [esi]
test edx, edx
je 0x40d480
cmp edx, 0x7f
jg 0x40d480
test dl, 7
jne 0x40d480
mov edi, dword [esp + 0x1c]
mov dword [edi], 0
add edi, 4
mov dword [esp + 0x1c], edi
inc edx
mov eax, dword [ebx]
mov ecx, dword [esp + 0x1c]
mov dword [ecx], eax
add ecx, 4
mov dword [esp + 0x1c], ecx
add ebx, 4
inc edx
cmp edx, 0xff
jle 0x40d460
mov ebx, 0x536b20
mov eax, ebp
mov esi, ebx
mov edi, eax
xor edx, edx
cld
mov ecx, 0x100
rep movsd dword es:[edi], dword [esi]
test edx, edx
je 0x40d4c8
cmp edx, 0x7f
jg 0x40d4c8
test dl, 7
jne 0x40d4c8
mov dword [ebx], 0
add ebx, 4
inc edx
mov eax, dword [ebp]
mov dword [ebx], eax
add ebx, 4
add ebp, 4
inc edx
cmp edx, 0xff
jle 0x40d4b0
mov dword [esp + 0x1c], 0
mov edx, 0x44ef60
lea esi, [esi]
mov ecx, dword [esp + 0x1c]
mov al, byte [ecx + edx]
test al, al
je 0x40d505
jl 0x40d505
or al, 0x78
mov byte [ecx + 0x44ef60], al
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 0x9ffff
jle 0x40d4f0
mov dword [esp + 0x1c], 0
mov eax, 0x5fd520
mov edi, dword [esp + 0x1c]
or byte [edi + eax], 0x80
inc edi
mov dword [esp + 0x1c], edi
cmp edi, 0x4ffff
jle 0x40d520
mov edi, 0x57d250
mov esi, 0x6df1c0
mov ebp, 0x6df1c0
mov ebx, 0x57d250
cld
mov ecx, 0x4000
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0x1c], 0
lea esi, [esi]
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x1c]
shl eax, 0xc
mov edx, dword [edi*4 + 0x4240d4]
shl edx, 0xc
lea edi, [ebp + eax]
lea esi, [ebx + edx]
cld
mov ecx, 0x400
rep movsd dword es:[edi], dword [esi]
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 0xf
jle 0x40d560
call fcn.0040e240
mov eax, 1
pop ebx
pop esi
pop edi
pop ebp
add esp, 0x56c
ret