Function at 0x44f610
Capabilities:
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5717eb
mov eax, dword fs:[0]
push eax
sub esp, 0x104
mov eax, dword [0x5eaea4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x94], esi
cmp byte [esi + 0x49], 0x33
mov eax, dword [ebp + 8]
mov dword [ebp - 0x98], eax
jb 0x44f66e
cmp dword [esi + 0x14], 0
jl 0x44f665
jg 0x44f66e
cmp dword [esi + 0x10], 0xa00000
jae 0x44f66e
mov dword [ebp - 0x6c], 0x80000
jmp 0x44f675
mov dword [ebp - 0x6c], 0x100000
mov eax, dword [esi + 0x10]
xorps xmm0, xmm0
push 0
push 0
movq qword [ebp - 0x88], xmm0
mov edi, dword [ebp - 0x84]
push edi
push dword [ebp - 0x88]
mov dword [ebp - 0xe0], eax
mov eax, dword [esi + 0x14]
push dword [esi]
mov dword [ebp - 0xdc], eax
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
jne 0x44f7a2
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xb8]
call fcn.0044d3b0
push eax
mov edx, str.Part:_Cannot_set_file_pointer_1_._Code
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x68]
call fcn.00453260
mov edi, eax
add esi, 0x30
add esp, 4
cmp esi, edi
je 0x44f711
mov ecx, esi
call fcn.00449490
movups xmm0, xmmword [edi]
xor eax, eax
movups xmmword [esi], xmm0
movq xmm0, qword [edi + 0x10]
movq qword [esi + 0x10], xmm0
mov dword [edi + 0x10], 0
mov dword [edi + 0x14], 7
mov word [edi], ax
mov edx, dword [ebp - 0x54]
cmp edx, 8
jb 0x44f74b
mov ecx, dword [ebp - 0x68]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x44f741
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x450625
push edx
push ecx
call fcn.0052edf8
add esp, 8
mov edx, dword [ebp - 0xa4]
xor eax, eax
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 7
mov word [ebp - 0x68], ax
cmp edx, 8
jb 0x450606
mov ecx, dword [ebp - 0xb8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4505fc
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x45062a
jmp 0x4505fc
mov eax, dword [esi + 4]
lea ecx, [ebp - 0x14]
push 0
push ecx
push dword [ebp - 0x6c]
push dword [eax]
push dword [esi]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x4505bf
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x4505bf
mov ecx, dword [ebp - 0x6c]
cmp eax, ecx
jne 0x4505bf
push edi
push dword [ebp - 0x88]
push ecx
mov ecx, esi
call fcn.0044ddd0
test al, al
je 0x450606
push 0
push dword [ebp - 0x98]
xorps xmm0, xmm0
mov dword [ebp - 0x24], 0
sub esp, 8
movq qword [ebp - 0x2c], xmm0
mov ecx, esp
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov eax, dword [esi + 8]
test eax, eax
je 0x44f821
lock inc dword [eax + 4]
mov eax, dword [esi + 4]
mov edx, dword [ebp - 0x6c]
mov dword [ecx], eax
mov eax, dword [esi + 8]
mov dword [ecx + 4], eax
lea ecx, [ebp - 0x2c]
call fcn.0044c490
add esp, 0x10
push 0
push 0
push edi
mov dword [ebp - 4], 2
push dword [ebp - 0x88]
push dword [esi]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
jne 0x44f91e
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xb8]
call fcn.0044d3b0
push eax
mov edx, str.Part:_Cannot_set_file_pointer_2_._Code
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x68]
call fcn.00453260
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.004494f0
mov edx, dword [ebp - 0x54]
cmp edx, 8
jb 0x44f8c7
mov ecx, dword [ebp - 0x68]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x44f8bd
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x45062f
push edx
push ecx
call fcn.0052edf8
add esp, 8
mov edx, dword [ebp - 0xa4]
xor eax, eax
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 7
mov word [ebp - 0x68], ax
cmp edx, 8
jb 0x450582
mov ecx, dword [ebp - 0xb8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x450578
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x450634
jmp 0x450578
mov ecx, dword [ebp - 0x28]
lea edx, [ebp - 0x14]
mov eax, dword [ebp - 0x2c]
sub ecx, eax
push 0
push edx
push ecx
push eax
push dword [esi]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x45050a
mov ecx, dword [ebp - 0x14]
test ecx, ecx
je 0x45050a
mov eax, dword [ebp - 0x28]
sub eax, dword [ebp - 0x2c]
cmp ecx, eax
jne 0x45050a
push edi
push dword [ebp - 0x88]
mov ecx, esi
call fcn.0044e080
mov edx, dword [ebp - 0x98]
lea ecx, [ebp - 0x44]
push 0x20
call fcn.0044caf0
add esp, 4
mov byte [ebp - 4], 5
lea eax, [ebp - 0x44]
cmp dword [ebp - 0x30], 0x10
lea ecx, [ebp - 0x44]
mov edx, dword [ebp - 0x34]
xorps xmm1, xmm1
cmovae eax, dword [ebp - 0x44]
cmovae ecx, dword [ebp - 0x44]
add edx, eax
movsd xmm2, qword [0x5df1e0]
movsd xmm3, qword [0x5df1d8]
mov byte [ebp - 0x45], 0
cmp ecx, edx
je 0x44f9da
nop
mov al, byte [ebp - 0x45]
inc al
mov byte [ebp - 0x45], al
test al, 1
movsx eax, byte [ecx]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
jne 0x44f9cd
mulsd xmm0, xmm2
jmp 0x44f9d1
mulsd xmm0, xmm3
inc ecx
addsd xmm1, xmm0
cmp ecx, edx
jne 0x44f9b0
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x14]
mov eax, dword [ebp - 0x6c]
mulsd xmm1, qword [0x5df200]
add eax, eax
mov dword [ebp - 0x7c], ecx
sub ecx, eax
mov dword [ebp - 0x4c], edx
mov esi, ecx
sbb edx, 0
mov dword [ebp - 0x9c], ecx
mov edi, edx
mov dword [ebp - 0xa0], edx
shrd esi, edi, 0x18
movsd qword [ebp - 0x74], xmm1
shr edi, 0x18
shld edi, esi, 1
add esi, esi
add esi, 1
mov ecx, esi
adc edi, 0
mov edx, edi
call fcn.0052f9d0
movsd qword [ebp - 0x88], xmm0
divsd xmm0, qword [0x5df1f0]
call fcn.0052f8b0
sub eax, esi
sbb edx, edi
add eax, 1
mov ecx, eax
adc edx, 0
call fcn.0052f9d0
mulsd xmm0, qword [ebp - 0x74]
addsd xmm0, qword [ebp - 0x88]
call fcn.0052f8b0
mov ecx, edx
mov dword [ebp - 0xd8], eax
push ecx
push eax
push dword [ebp - 0xa0]
mov dword [ebp - 0xd4], ecx
push dword [ebp - 0x9c]
call fcn.0052fa80
mov ecx, eax
mov esi, edx
movzx eax, byte [ebp + 0xc]
push esi
cdq
push ecx
push edx
push eax
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0xc0], esi
call fcn.0052fa40
push 0
push 0x64
push edx
push eax
call fcn.0052fa80
mov esi, eax
mov edi, edx
mov ecx, esi
call fcn.0052f9d0
mulsd xmm0, qword [0x5df1f8]
call fcn.0052f8b0
shld edi, esi, 1
mov dword [ebp - 0xcc], eax
add esi, esi
mov dword [ebp - 0x9c], edx
mov ecx, esi
sub ecx, eax
mov eax, edi
mov dword [ebp - 0xbc], ecx
sbb eax, edx
mov edx, dword [ebp - 0xc0]
mov dword [ebp - 0xd0], eax
cmp eax, edx
jb 0x44fb1d
mov ecx, dword [ebp - 0x50]
ja 0x44fafd
cmp dword [ebp - 0xbc], ecx
jbe 0x44fb1d
mov eax, esi
mov dword [ebp - 0xbc], ecx
sub eax, ecx
mov dword [ebp - 0xd0], edx
mov ecx, edi
mov dword [ebp - 0xcc], eax
sbb ecx, edx
mov dword [ebp - 0x9c], ecx
cmp dword [ebp - 0xd4], 0
xorps xmm0, xmm0
mov edi, dword [ebp - 0x34]
mov edx, edi
movq qword [ebp - 0x88], xmm0
movlpd qword [ebp - 0xc8], xmm0
mov dword [ebp - 0xa0], edx
movlpd qword [ebp - 0x74], xmm0
jb 0x4501cc
ja 0x44fb5c
cmp dword [ebp - 0xd8], 0
jbe 0x4501cc
mov ecx, dword [ebp - 0x70]
lea eax, [edx - 1]
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0xc4], ecx
mov dword [ebp - 0x4c], eax
test ecx, ecx
jb 0x44fb9b
ja 0x44fb7e
cmp eax, edx
jbe 0x44fb9b
push 0
push edx
push ecx
push eax
call fcn.0052faf0
mov esi, eax
add esi, 0xffffffff
adc edx, 0xffffffff
mov dword [ebp - 0x70], edx
mov edx, dword [ebp - 0xa0]
jmp 0x44fba0
mov esi, eax
mov dword [ebp - 0x70], ecx
mov eax, edx
mov dword [ebp - 0x58], 0
sub eax, esi
mov dword [ebp - 0x54], 0xf
cmp eax, dword [ebp - 0x84]
mov ecx, 1
mov byte [ebp - 0x68], 0
cmovbe ecx, esi
sub edx, ecx
cmp edi, edx
jb 0x450657
sub edi, edx
lea eax, [ebp - 0x44]
or ecx, 0xffffffff
cmp edi, 0xffffffff
cmovb ecx, edi
cmp dword [ebp - 0x30], 0x10
push ecx
cmovae eax, dword [ebp - 0x44]
lea ecx, [ebp - 0x68]
add eax, edx
push eax
call fcn.0044aa10
mov edi, dword [ebp - 0x54]
lea ecx, [ebp - 0x68]
mov esi, dword [ebp - 0x68]
lea edx, [ebp - 0x68]
cmp edi, 0x10
mov byte [ebp - 0x45], 0
xorps xmm1, xmm1
cmovae ecx, esi
cmovae edx, esi
add ecx, dword [ebp - 0x58]
cmp edx, ecx
je 0x44fc45
mov al, byte [ebp - 0x45]
inc al
mov byte [ebp - 0x45], al
test al, 1
movsx eax, byte [edx]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
jne 0x44fc34
mulsd xmm0, qword [0x5df1e0]
jmp 0x44fc3c
mulsd xmm0, qword [0x5df1d8]
inc edx
addsd xmm1, xmm0
cmp edx, ecx
jne 0x44fc13
mulsd xmm1, qword [0x5df200]
movsd qword [ebp - 0x74], xmm1
cmp edi, 0x10
jb 0x44fc82
lea ecx, [edi + 1]
mov eax, esi
cmp ecx, 0x1000
jb 0x44fc78
mov esi, dword [esi - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x450625
push ecx
push esi
call fcn.0052edf8
add esp, 8
mov ecx, dword [ebp - 0xbc]
sub ecx, dword [ebp - 0xcc]
mov edx, dword [ebp - 0xd0]
sbb edx, dword [ebp - 0x9c]
add ecx, 1
adc edx, 0
call fcn.0052f9d0
mulsd xmm0, qword [ebp - 0x74]
mov edx, dword [ebp - 0x9c]
mov ecx, dword [ebp - 0xcc]
movsd qword [ebp - 0x80], xmm0
call fcn.0052f9d0
addsd xmm0, qword [ebp - 0x80]
call fcn.0052f8b0
mov ecx, edx
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], ecx
test ecx, ecx
jne 0x44fcdd
cmp eax, 0x800000
jbe 0x44fceb
mov dword [ebp - 0x7c], 0x800000
mov dword [ebp - 0x78], 0
push dword [ebp - 0xc0]
push dword [ebp - 0x50]
push dword [ebp - 0xc4]
push dword [ebp - 0x4c]
call fcn.0052fa40
mov esi, edx
mov edi, eax
add edi, dword [ebp - 0x6c]
mov ecx, edi
adc esi, 0
sub ecx, dword [ebp - 0x7c]
mov edx, esi
sbb edx, dword [ebp - 0x78]
add ecx, dword [ebp - 0x50]
adc edx, dword [ebp - 0xc0]
sub ecx, edi
sbb edx, esi
add ecx, 1
adc edx, 0
call fcn.0052f9d0
mulsd xmm0, qword [ebp - 0x74]
mov edx, esi
mov ecx, edi
movsd qword [ebp - 0x74], xmm0
call fcn.0052f9d0
addsd xmm0, qword [ebp - 0x74]
call fcn.0052f8bf
mov esi, dword [ebp - 0x94]
mov ecx, edx
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x90], ecx
mov edx, dword [esi + 0x10]
mov edi, dword [esi + 0x14]
sub edx, eax
sbb edi, ecx
mov dword [ebp - 0x70], edi
cmp edi, dword [ebp - 0x78]
jb 0x44fd7a
mov edi, dword [ebp - 0x7c]
ja 0x44fd82
cmp edx, edi
ja 0x44fd82
mov edi, edx
mov edx, dword [ebp - 0x70]
mov dword [ebp - 0x78], edx
cmp ecx, dword [ebp - 0xdc]
jg 0x45042e
jl 0x44fd9c
cmp eax, dword [ebp - 0xe0]
jae 0x45042e
push 0
push 0
push ecx
push eax
push dword [esi]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
je 0x45015e
mov eax, dword [esi + 4]
lea ecx, [ebp - 0x14]
push 0
push ecx
push edi
push dword [eax]
push dword [esi]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x45009c
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x45009c
xor ecx, ecx
cmp eax, edi
jne 0x45009c
cmp ecx, dword [ebp - 0x78]
jne 0x45009c
push dword [ebp - 0x90]
mov ecx, esi
push dword [ebp - 0x8c]
push eax
call fcn.0044ddd0
test al, al
je 0x4504a1
push 0
push dword [ebp - 0x98]
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
sub esp, 8
movq qword [ebp - 0x20], xmm0
mov ecx, esp
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov eax, dword [esi + 8]
test eax, eax
je 0x44fe3c
lock inc dword [eax + 4]
mov eax, dword [esi + 4]
mov edx, edi
mov dword [ecx], eax
mov eax, dword [esi + 8]
mov dword [ecx + 4], eax
lea ecx, [ebp - 0x20]
call fcn.0044c490
add esp, 0x10
push 0
push 0
mov byte [ebp - 4], 8
push dword [ebp - 0x90]
push dword [ebp - 0x8c]
push dword [esi]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
je 0x44ffa6
mov ecx, dword [ebp - 0x1c]
lea edx, [ebp - 0x14]
mov eax, dword [ebp - 0x20]
sub ecx, eax
push 0
push edx
push ecx
push eax
push dword [esi]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x44ff5d
mov ecx, dword [ebp - 0x14]
test ecx, ecx
je 0x44ff5d
mov eax, dword [ebp - 0x1c]
sub eax, dword [ebp - 0x20]
cmp ecx, eax
jne 0x44ff5d
push dword [ebp - 0x90]
mov ecx, esi
push dword [ebp - 0x8c]
call fcn.0044e080
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x20]
test ecx, ecx
je 0x44ff11
mov edx, dword [ebp - 0x18]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x44fef2
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x450625
push edx
push ecx
call fcn.0052edf8
add esp, 8
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
mov eax, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0xc4]
add eax, 1
mov dword [ebp - 0x4c], eax
adc ecx, 0
mov dword [ebp - 0xc4], ecx
cmp ecx, dword [ebp - 0xd4]
ja 0x44ff49
jb 0x44ff3b
cmp eax, dword [ebp - 0xd8]
jae 0x44ff49
mov edi, dword [ebp - 0x34]
mov edx, dword [ebp - 0xa0]
jmp 0x44fb74
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 0x10]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x7c], edx
jmp 0x4501f9
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0x68]
call fcn.0044d3b0
push eax
mov edx, str.Part:_Cannot_write_file_2_._Code
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0xb8]
call fcn.00453260
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.004494f0
lea ecx, [ebp - 0xb8]
call fcn.00449490
lea ecx, [ebp - 0x68]
call fcn.00449490
jmp 0x450065
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xb8]
call fcn.0044d3b0
push eax
mov edx, str.Part:_Cannot_set_file_pointer_4_._Code
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x68]
call fcn.00453260
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.004494f0
mov edx, dword [ebp - 0x54]
cmp edx, 8
jb 0x450011
mov ecx, dword [ebp - 0x68]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x450007
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x450639
push edx
push ecx
call fcn.0052edf8
add esp, 8
mov edx, dword [ebp - 0xa4]
xor eax, eax
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 7
mov word [ebp - 0x68], ax
cmp edx, 8
jb 0x450065
mov ecx, dword [ebp - 0xb8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x45005b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x45063e
push edx
push ecx
call fcn.0052edf8
add esp, 8
mov ecx, dword [ebp - 0x20]
test ecx, ecx
je 0x4504a1
mov edx, dword [ebp - 0x18]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x450497
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x450643
jmp 0x450497
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xb8]
call fcn.0044d3b0
push eax
mov edx, str.Part:_Cannot_read_file_2_._Code
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x68]
call fcn.00453260
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.004494f0
mov edx, dword [ebp - 0x54]
cmp edx, 8
jb 0x450107
mov ecx, dword [ebp - 0x68]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4500fd
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x450648
push edx
push ecx
call fcn.0052edf8
add esp, 8
mov edx, dword [ebp - 0xa4]
xor eax, eax
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 7
mov word [ebp - 0x68], ax
cmp edx, 8
jb 0x4504a1
mov ecx, dword [ebp - 0xb8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x450497
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x45064d
jmp 0x450497
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xb8]
call fcn.0044d3b0
push eax
mov edx, str.Part:_Cannot_set_file_pointer_3_._Code
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x68]
call fcn.00453260
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.004494f0
mov edx, dword [ebp - 0x54]
cmp edx, 8
jb 0x450107
mov ecx, dword [ebp - 0x68]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4500fd
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x450652
jmp 0x4500fd
mov eax, dword [ebp - 0x84]
mov edi, dword [ebp - 0xc8]
mov esi, dword [ebp - 0x94]
mov edx, dword [ebp - 0x7c]
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0xc4]
mov ecx, edx
mov edx, dword [ebp - 0x4c]
sub ecx, dword [ebp - 0x6c]
mov dword [ebp - 0x94], ecx
sbb edx, 0
add edi, dword [ebp - 0x8c]
mov dword [ebp - 0x50], edx
adc eax, dword [ebp - 0x90]
cmp edx, eax
jg 0x450230
jl 0x450223
cmp ecx, edi
jae 0x450230
mov ecx, edi
mov edx, eax
mov dword [ebp - 0x94], ecx
mov dword [ebp - 0x50], edx
mov edi, dword [ebp - 0x7c]
sub edi, ecx
mov dword [ebp - 0x7c], edi
sbb dword [ebp - 0x4c], edx
cmp edx, dword [ebp - 0xdc]
jg 0x45042e
jl 0x450255
cmp ecx, dword [ebp - 0xe0]
jae 0x45042e
push 0
push 0
push edx
push ecx
push dword [esi]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
jne 0x4502bc
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0x68]
call fcn.0044d3b0
push eax
mov edx, str.Part:_Cannot_set_file_pointer_5_._Code
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0xb8]
call fcn.00453260
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.004494f0
lea ecx, [ebp - 0xb8]
call fcn.00449490
lea ecx, [ebp - 0x68]
call fcn.00449490
lea ecx, [ebp - 0x44]
mov byte [ebp - 0x45], 0
call fcn.004496c0
jmp 0x450586
mov eax, dword [esi + 4]
lea ecx, [ebp - 0x14]
push 0
push ecx
push edi
push dword [eax]
push dword [esi]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x4504b2
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x4504b2
xor ecx, ecx
cmp eax, edi
jne 0x4504b2
cmp ecx, dword [ebp - 0x4c]
jne 0x4504b2
push dword [ebp - 0x50]
mov edi, dword [ebp - 0x94]
mov ecx, esi
push edi
push eax
call fcn.0044ddd0
test al, al
je 0x4504a1
push 0
push dword [ebp - 0x98]
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
sub esp, 8
movq qword [ebp - 0x20], xmm0
mov ecx, esp
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov eax, dword [esi + 8]
test eax, eax
je 0x450344
lock inc dword [eax + 4]
mov eax, dword [esi + 4]
mov edx, dword [ebp - 0x7c]
mov dword [ecx], eax
mov eax, dword [esi + 8]
mov dword [ecx + 4], eax
lea ecx, [ebp - 0x20]
call fcn.0044c490
add esp, 0x10
push 0
push 0
mov byte [ebp - 4], 0xd
push dword [ebp - 0x50]
push edi
push dword [esi]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
jne 0x4503be
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0x68]
call fcn.0044d3b0
push eax
mov edx, str.Part:_Cannot_set_file_pointer_6_._Code
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0xb8]
call fcn.00453260
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.004494f0
lea ecx, [ebp - 0xb8]
call fcn.00449490
lea ecx, [ebp - 0x68]
call fcn.00449490
jmp 0x450065
mov ecx, dword [ebp - 0x1c]
lea edx, [ebp - 0x14]
mov eax, dword [ebp - 0x20]
sub ecx, eax
push 0
push edx
push ecx
push eax
push dword [esi]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x450448
mov ecx, dword [ebp - 0x14]
test ecx, ecx
je 0x450448
mov eax, dword [ebp - 0x1c]
sub eax, dword [ebp - 0x20]
cmp ecx, eax
jne 0x450448
push dword [ebp - 0x50]
mov ecx, esi
push edi
call fcn.0044e080
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x20]
test ecx, ecx
je 0x45042e
mov edx, dword [ebp - 0x18]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x450424
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x45065c
push edx
push ecx
call fcn.0052edf8
add esp, 8
sub esp, 8
mov ecx, esi
call fcn.0044e0d0
lea ecx, [ebp - 0x44]
mov byte [ebp - 0x45], al
call fcn.004496c0
jmp 0x450586
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0x110]
call fcn.0044d3b0
push eax
mov edx, str.Part:_Cannot_write_file_3_._Code
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0xf8]
call fcn.00453260
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.004494f0
lea ecx, [ebp - 0xf8]
call fcn.00449490
lea ecx, [ebp - 0x110]
call fcn.00449490
jmp 0x450065
push edx
push ecx
call fcn.0052edf8
add esp, 8
lea ecx, [ebp - 0x44]
mov byte [ebp - 0x45], 0
call fcn.004496c0
jmp 0x450586
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xf8]
call fcn.0044d3b0
push eax
mov edx, str.Part:_Cannot_read_file_3_._Code
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x110]
call fcn.00453260
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.004494f0
lea ecx, [ebp - 0x110]
call fcn.00449490
lea ecx, [ebp - 0xf8]
call fcn.00449490
lea ecx, [ebp - 0x44]
mov byte [ebp - 0x45], 0
call fcn.004496c0
jmp 0x450586
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xb8]
call fcn.0044d3b0
push eax
mov edx, str.Part:_Cannot_write_file_1_._Code
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x68]
call fcn.00453260
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.004494f0
mov edx, dword [ebp - 0x54]
cmp edx, 8
jb 0x44f8c7
mov ecx, dword [ebp - 0x68]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x44f8bd
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x44f8bd
jmp 0x450643
push edx
push ecx
call fcn.0052edf8
add esp, 8
mov byte [ebp - 0x45], 0
mov ecx, dword [ebp - 0x2c]
test ecx, ecx
je 0x4505ba
mov edx, dword [ebp - 0x24]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x4505b0
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x450643
push edx
push ecx
call fcn.0052edf8
add esp, 8
mov al, byte [ebp - 0x45]
jmp 0x450608
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xb8]
call fcn.0044d3b0
push eax
mov edx, str.Part:_Cannot_read_file_1_._Code
mov dword [ebp - 4], 1
lea ecx, [ebp - 0x68]
call fcn.00453260
mov edi, eax
add esi, 0x30
add esp, 4
cmp esi, edi
je 0x44f711
jmp 0x44f6e7
push edx
push ecx
call fcn.0052edf8
add esp, 8
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0052ebb7
mov esp, ebp
pop ebp
ret 0xc
call fcn.0054a8a1
call fcn.0054a8a1
call fcn.0054a8a1
call fcn.0054a8a1
call fcn.0054a8a1
call fcn.0054a8a1
call fcn.0054a8a1
call fcn.0054a8a1
call fcn.0054a8a1
call fcn.0054a8a1
call fcn.0044ac50
call fcn.0054a8a1
int3