Function at 0x464bb0
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x28
push ebp
push esi
mov esi, ecx
mov eax, dword [esi + 0x280]
test eax, eax
push edi
je 0x464bce
mov ecx, dword [eax + 0x40]
or ecx, dword [eax + 0x44]
je 0x464bce
xor edi, edi
jmp 0x464bd3
mov edi, 1
or ebp, 0xffffffff
test eax, eax
mov dword [esp + 0x14], ebp
jne 0x464c0c
mov eax, dword [esi + 0x14c]
push 0
push 0x80
push 3
push 0
push 3
push 0x80000000
push eax
call dword [0x652b84]
cmp eax, 0xffffffff
mov dword [esp + 0x14], eax
je 0x464fd5
mov ebp, eax
xor eax, eax
test edi, edi
setne al
push ebx
lea eax, [eax*8 + 2]
test eax, eax
mov dword [esp + 0x24], eax
jle 0x464fb3
mov eax, dword [esi + 0x6b4]
test eax, eax
mov edi, dword [esi + 0x6b0]
ja 0x464c3f
test edi, edi
jbe 0x464fb3
mov ebx, dword [0x6613c8]
mov edx, dword [ebx + 0xc]
xor ecx, ecx
cmp eax, ecx
ja 0x464c56
jb 0x464c54
cmp edi, edx
jae 0x464c56
mov edx, edi
mov eax, dword [esi + 0x280]
mov dword [esp + 0x10], edx
mov ebx, dword [ebx + 0x10]
xor edi, edi
cmp eax, edi
mov dword [esp + 0x14], ebx
je 0x464dea
cmp dword [esi + 0xa8], edi
je 0x464da2
mov edx, dword [esi + 0x6a4]
mov ecx, dword [esi + 0x470]
cmp byte [edx + ecx], 2
jae 0x464f87
cmp dword [esi + 0x38c], edi
mov dword [esp + 0x1c], edi
jbe 0x464cfa
mov eax, dword [eax + 0x14]
mov dword [esp + 0x20], eax
mov ecx, dword [eax]
test ecx, ecx
je 0x464cdc
mov edi, dword [esi + 0x6ac]
mov ebp, dword [ecx + 0x14]
cmp edi, ebp
mov ebx, dword [esi + 0x6a8]
mov eax, dword [ecx + 0x10]
jb 0x464cdc
ja 0x464cc8
cmp ebx, eax
jb 0x464cdc
mov edx, dword [ecx + 0x20]
add edx, eax
mov eax, dword [ecx + 0x24]
adc eax, ebp
cmp edi, eax
jb 0x464d23
ja 0x464cdc
cmp ebx, edx
jb 0x464d23
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov edx, dword [esi + 0x38c]
inc ecx
add eax, 4
cmp ecx, edx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], eax
jb 0x464ca6
mov eax, dword [esi + 0x69c]
pop ebx
inc eax
pop edi
mov dword [esi + 0x6a0], 0
mov dword [esi + 0x6a4], 0xffffffff
mov dword [esi + 0x69c], eax
pop esi
pop ebp
add esp, 0x28
ret
mov edi, dword [esi + 0x6a8]
mov ebp, dword [esi + 0x6ac]
mov dword [esi + 0x698], ecx
mov edx, dword [ecx + 0x20]
mov eax, dword [ecx + 0x24]
mov ebx, dword [ecx + 0x10]
sub edx, edi
sbb eax, ebp
add edx, ebx
adc eax, dword [ecx + 0x14]
xor ebx, ebx
cmp ebx, eax
jb 0x464d59
ja 0x464d55
cmp dword [esp + 0x10], edx
jb 0x464d59
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
lea edx, [esp + 0x28]
push edx
mov edx, dword [ecx + 0x14]
push 0
push eax
sub edi, dword [ecx + 0x10]
push ebx
sbb ebp, edx
push ebp
push edi
call fcn.004d3600
test eax, eax
je 0x464fd4
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x28]
xor eax, eax
cmp ebp, ecx
jne 0x464fd4
cmp eax, dword [esp + 0x2c]
jne 0x464fd4
jmp 0x464e34
lea ecx, [esp + 0x30]
push ecx
mov ecx, dword [esi + 0x6a8]
push edi
push edx
mov edx, dword [esi + 0x6ac]
push ebx
push edx
mov edx, dword [eax + 0x14]
push ecx
mov ecx, dword [edx]
call fcn.004d3600
test eax, eax
je 0x464fd4
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
xor eax, eax
cmp ecx, ebp
jne 0x464fd4
mov edx, dword [esp + 0x34]
cmp edx, eax
jne 0x464fd4
jmp 0x464e34
mov eax, dword [esi + 0x6a8]
mov edx, dword [esi + 0x6ac]
mov cl, 0x20
call fcn.0057c2c0
mov ecx, dword [esi + 0x6a8]
push edi
mov dword [esp + 0x24], eax
lea eax, [esp + 0x24]
push eax
push ecx
push ebp
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov eax, dword [esp + 0x10]
push edi
lea edx, [esp + 0x14]
push edx
push eax
push ebx
push ebp
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x464fd4
mov ebp, dword [esp + 0x10]
mov eax, dword [esi + 0x694]
test eax, eax
je 0x464ef3
test ebp, ebp
jbe 0x464f3f
lea ebx, [ebx]
mov eax, dword [esi + 0x68c]
mov edx, dword [esi + 0x6b0]
mov edi, 0x2d000
sub edi, eax
mov eax, dword [esi + 0x6b4]
xor ecx, ecx
cmp ecx, eax
jb 0x464e77
ja 0x464e75
cmp edi, edx
jb 0x464e77
mov edi, edx
cmp ebp, edi
jb 0x464ede
mov ecx, dword [esp + 0x14]
push edi
lea ebx, [esi + 0x630]
push ecx
mov ecx, ebx
call fcn.004b9b70
mov ecx, ebx
call fcn.004b9b90
mov eax, dword [esi + 0x690]
mov ecx, dword [esi + 0x608]
lea edx, [eax + eax*4]
lea ecx, [ecx + edx*4]
inc eax
push ecx
mov ecx, ebx
mov dword [esi + 0x690], eax
call fcn.004b9b30
mov ecx, ebx
call fcn.004b9af0
mov ecx, dword [esp + 0x14]
sub ebp, edi
add ecx, edi
test ebp, ebp
mov dword [esi + 0x68c], 0
mov dword [esp + 0x14], ecx
jbe 0x464f3b
mov ebx, ecx
jmp 0x464e50
push ebp
push ebx
lea ecx, [esi + 0x630]
call fcn.004b9b70
add dword [esi + 0x68c], ebp
jmp 0x464f3b
mov eax, dword [esi + 0x6a0]
cmp eax, 6
jne 0x464f11
mov edx, dword [esi + 0x4ec]
lea ecx, [esi + 0x4ec]
push ebp
push ebx
call dword [edx + 0x24]
jmp 0x464f3b
cmp eax, 4
jne 0x464f29
mov eax, dword [esi + 0x578]
lea ecx, [esi + 0x578]
push ebp
push ebx
call dword [eax + 0x24]
jmp 0x464f3b
cmp eax, 5
jne 0x464f3f
push ebp
push ebx
lea ecx, [esi + 0x298]
call fcn.0040cde0
mov ebp, dword [esp + 0x10]
mov edx, dword [esi + 0x6a8]
mov ecx, dword [esi + 0x6ac]
mov ebx, dword [esi + 0x6b0]
mov edi, dword [esi + 0x6b4]
xor eax, eax
add edx, ebp
adc ecx, eax
sub ebx, ebp
mov ebp, dword [esp + 0x18]
sbb edi, eax
mov eax, dword [esp + 0x24]
mov dword [esi + 0x6a8], edx
mov dword [esi + 0x6ac], ecx
mov dword [esi + 0x6b0], ebx
mov dword [esi + 0x6b4], edi
dec eax
jmp 0x464c1b
mov eax, dword [esi + 0x69c]
inc eax
mov ecx, esi
mov dword [esi + 0x6a0], edi
mov dword [esi + 0x6a4], 0xffffffff
mov dword [esi + 0x69c], eax
call fcn.00440700
pop ebx
pop edi
pop esi
pop ebp
add esp, 0x28
ret
cmp ebp, 0xffffffff
je 0x464fbf
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [esi + 0x6b0]
or ecx, dword [esi + 0x6b4]
jne 0x464fd4
mov ecx, esi
call fcn.00464450
pop ebx
pop edi
pop esi
pop ebp
add esp, 0x28
ret