Function at 0x405d40
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x60
mov dword [ebp - 0x60], ecx
mov ecx, dword [ebp - 0x60]
add ecx, 8
call fcn.00408770
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push eax
push 1
push 4
mov ecx, dword [ebp - 0x60]
add ecx, 0x1c
push ecx
call dword [sym.imp.MSVCR90.dll_fread]
add esp, 0x10
cmp eax, 1
jne 0x405da8
mov edx, dword [ebp + 8]
push edx
push 3
push 4
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.MSVCR90.dll_fread]
add esp, 0x10
cmp eax, 3
jne 0x405da8
mov ecx, dword [ebp + 8]
push ecx
push 1
push 4
mov edx, dword [ebp - 0x60]
push edx
call dword [sym.imp.MSVCR90.dll_fread]
add esp, 0x10
cmp eax, 1
je 0x405db8
mov ecx, dword [ebp - 0x60]
call fcn.00401160
or eax, 0xffffffff
jmp 0x40611e
cmp dword [0x618160], 0
je 0x405f77
mov eax, dword [ebp - 0x60]
add eax, 0x1c
mov dword [ebp - 0x10], eax
mov ecx, dword [ebp - 0x10]
add ecx, 3
mov dword [ebp - 8], ecx
mov edx, dword [ebp - 8]
mov al, byte [edx]
mov byte [ebp - 9], al
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x10]
mov al, byte [edx]
mov byte [ecx], al
mov ecx, dword [ebp - 8]
sub ecx, 1
mov dword [ebp - 8], ecx
mov edx, dword [ebp - 0x10]
mov al, byte [ebp - 9]
mov byte [edx], al
mov ecx, dword [ebp - 0x10]
add ecx, 1
mov dword [ebp - 0x10], ecx
mov edx, dword [ebp - 8]
mov al, byte [edx]
mov byte [ebp - 9], al
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x10]
mov al, byte [edx]
mov byte [ecx], al
mov ecx, dword [ebp - 0x10]
mov dl, byte [ebp - 9]
mov byte [ecx], dl
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebp - 0x1c]
add ecx, 3
mov dword [ebp - 0x14], ecx
mov edx, dword [ebp - 0x14]
mov al, byte [edx]
mov byte [ebp - 0x15], al
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x1c]
mov al, byte [edx]
mov byte [ecx], al
mov ecx, dword [ebp - 0x14]
sub ecx, 1
mov dword [ebp - 0x14], ecx
mov edx, dword [ebp - 0x1c]
mov al, byte [ebp - 0x15]
mov byte [edx], al
mov ecx, dword [ebp - 0x1c]
add ecx, 1
mov dword [ebp - 0x1c], ecx
mov edx, dword [ebp - 0x14]
mov al, byte [edx]
mov byte [ebp - 0x15], al
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x1c]
mov al, byte [edx]
mov byte [ecx], al
mov ecx, dword [ebp - 0x1c]
mov dl, byte [ebp - 0x15]
mov byte [ecx], dl
mov eax, dword [ebp - 4]
mov dword [ebp - 0x28], eax
mov ecx, dword [ebp - 0x28]
add ecx, 3
mov dword [ebp - 0x20], ecx
mov edx, dword [ebp - 0x20]
mov al, byte [edx]
mov byte [ebp - 0x21], al
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x28]
mov al, byte [edx]
mov byte [ecx], al
mov ecx, dword [ebp - 0x20]
sub ecx, 1
mov dword [ebp - 0x20], ecx
mov edx, dword [ebp - 0x28]
mov al, byte [ebp - 0x21]
mov byte [edx], al
mov ecx, dword [ebp - 0x28]
add ecx, 1
mov dword [ebp - 0x28], ecx
mov edx, dword [ebp - 0x20]
mov al, byte [edx]
mov byte [ebp - 0x21], al
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x28]
mov al, byte [edx]
mov byte [ecx], al
mov ecx, dword [ebp - 0x28]
mov dl, byte [ebp - 0x21]
mov byte [ecx], dl
mov eax, dword [ebp - 4]
add eax, 4
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x34]
add ecx, 3
mov dword [ebp - 0x2c], ecx
mov edx, dword [ebp - 0x2c]
mov al, byte [edx]
mov byte [ebp - 0x2d], al
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x34]
mov al, byte [edx]
mov byte [ecx], al
mov ecx, dword [ebp - 0x2c]
sub ecx, 1
mov dword [ebp - 0x2c], ecx
mov edx, dword [ebp - 0x34]
mov al, byte [ebp - 0x2d]
mov byte [edx], al
mov ecx, dword [ebp - 0x34]
add ecx, 1
mov dword [ebp - 0x34], ecx
mov edx, dword [ebp - 0x2c]
mov al, byte [edx]
mov byte [ebp - 0x2d], al
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x34]
mov al, byte [edx]
mov byte [ecx], al
mov ecx, dword [ebp - 0x34]
mov dl, byte [ebp - 0x2d]
mov byte [ecx], dl
mov eax, dword [ebp - 4]
add eax, 8
mov dword [ebp - 0x40], eax
mov ecx, dword [ebp - 0x40]
add ecx, 3
mov dword [ebp - 0x38], ecx
mov edx, dword [ebp - 0x38]
mov al, byte [edx]
mov byte [ebp - 0x39], al
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x40]
mov al, byte [edx]
mov byte [ecx], al
mov ecx, dword [ebp - 0x38]
sub ecx, 1
mov dword [ebp - 0x38], ecx
mov edx, dword [ebp - 0x40]
mov al, byte [ebp - 0x39]
mov byte [edx], al
mov ecx, dword [ebp - 0x40]
add ecx, 1
mov dword [ebp - 0x40], ecx
mov edx, dword [ebp - 0x38]
mov al, byte [edx]
mov byte [ebp - 0x39], al
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x40]
mov al, byte [edx]
mov byte [ecx], al
mov ecx, dword [ebp - 0x40]
mov dl, byte [ebp - 0x39]
mov byte [ecx], dl
mov eax, dword [ebp - 0x60]
cmp dword [eax + 0x1c], 0
jge 0x405f90
mov ecx, dword [ebp - 0x60]
call fcn.00401160
or eax, 0xffffffff
jmp 0x40611e
mov ecx, dword [ebp - 0x60]
cmp dword [ecx], 0
jle 0x40610f
xor ecx, ecx
mov edx, dword [ebp - 0x60]
mov eax, dword [edx]
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x60]
mov ecx, dword [ebp - 0x58]
mov dword [eax + 4], ecx
mov edx, dword [ebp - 0x60]
cmp dword [edx + 4], 0
jne 0x405fdf
mov ecx, dword [ebp - 0x60]
call fcn.00401160
or eax, 0xffffffff
jmp 0x40611e
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [ebp - 0x60]
mov edx, dword [ecx]
push edx
push 4
mov eax, dword [ebp - 0x60]
mov ecx, dword [eax + 4]
push ecx
call dword [sym.imp.MSVCR90.dll_fread]
add esp, 0x10
mov edx, dword [ebp - 0x60]
cmp eax, dword [edx]
je 0x406012
mov ecx, dword [ebp - 0x60]
call fcn.00401160
or eax, 0xffffffff
jmp 0x40611e
cmp dword [0x618160], 0
je 0x406097
mov dword [ebp - 0x44], 0
jmp 0x40602d
mov eax, dword [ebp - 0x44]
add eax, 1
mov dword [ebp - 0x44], eax
mov ecx, dword [ebp - 0x60]
mov edx, dword [ebp - 0x44]
cmp edx, dword [ecx]
jge 0x406097
mov eax, dword [ebp - 0x60]
mov ecx, dword [eax + 4]
mov edx, dword [ebp - 0x44]
lea eax, [ecx + edx*4]
mov dword [ebp - 0x50], eax
mov ecx, dword [ebp - 0x50]
add ecx, 3
mov dword [ebp - 0x48], ecx
mov edx, dword [ebp - 0x48]
mov al, byte [edx]
mov byte [ebp - 0x49], al
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp - 0x50]
mov al, byte [edx]
mov byte [ecx], al
mov ecx, dword [ebp - 0x48]
sub ecx, 1
mov dword [ebp - 0x48], ecx
mov edx, dword [ebp - 0x50]
mov al, byte [ebp - 0x49]
mov byte [edx], al
mov ecx, dword [ebp - 0x50]
add ecx, 1
mov dword [ebp - 0x50], ecx
mov edx, dword [ebp - 0x48]
mov al, byte [edx]
mov byte [ebp - 0x49], al
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp - 0x50]
mov al, byte [edx]
mov byte [ecx], al
mov ecx, dword [ebp - 0x50]
mov dl, byte [ebp - 0x49]
mov byte [ecx], dl
jmp 0x406024
mov dword [ebp - 0x54], 0
jmp 0x4060a9
mov eax, dword [ebp - 0x54]
add eax, 1
mov dword [ebp - 0x54], eax
mov ecx, dword [ebp - 0x60]
mov edx, dword [ebp - 0x54]
cmp edx, dword [ecx]
jge 0x4060d1
mov eax, dword [ebp - 0x60]
mov ecx, dword [eax + 4]
mov edx, dword [ebp - 0x54]
cmp dword [ecx + edx*4], 0
jge 0x4060cf
mov ecx, dword [ebp - 0x60]
call fcn.00401160
or eax, 0xffffffff
jmp 0x40611e
jmp 0x4060a0
mov eax, dword [ebp - 0x60]
cmp dword [eax], 3
jge 0x40610d
mov ecx, dword [ebp - 0x60]
call fcn.004087c0
mov ecx, dword [ebp - 0x60]
mov edx, dword [ecx + 4]
mov dword [ebp - 0x5c], edx
mov eax, dword [ebp - 0x5c]
push eax
call sub.MSVCR90.dll_void___cdecl_operator_delete_void__
add esp, 4
mov ecx, dword [ebp - 0x60]
mov dword [ecx + 4], 0
mov edx, dword [ebp - 0x60]
mov dword [edx], 0
xor eax, eax
jmp 0x40611e
jmp 0x40611c
mov ecx, dword [ebp - 0x60]
call fcn.00401160
or eax, 0xffffffff
jmp 0x40611e
xor eax, eax
mov esp, ebp
pop ebp
ret 4