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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x571fbb
mov eax, dword fs:[0]
push eax
sub esp, 0x104
mov eax, dword [0x5ebea4]
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 0x44f6ce
cmp dword [esi + 0x14], 0
jl 0x44f6c5
jg 0x44f6ce
cmp dword [esi + 0x10], 0xa00000
jae 0x44f6ce
mov dword [ebp - 0x6c], 0x80000
jmp 0x44f6d5
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 0x44f802
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xb8]
call fcn.0044d410
push eax
mov edx, str.Part:_Cannot_set_file_pointer_1_._Code
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x68]
call fcn.004532c0
mov edi, eax
add esi, 0x30
add esp, 4
cmp esi, edi
je 0x44f771
mov ecx, esi
call fcn.004494f0
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 0x44f7ab
mov ecx, dword [ebp - 0x68]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x44f7a1
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x450685
push edx
push ecx
call fcn.0052f5d6
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 0x450666
mov ecx, dword [ebp - 0xb8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x45065c
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x45068a
jmp 0x45065c
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 0x45061f
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x45061f
mov ecx, dword [ebp - 0x6c]
cmp eax, ecx
jne 0x45061f
push edi
push dword [ebp - 0x88]
push ecx
mov ecx, esi
call fcn.0044de30
test al, al
je 0x450666
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 0x44f881
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.0044c4f0
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 0x44f97e
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xb8]
call fcn.0044d410
push eax
mov edx, str.Part:_Cannot_set_file_pointer_2_._Code
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x68]
call fcn.004532c0
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.00449550
mov edx, dword [ebp - 0x54]
cmp edx, 8
jb 0x44f927
mov ecx, dword [ebp - 0x68]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x44f91d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x45068f
push edx
push ecx
call fcn.0052f5d6
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 0x4505e2
mov ecx, dword [ebp - 0xb8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4505d8
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x450694
jmp 0x4505d8
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 0x45056a
mov ecx, dword [ebp - 0x14]
test ecx, ecx
je 0x45056a
mov eax, dword [ebp - 0x28]
sub eax, dword [ebp - 0x2c]
cmp ecx, eax
jne 0x45056a
push edi
push dword [ebp - 0x88]
mov ecx, esi
call fcn.0044e0e0
mov edx, dword [ebp - 0x98]
lea ecx, [ebp - 0x44]
push 0x20
call fcn.0044cb50
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 [0x5e0210]
movsd xmm3, qword [0x5e0208]
mov byte [ebp - 0x45], 0
cmp ecx, edx
je 0x44fa3a
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 0x44fa2d
mulsd xmm0, xmm2
jmp 0x44fa31
mulsd xmm0, xmm3
inc ecx
addsd xmm1, xmm0
cmp ecx, edx
jne 0x44fa10
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x14]
mov eax, dword [ebp - 0x6c]
mulsd xmm1, qword [0x5e0230]
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.005301b0
movsd qword [ebp - 0x88], xmm0
divsd xmm0, qword [0x5e0220]
call fcn.00530090
sub eax, esi
sbb edx, edi
add eax, 1
mov ecx, eax
adc edx, 0
call fcn.005301b0
mulsd xmm0, qword [ebp - 0x74]
addsd xmm0, qword [ebp - 0x88]
call fcn.00530090
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.00530260
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.00530220
push 0
push 0x64
push edx
push eax
call fcn.00530260
mov esi, eax
mov edi, edx
mov ecx, esi
call fcn.005301b0
mulsd xmm0, qword [0x5e0228]
call fcn.00530090
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 0x44fb7d
mov ecx, dword [ebp - 0x50]
ja 0x44fb5d
cmp dword [ebp - 0xbc], ecx
jbe 0x44fb7d
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 0x45022c
ja 0x44fbbc
cmp dword [ebp - 0xd8], 0
jbe 0x45022c
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 0x44fbfb
ja 0x44fbde
cmp eax, edx
jbe 0x44fbfb
push 0
push edx
push ecx
push eax
call fcn.005302d0
mov esi, eax
add esi, 0xffffffff
adc edx, 0xffffffff
mov dword [ebp - 0x70], edx
mov edx, dword [ebp - 0xa0]
jmp 0x44fc00
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 0x4506b7
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.0044aa70
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 0x44fca5
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 0x44fc94
mulsd xmm0, qword [0x5e0210]
jmp 0x44fc9c
mulsd xmm0, qword [0x5e0208]
inc edx
addsd xmm1, xmm0
cmp edx, ecx
jne 0x44fc73
mulsd xmm1, qword [0x5e0230]
movsd qword [ebp - 0x74], xmm1
cmp edi, 0x10
jb 0x44fce2
lea ecx, [edi + 1]
mov eax, esi
cmp ecx, 0x1000
jb 0x44fcd8
mov esi, dword [esi - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x450685
push ecx
push esi
call fcn.0052f5d6
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.005301b0
mulsd xmm0, qword [ebp - 0x74]
mov edx, dword [ebp - 0x9c]
mov ecx, dword [ebp - 0xcc]
movsd qword [ebp - 0x80], xmm0
call fcn.005301b0
addsd xmm0, qword [ebp - 0x80]
call fcn.00530090
mov ecx, edx
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], ecx
test ecx, ecx
jne 0x44fd3d
cmp eax, 0x800000
jbe 0x44fd4b
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.00530220
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.005301b0
mulsd xmm0, qword [ebp - 0x74]
mov edx, esi
mov ecx, edi
movsd qword [ebp - 0x74], xmm0
call fcn.005301b0
addsd xmm0, qword [ebp - 0x74]
call fcn.0053009f
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 0x44fdda
mov edi, dword [ebp - 0x7c]
ja 0x44fde2
cmp edx, edi
ja 0x44fde2
mov edi, edx
mov edx, dword [ebp - 0x70]
mov dword [ebp - 0x78], edx
cmp ecx, dword [ebp - 0xdc]
jg 0x45048e
jl 0x44fdfc
cmp eax, dword [ebp - 0xe0]
jae 0x45048e
push 0
push 0
push ecx
push eax
push dword [esi]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
je 0x4501be
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 0x4500fc
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x4500fc
xor ecx, ecx
cmp eax, edi
jne 0x4500fc
cmp ecx, dword [ebp - 0x78]
jne 0x4500fc
push dword [ebp - 0x90]
mov ecx, esi
push dword [ebp - 0x8c]
push eax
call fcn.0044de30
test al, al
je 0x450501
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 0x44fe9c
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.0044c4f0
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 0x450006
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 0x44ffbd
mov ecx, dword [ebp - 0x14]
test ecx, ecx
je 0x44ffbd
mov eax, dword [ebp - 0x1c]
sub eax, dword [ebp - 0x20]
cmp ecx, eax
jne 0x44ffbd
push dword [ebp - 0x90]
mov ecx, esi
push dword [ebp - 0x8c]
call fcn.0044e0e0
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x20]
test ecx, ecx
je 0x44ff71
mov edx, dword [ebp - 0x18]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x44ff52
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x450685
push edx
push ecx
call fcn.0052f5d6
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 0x44ffa9
jb 0x44ff9b
cmp eax, dword [ebp - 0xd8]
jae 0x44ffa9
mov edi, dword [ebp - 0x34]
mov edx, dword [ebp - 0xa0]
jmp 0x44fbd4
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 0x450259
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0x68]
call fcn.0044d410
push eax
mov edx, str.Part:_Cannot_write_file_2_._Code
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0xb8]
call fcn.004532c0
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.00449550
lea ecx, [ebp - 0xb8]
call fcn.004494f0
lea ecx, [ebp - 0x68]
call fcn.004494f0
jmp 0x4500c5
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xb8]
call fcn.0044d410
push eax
mov edx, str.Part:_Cannot_set_file_pointer_4_._Code
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x68]
call fcn.004532c0
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.00449550
mov edx, dword [ebp - 0x54]
cmp edx, 8
jb 0x450071
mov ecx, dword [ebp - 0x68]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x450067
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x450699
push edx
push ecx
call fcn.0052f5d6
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 0x4500c5
mov ecx, dword [ebp - 0xb8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4500bb
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x45069e
push edx
push ecx
call fcn.0052f5d6
add esp, 8
mov ecx, dword [ebp - 0x20]
test ecx, ecx
je 0x450501
mov edx, dword [ebp - 0x18]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x4504f7
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4506a3
jmp 0x4504f7
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xb8]
call fcn.0044d410
push eax
mov edx, str.Part:_Cannot_read_file_2_._Code
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x68]
call fcn.004532c0
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.00449550
mov edx, dword [ebp - 0x54]
cmp edx, 8
jb 0x450167
mov ecx, dword [ebp - 0x68]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x45015d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4506a8
push edx
push ecx
call fcn.0052f5d6
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 0x450501
mov ecx, dword [ebp - 0xb8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4504f7
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4506ad
jmp 0x4504f7
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xb8]
call fcn.0044d410
push eax
mov edx, str.Part:_Cannot_set_file_pointer_3_._Code
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x68]
call fcn.004532c0
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.00449550
mov edx, dword [ebp - 0x54]
cmp edx, 8
jb 0x450167
mov ecx, dword [ebp - 0x68]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x45015d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4506b2
jmp 0x45015d
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 0x450290
jl 0x450283
cmp ecx, edi
jae 0x450290
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 0x45048e
jl 0x4502b5
cmp ecx, dword [ebp - 0xe0]
jae 0x45048e
push 0
push 0
push edx
push ecx
push dword [esi]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
jne 0x45031c
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0x68]
call fcn.0044d410
push eax
mov edx, str.Part:_Cannot_set_file_pointer_5_._Code
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0xb8]
call fcn.004532c0
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.00449550
lea ecx, [ebp - 0xb8]
call fcn.004494f0
lea ecx, [ebp - 0x68]
call fcn.004494f0
lea ecx, [ebp - 0x44]
mov byte [ebp - 0x45], 0
call fcn.00449720
jmp 0x4505e6
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 0x450512
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x450512
xor ecx, ecx
cmp eax, edi
jne 0x450512
cmp ecx, dword [ebp - 0x4c]
jne 0x450512
push dword [ebp - 0x50]
mov edi, dword [ebp - 0x94]
mov ecx, esi
push edi
push eax
call fcn.0044de30
test al, al
je 0x450501
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 0x4503a4
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.0044c4f0
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 0x45041e
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0x68]
call fcn.0044d410
push eax
mov edx, str.Part:_Cannot_set_file_pointer_6_._Code
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0xb8]
call fcn.004532c0
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.00449550
lea ecx, [ebp - 0xb8]
call fcn.004494f0
lea ecx, [ebp - 0x68]
call fcn.004494f0
jmp 0x4500c5
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 0x4504a8
mov ecx, dword [ebp - 0x14]
test ecx, ecx
je 0x4504a8
mov eax, dword [ebp - 0x1c]
sub eax, dword [ebp - 0x20]
cmp ecx, eax
jne 0x4504a8
push dword [ebp - 0x50]
mov ecx, esi
push edi
call fcn.0044e0e0
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x20]
test ecx, ecx
je 0x45048e
mov edx, dword [ebp - 0x18]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x450484
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4506bc
push edx
push ecx
call fcn.0052f5d6
add esp, 8
sub esp, 8
mov ecx, esi
call fcn.0044e130
lea ecx, [ebp - 0x44]
mov byte [ebp - 0x45], al
call fcn.00449720
jmp 0x4505e6
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0x110]
call fcn.0044d410
push eax
mov edx, str.Part:_Cannot_write_file_3_._Code
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0xf8]
call fcn.004532c0
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.00449550
lea ecx, [ebp - 0xf8]
call fcn.004494f0
lea ecx, [ebp - 0x110]
call fcn.004494f0
jmp 0x4500c5
push edx
push ecx
call fcn.0052f5d6
add esp, 8
lea ecx, [ebp - 0x44]
mov byte [ebp - 0x45], 0
call fcn.00449720
jmp 0x4505e6
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xf8]
call fcn.0044d410
push eax
mov edx, str.Part:_Cannot_read_file_3_._Code
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x110]
call fcn.004532c0
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.00449550
lea ecx, [ebp - 0x110]
call fcn.004494f0
lea ecx, [ebp - 0xf8]
call fcn.004494f0
lea ecx, [ebp - 0x44]
mov byte [ebp - 0x45], 0
call fcn.00449720
jmp 0x4505e6
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xb8]
call fcn.0044d410
push eax
mov edx, str.Part:_Cannot_write_file_1_._Code
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x68]
call fcn.004532c0
add esp, 4
lea ecx, [esi + 0x30]
push eax
call fcn.00449550
mov edx, dword [ebp - 0x54]
cmp edx, 8
jb 0x44f927
mov ecx, dword [ebp - 0x68]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x44f91d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x44f91d
jmp 0x4506a3
push edx
push ecx
call fcn.0052f5d6
add esp, 8
mov byte [ebp - 0x45], 0
mov ecx, dword [ebp - 0x2c]
test ecx, ecx
je 0x45061a
mov edx, dword [ebp - 0x24]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x450610
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4506a3
push edx
push ecx
call fcn.0052f5d6
add esp, 8
mov al, byte [ebp - 0x45]
jmp 0x450668
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0xb8]
call fcn.0044d410
push eax
mov edx, str.Part:_Cannot_read_file_1_._Code
mov dword [ebp - 4], 1
lea ecx, [ebp - 0x68]
call fcn.004532c0
mov edi, eax
add esi, 0x30
add esp, 4
cmp esi, edi
je 0x44f771
jmp 0x44f747
push edx
push ecx
call fcn.0052f5d6
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.0052f395
mov esp, ebp
pop ebp
ret 0xc
call fcn.0054b071
call fcn.0054b071
call fcn.0054b071
call fcn.0054b071
call fcn.0054b071
call fcn.0054b071
call fcn.0054b071
call fcn.0054b071
call fcn.0054b071
call fcn.0054b071
call fcn.0044acb0
call fcn.0054b071
int3