Function at 0x40a020
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x204
mov eax, dword [0x45c040]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, edx
mov dword [ebp - 0x28], 0
push ebx
push esi
push edi
lea esi, [eax + 0x40]
mov dword [ebp - 0x204], eax
push esi
mov edi, ecx
call fcn.0041b33f
add esp, 4
mov ebx, eax
push esi
push 0
push ebx
call fcn.0041f350
add esp, 0xc
push 0x40
call fcn.0041b33f
add esp, 4
mov esi, eax
push 0x40
push 0
push esi
call fcn.0041f350
add esp, 8
mov edx, 0x40
mov ecx, esi
push 0x44a838
call fcn.00403a00
push 0x100
lea eax, [ebp - 0x200]
push 0
push eax
call fcn.0041f350
add esp, 0x14
lea ecx, [ebp - 0x200]
mov edx, 0x44a7e4
call fcn.00401160
movups xmm0, xmmword [0x44a940]
push ecx
mov edx, esi
lea ecx, [ebp - 0x200]
movups xmmword [ebp - 0x110], xmm0
call fcn.00401540
mov edx, dword [ebp - 0x204]
mov ecx, ebx
push esi
lea edx, [edx + 0x40]
call fcn.00403a00
push 0x40
push 0
push esi
call fcn.00440bb0
add esp, 0x14
lea eax, [ebp - 0x200]
push 0x100
push 0
push eax
call fcn.00440bb0
add esp, 0xc
push esi
call fcn.0041b33a
mov esi, dword ds:[ebp - 0x204]
lea eax, [ebp - 0x28]
add esp, 4
push 0
push eax
push esi
lea eax, [ebx + 0x40]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
cmp eax, 1
je 0x40a16a
lea eax, [esi + 0x40]
push eax
push 0
push ebx
call fcn.00440bb0
add esp, 0xc
push 0x20
push 0
push 0x45f660
call fcn.00440bb0
add esp, 0xc
push ebx
call fcn.0041b33a
add esp, 4
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0041b32c
mov esp, ebp
pop ebp
ret
cmp esi, dword [ebp - 0x28]
jne 0x40a12b
push 0xd7
xorps xmm0, xmm0
lea eax, [ebp - 0xff]
push 0
push eax
movups xmmword [ebp - 0x24], xmm0
movups xmmword [ebp - 0x14], xmm0
call fcn.0041f350
xorps xmm0, xmm0
lea esi, [ebp - 0x100]
mov ecx, 0x30
movlpd qword [ebp - 0x100], xmm0
lea edi, [ebp - 0xf8]
add esp, 0xc
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x204]
xor eax, eax
xor esi, esi
mov dword [ebp - 0x30], 0x20
mov dword [ebp - 0x34], 0x88
mov dword [ebp - 0x38], 0
add edi, 0x40
je 0x40a1fa
mov cl, byte ds:[ebx + esi]
xor byte [ebp + eax - 0x100], cl
inc eax
cmp eax, dword [ebp - 0x34]
jl 0x40a1f5
lea ecx, [ebp - 0x100]
lfence
call fcn.00403440
xor eax, eax
inc esi
cmp esi, edi
jb 0x40a1d2
mov dword [ebp - 0x38], eax
lea ecx, [ebp - 0x100]
xor byte [ebp + eax - 0x100], 6
mov eax, dword [ebp - 0x34]
xor byte [ebp + eax - 0x101], 0x80
call fcn.00403440
mov eax, dword ds:[ebp - 0x30]
test eax, eax
jle 0x40a238
push eax
lea eax, [ebp - 0x100]
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.0041edd0
add esp, 0xc
push edi
push 0
push ebx
call fcn.00440bb0
add esp, 0xc
lea eax, [ebp - 0x100]
push 0xd8
push 0
push eax
call fcn.00440bb0
add esp, 0xc
push ebx
call fcn.0041b33a
xor edi, edi
add esp, 4
xor esi, esi
lea ebx, [edi + 0x20]
nop
lea esi, [esi - 1]
movzx eax, byte [esi + 0x45f680]
movzx edx, byte [ebp + esi - 4]
sub edx, eax
mov eax, edx
not eax
sar eax, 8
lea ecx, [edx - 1]
sar ecx, 8
and ecx, eax
and edi, ecx
or edi, edx
sub ebx, 1
jne 0x40a270
push 0x20
lea eax, [ebp - 0x24]
push ebx
push eax
call fcn.00440bb0
add esp, 0xc
push 0x20
push ebx
push 0x45f660
call fcn.00440bb0
mov ecx, dword [ebp - 4]
lea eax, [edi - 1]
add esp, 0xc
sar eax, 8
sar edi, 8
inc eax
add eax, edi
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.0041b32c
mov esp, ebp
pop ebp
ret