Function at 0x410500
Capabilities:
Read file on windows
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x884
mov eax, dword [0x42d0f0]
xor eax, esp
mov dword [esp + 0x880], eax
push ebx
push esi
mov esi, dword [esp + 0x890]
lea eax, [esp + 0x64]
push eax
mov eax, dword [esi + 0x20]
lea ecx, [esp + 0xc]
push ecx
push 0x200
lea edx, [esp + 0x94]
xor ebx, ebx
push edx
push eax
mov dword [esp + 0x80], ebx
mov dword [esp + 0x84], ebx
mov dword [esp + 0x88], ebx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x410fb5
cmp dword [esp + 8], 0x200
jne 0x410fb5
mov ecx, 0xaa55
cmp word [esp + 0x286], cx
jne 0x41058f
mov al, byte [esp + 0x88]
cmp al, 0xeb
jne 0x4105bb
cmp byte [esp + 0x8a], 0x90
je 0x4105bf
mov ecx, dword [esi + 0x22c]
push str.This_is_not_a_FAT_disk__different_cookie_.
push ebx
push 2
call ecx
add esp, 0xc
pop esi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x880]
xor ecx, esp
call fcn.00411002
add esp, 0x884
ret
cmp al, 0xe9
jne 0x41058f
movzx ecx, word [esp + 0x93]
mov eax, ecx
cdq
mov dword [esp + 0x1c], eax
or eax, edx
mov dword [esp + 0x20], edx
jne 0x410602
mov edx, dword [esi + 0x22c]
push str.This_is_not_a_FAT_disk__BytesPerSector_is_zero_.
push ebx
push 2
call edx
add esp, 0xc
pop esi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x880]
xor ecx, esp
call fcn.00411002
add esp, 0x884
ret
movzx eax, byte [esp + 0x95]
cdq
mov dword [esp + 0x78], eax
mov dword [esp + 0x24], eax
or eax, edx
mov dword [esp + 0x7c], edx
mov dword [esp + 0x28], edx
jne 0x41064b
mov eax, dword [esi + 0x22c]
push str.This_is_not_a_FAT_disk__SectorsPerCluster_is_zero_.
push ebx
push 2
call eax
add esp, 0xc
pop esi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x880]
xor ecx, esp
call fcn.00411002
add esp, 0x884
ret
movzx eax, word [esp + 0x9b]
cdq
push ebp
push edi
mov edi, eax
mov ebp, edx
mov edx, edi
or edx, ebp
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], ebp
jne 0x410679
mov edi, dword [esp + 0xb0]
xor ebp, ebp
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], ebp
movzx eax, word [esp + 0xa1]
shl eax, 5
lea eax, [eax + ecx - 1]
cdq
idiv ecx
cdq
mov dword [esp + 0x3c], eax
movzx eax, word [esp + 0xa6]
mov dword [esp + 0x40], edx
cdq
mov ecx, eax
mov ebx, edx
mov edx, ecx
or edx, ebx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], ebx
jne 0x4106c0
mov ecx, dword [esp + 0xb4]
xor ebx, ebx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], ebx
movzx eax, byte [esp + 0xa0]
push ebx
cdq
push ecx
push edx
push eax
call fcn.00412be0
mov ecx, eax
movzx eax, word [esp + 0x9e]
mov ebx, edx
cdq
mov dword [esp + 0x14], eax
add eax, ecx
mov dword [esp + 0x18], edx
adc edx, ebx
add eax, dword [esp + 0x3c]
mov dword [esp + 0x8c], ebx
mov ebx, eax
mov eax, dword [esp + 0x40]
adc edx, eax
sub edi, dword [esp + 0x14]
mov dword [esp + 0x44], ebx
sbb ebp, dword [esp + 0x18]
sub edi, ecx
sbb ebp, dword [esp + 0x8c]
sub edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x80]
sbb ebp, eax
mov eax, dword [esp + 0x84]
push eax
push ecx
push ebp
push edi
mov dword [esp + 0x58], edx
mov dword [esp + 0x64], edi
mov dword [esp + 0x68], ebp
call fcn.00412e10
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], edx
mov ebp, 0x20
test edx, edx
ja 0x41079d
jb 0x410756
cmp eax, 0xff5
jae 0x410773
mov edx, dword [esi + 0x22c]
push str.This_is_a_FAT12_disk.
push 0
push 0
mov dword [esi + 0xfc], 0xc
call edx
jmp 0x4107b4
test edx, edx
ja 0x41079d
jb 0x410780
cmp eax, 0xfff5
jae 0x41079d
mov eax, dword [esi + 0x22c]
push str.This_is_a_FAT16_disk.
push 0
push 0
mov dword [esi + 0xfc], 0x10
call eax
jmp 0x4107b4
mov ecx, dword [esi + 0x22c]
push str.This_is_a_FAT32_disk.
push 0
push 0
mov dword [esi + 0xfc], ebp
call ecx
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x3c]
add esp, 0xc
push edx
mov edx, dword [esp + 0x30]
push eax
push ecx
push edx
call fcn.00412be0
mov ecx, dword [esp + 0x60]
mov dword [esi + 0x180], eax
mov eax, dword [esp + 0x5c]
mov dword [esi + 0x184], edx
push 8
lea edx, [esp + 0x97]
push edx
mov dword [esi + 0x178], eax
lea eax, [esp + 0x298]
push 0x200
push eax
mov dword [esi + 0x17c], ecx
call fcn.0041332f
mov edx, dword [esi + 0x22c]
lea ecx, [esp + 0x2a0]
push ecx
push str.__OEMName:__S
push 0
push 2
mov byte [esp + 0x2b8], 0
call edx
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
mov edx, dword [esi + 0x22c]
push eax
push ecx
push str.__BytesPerSector:__I64u
push 0
push 2
call edx
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x68]
mov edx, dword [esi + 0x22c]
push eax
push ecx
push str.__TotalSectors:__I64u
push 0
push 2
call edx
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x74]
mov edx, dword [esi + 0x22c]
add esp, 0x48
push eax
push ecx
push str.__SectorsPerCluster:__I64u
push 0
push 2
call edx
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x50]
mov edx, dword [esi + 0x22c]
push eax
push ecx
push str.__RootDirSectors:__I64u
push 0
push 2
call edx
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x74]
mov edx, dword [esi + 0x22c]
push eax
push ecx
push str.__FATSz:__I64u
push 0
push 2
call edx
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x80]
push eax
push ecx
mov edx, dword [esi + 0x22c]
push str.__FirstDataSector:__I64u
push 0
push 2
call edx
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0xa4]
mov edx, dword [esi + 0x22c]
add esp, 0x50
push eax
push ecx
push str.__DataSec:__I64u
push 0
push 2
call edx
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x70]
mov edx, dword [esi + 0x22c]
push eax
push ecx
push str.__CountofClusters:__I64u
push 0
push 2
call edx
movzx eax, word [esp + 0xc6]
mov ecx, dword [esi + 0x22c]
push eax
push str.__ReservedSectors:__lu
push 0
push 2
call ecx
movzx edx, byte [esp + 0xd8]
mov eax, dword [esi + 0x22c]
push edx
push str.__NumberFATs:__lu
push 0
push 2
call eax
movzx ecx, word [esp + 0xe9]
mov edx, dword [esi + 0x22c]
add esp, 0x48
push ecx
push str.__RootEntriesCount:__lu
push 0
push 2
call edx
movzx eax, byte [esp + 0xb5]
mov ecx, dword [esi + 0x22c]
push eax
push str.__MediaType:__X
push 0
push 2
call ecx
movzx edx, word [esp + 0xc8]
mov eax, dword [esi + 0x22c]
push edx
push str.__SectorsPerTrack:__lu
push 0
push 2
call eax
movzx ecx, word [esp + 0xda]
mov edx, dword [esi + 0x22c]
push ecx
push str.__NumberOfHeads:__lu
push 0
push 2
call edx
mov eax, dword [esp + 0xec]
mov ecx, dword [esi + 0x22c]
add esp, 0x40
push eax
push str.__HiddenSectors:__lu
push 0
push 2
call ecx
add esp, 0x10
cmp dword [esi + 0xfc], ebp
je 0x410ab3
movzx edx, byte [esp + 0xb4]
mov eax, dword [esi + 0x22c]
push edx
push str.__BS_DrvNum:__u
push 0
push 2
call eax
movzx ecx, byte [esp + 0xc6]
mov edx, dword [esi + 0x22c]
push ecx
push str.__BS_BootSig:__u
push 0
push 2
call edx
mov eax, dword [esp + 0xd7]
mov ecx, dword [esi + 0x22c]
push eax
push str.__BS_VolID:__u
push 0
push 2
call ecx
push 0xb
lea edx, [esp + 0xef]
push edx
lea eax, [esp + 0x2c8]
push 0x200
push eax
call fcn.0041332f
mov edx, dword [esi + 0x22c]
add esp, 0x40
lea ecx, [esp + 0x290]
push ecx
push str.__VolLab:__S
push 0
push 2
mov byte [esp + 0x2ab], 0
call edx
push 8
lea eax, [esp + 0xda]
push eax
lea ecx, [esp + 0x2a8]
push 0x200
push ecx
call fcn.0041332f
mov eax, dword [esi + 0x22c]
lea edx, [esp + 0x2b0]
push edx
push str.__FilSysType:__S
push 0
push 2
mov byte [esp + 0x2c8], 0
call eax
add esp, 0x30
jmp 0x410c20
mov ecx, dword [esp + 0xb4]
mov edx, dword [esi + 0x22c]
push ecx
push str.__FATSz32:__lu
push 0
push 2
call edx
movzx eax, word [esp + 0xc8]
mov ecx, dword [esi + 0x22c]
push eax
push str.__ExtFlags:__lu
push 0
push 2
call ecx
movzx edx, word [esp + 0xda]
mov eax, dword [esi + 0x22c]
push edx
push str.__FSVer:__lu
push 0
push 2
call eax
mov ecx, dword [esp + 0xec]
mov edx, dword [esi + 0x22c]
push ecx
push str.__RootClus:__lu
push 0
push 2
call edx
movzx eax, word [esp + 0x100]
mov ecx, dword [esi + 0x22c]
add esp, 0x40
push eax
push str.__FSInfo:__lu
push 0
push 2
call ecx
movzx edx, word [esp + 0xd2]
mov eax, dword [esi + 0x22c]
push edx
push str.__BkBootSec:__lu
push 0
push 2
call eax
movzx ecx, byte [esp + 0xf0]
mov edx, dword [esi + 0x22c]
push ecx
push str.__DrvNum:__lu
push 0
push 2
call edx
movzx eax, byte [esp + 0x102]
mov ecx, dword [esi + 0x22c]
push eax
push str.__BootSig:__lu
push 0
push 2
call ecx
mov edx, dword [esp + 0x113]
mov eax, dword [esi + 0x22c]
add esp, 0x40
push edx
push str.__VolID:__lu
push 0
push 2
call eax
push 0xb
lea ecx, [esp + 0xeb]
push ecx
lea edx, [esp + 0x2a8]
push 0x200
push edx
call fcn.0041332f
mov ecx, dword [esi + 0x22c]
lea eax, [esp + 0x2b0]
push eax
push str.__VolLab:__S
push 0
push 2
mov byte [esp + 0x2cb], 0
call ecx
push 8
lea edx, [esp + 0x116]
push edx
lea eax, [esp + 0x2c8]
push 0x200
push eax
call fcn.0041332f
mov edx, dword [esi + 0x22c]
add esp, 0x40
lea ecx, [esp + 0x290]
push ecx
push str.__FilSysType:__S
push 0
push 2
mov byte [esp + 0x2a8], 0
call edx
add esp, 0x10
mov eax, dword [esi + 0xfc]
cmp eax, 0xc
je 0x410c4b
cmp eax, 0x10
je 0x410c41
cmp eax, ebp
jne 0x410c67
mov edi, dword [esp + 0x5c]
lea edi, [edi*4 + 4]
jmp 0x410c6b
mov edi, dword [esp + 0x5c]
lea edi, [edi + edi + 2]
jmp 0x410c6b
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x60]
mov ecx, eax
add ecx, 1
adc edx, 0
shrd ecx, edx, 1
shr edx, 1
lea edi, [ecx + eax + 1]
jmp 0x410c6b
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x24]
push eax
push ebx
push 0
push edi
call fcn.00412e80
test edx, edx
ja 0x410c85
test eax, eax
jbe 0x410c89
sub ebx, eax
add edi, ebx
push edi
call fcn.00412a5f
add esp, 4
mov dword [esp + 0x64], eax
test eax, eax
jne 0x410cc8
mov ecx, dword [esi + 0x22c]
push str.Error:_malloc___returned_NULL.
push eax
push 2
call ecx
add esp, 0xc
xor eax, eax
pop edi
pop ebp
pop esi
pop ebx
mov ecx, dword [esp + 0x880]
xor ecx, esp
call fcn.00411002
add esp, 0x884
ret
mov ecx, dword [esp + 0x28]
movzx eax, word [esp + 0x9e]
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.00412be0
push edx
push eax
push edi
push str.Reading_FAT___lu_bytes_at_offset_I64u
mov dword [esp + 0x88], edx
mov edx, dword [esi + 0x22c]
push 0
push 2
mov dword [esp + 0x8c], eax
mov dword [esp + 0x94], 0
call edx
mov edx, dword [esp + 0x7c]
add esp, 0x18
lea eax, [esp + 0x6c]
push eax
mov eax, dword [esi + 0x20]
lea ecx, [esp + 0x14]
push ecx
push edi
push edx
push eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x410d6a
push 0x200
lea ecx, [esp + 0x494]
push ecx
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call sym.JkDefrag.exe_SystemErrorStr
mov eax, dword [esi + 0x22c]
lea edx, [esp + 0x49c]
push edx
push str.Error:__s
push 0
push 2
call eax
add esp, 0x1c
jmp 0x410cad
cmp dword [esi + 0xfc], ebp
jne 0x410dc9
mov edx, dword [esp + 0xbc]
lea ecx, [esp + 0x14]
push ecx
push 0
push edx
lea eax, [esp + 0x30]
push eax
push esi
call fcn.0040f690
mov ebp, dword [esp + 0x28]
add esp, 0x14
mov edi, eax
mov ecx, dword [esp + 0x18]
push 0
push ecx
push ebp
push edi
lea edx, [esp + 0x34]
push edx
push esi
call fcn.0040fd40
push edi
call fcn.00412c14
mov eax, dword [esp + 0x80]
push eax
call fcn.00412c14
add esp, 0x20
mov eax, 1
jmp 0x410caf
mov ecx, dword [esp + 0x50]
movzx eax, byte [esp + 0xa0]
push ecx
mov ecx, dword [esp + 0x50]
cdq
push ecx
push edx
push eax
call fcn.00412be0
mov ebx, dword [esp + 0x24]
mov ecx, eax
movzx eax, word [esp + 0x9e]
mov edi, edx
cdq
add ecx, eax
adc edi, edx
mov edx, dword [esp + 0x28]
push edx
push ebx
push edi
push ecx
call fcn.00412be0
mov dword [esp + 0x1c], eax
movzx eax, word [esp + 0xa1]
shl eax, 5
mov edi, edx
cdq
mov dword [esp + 0x20], edi
mov ebp, eax
mov dword [esp + 0x18], edx
test edx, edx
ja 0x410e2a
cmp ebp, 0xffffffff
jbe 0x410e4f
mov eax, dword [esi + 0x22c]
push edx
push ebp
push str.Root_directory_is_too_big___I64u_bytes
push 0
push 2
call eax
mov ecx, dword [esp + 0x78]
push ecx
call fcn.00412c14
add esp, 0x18
jmp 0x410cad
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x60]
push ecx
mov ecx, dword [esp + 0x30]
add edx, 1
push ecx
adc eax, 0
push eax
push edx
call fcn.00412be0
mov ecx, dword [esp + 0x28]
push ecx
push ebx
push edx
push eax
call fcn.00412be0
cmp edi, edx
jb 0x410eb5
ja 0x410e87
cmp dword [esp + 0x1c], eax
jbe 0x410eb5
push edx
mov edx, dword [esp + 0x20]
push eax
mov eax, dword [esi + 0x22c]
push edi
push edx
push str.Trying_to_access__I64u__but_the_last_sector_is_at__I64u
push 0
push 2
call eax
mov ecx, dword [esp + 0x80]
push ecx
call fcn.00412c14
add esp, 0x20
jmp 0x410cad
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
push edx
push ebx
push eax
mov edi, ebp
push ebp
mov dword [esp + 0x20], edi
call fcn.00412e80
test edx, edx
ja 0x410ed4
test eax, eax
jbe 0x410edc
sub edi, eax
add edi, ebx
mov dword [esp + 0x10], edi
push edi
call fcn.00412a5f
mov edi, eax
add esp, 4
test edi, edi
jne 0x410f0d
mov ecx, dword [esi + 0x22c]
push str.Error:_malloc___returned_NULL.
push eax
push 2
call ecx
mov edx, dword [esp + 0x70]
push edx
call fcn.00412c14
add esp, 0x10
jmp 0x410cad
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
push ecx
push eax
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x18]
push eax
push str.Reading_root_directory___lu_bytes_at_offset_I64u.
mov dword [esp + 0x88], ecx
mov ecx, dword [esi + 0x22c]
push 0
push 6
mov dword [esp + 0x94], 0
call ecx
mov ecx, dword [esp + 0x28]
add esp, 0x18
lea edx, [esp + 0x6c]
push edx
mov edx, dword [esi + 0x20]
lea eax, [esp + 0x14]
push eax
push ecx
push edi
push edx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x410d95
push 0x200
lea eax, [esp + 0x494]
push eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call sym.JkDefrag.exe_SystemErrorStr
mov edx, dword [esi + 0x22c]
lea ecx, [esp + 0x49c]
push ecx
push str.Error:__s
push 0
push 2
call edx
mov eax, dword [esp + 0x80]
push eax
call fcn.00412c14
push edi
call fcn.00412c14
add esp, 0x24
jmp 0x410cad
push 0x200
lea edx, [esp + 0x48c]
push edx
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call sym.JkDefrag.exe_SystemErrorStr
mov ecx, dword [esi + 0x22c]
lea eax, [esp + 0x494]
push eax
push str.Error_while_reading_bootblock:__s
push ebx
push 2
call ecx
mov ecx, dword [esp + 0x8a4]
add esp, 0x1c
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.00411002
add esp, 0x884
ret