Function at 0x4254ee
Capabilities:
Clear file content

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push dword [edi + 0x28]
mov ebx, eax
mov dword [ebp - 4], 1
call dword [sym.imp.KERNEL32.dll_SetEvent]
test eax, eax
jne 0x425543
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x42551e
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x425529
mov esi, 0x80004005
push esi
push 0x1e3
push str.cabextract.cpp
call fcn.0043294e
push str.Failed_to_set_operation_complete_event.
jmp 0x42587e
push 0xffffffffffffffff
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0xffffffff
jne 0x42558c
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x425567
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x425572
mov esi, 0x80004005
push esi
push 0x1e9
push str.cabextract.cpp
call fcn.0043294e
push str.Failed_to_wait_for_begin_operation_event.
jmp 0x42587e
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_ResetEvent]
test eax, eax
jne 0x4255d2
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x4255ad
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x4255b8
mov esi, 0x80004005
push esi
push 0x1ee
push str.cabextract.cpp
call fcn.0043294e
push str.Failed_to_reset_begin_operation_event.
jmp 0x42587e
mov eax, dword [edi + 0x2c]
dec eax
je 0x425606
sub eax, 4
je 0x4255fc
mov esi, 0x8007139f
push esi
push 0x1fc
push str.cabextract.cpp
call fcn.0043294e
push str.Invalid_operation_for_this_state.
jmp 0x42587e
mov esi, 0x80004004
jmp 0x425886
push 0xfde9
push 0
push dword [ebx + 4]
push dword [edi + 0x34]
call fcn.004308bb
mov esi, eax
test esi, esi
jns 0x425634
push dword [ebx + 4]
push str.Failed_to_copy_stream_name:__ls
push esi
call fcn.0042fa86
add esp, 0xc
jmp 0x425886
push dword [edi + 0x28]
call dword [sym.imp.KERNEL32.dll_SetEvent]
test eax, eax
jne 0x42566b
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x425655
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x425660
mov esi, 0x80004005
push esi
push 0x206
jmp 0x42552f
push 0xffffffffffffffff
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0xffffffff
jne 0x4256a5
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x42568f
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x42569a
mov esi, 0x80004005
push esi
push 0x20c
jmp 0x425578
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_ResetEvent]
test eax, eax
jne 0x4256dc
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x4256c6
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x4256d1
mov esi, 0x80004005
push esi
push 0x211
jmp 0x4255be
mov eax, dword [edi + 0x2c]
dec eax
dec eax
je 0x425746
dec eax
je 0x425709
dec eax
je 0x425700
dec eax
je 0x4255fc
mov esi, 0x8007139f
push esi
push 0x247
jmp 0x4255e8
and dword [ebp - 4], 0
jmp 0x425886
push 1
push dword [ebx]
call fcn.0043233b
mov dword [edi + 0x40], eax
test eax, eax
jne 0x425738
mov esi, 0x8007000e
push esi
push 0x236
push str.cabextract.cpp
call fcn.0043294e
push str.Failed_to_allocate_buffer_for_stream.
jmp 0x42587e
mov eax, dword [ebx]
and dword [edi + 0x48], 0
mov dword [edi + 0x44], eax
jmp 0x425886
push 0
push pe_nt_image_headers32
push 2
push 0
push 1
push 0x40000000
push dword [edi + 0x38]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ecx, eax
mov dword [edi + 0x3c], ecx
cmp ecx, 0xffffffff
jne 0x4257a7
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x42577f
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x42578a
mov esi, 0x80004005
push esi
push 0x21c
push str.cabextract.cpp
call fcn.0043294e
push dword [edi + 0x38]
push str.Failed_to_create_file:__ls
jmp 0x425626
mov eax, dword [ebx]
mov ebx, dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
push 0
cdq
push 0
push edx
push eax
push ecx
call ebx
test eax, eax
jne 0x4257f6
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x4257d1
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x4257dc
mov esi, 0x80004005
push esi
push 0x223
push str.cabextract.cpp
call fcn.0043294e
push str.Failed_to_set_file_pointer_to_end_of_file.
jmp 0x42587e
push dword [edi + 0x3c]
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
test eax, eax
jne 0x425839
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x425817
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x425822
mov esi, 0x80004005
push esi
push 0x228
push str.cabextract.cpp
call fcn.0043294e
push str.Failed_to_set_end_of_file.
jmp 0x42587e
xor ecx, ecx
push ecx
push ecx
push ecx
xor eax, eax
push eax
push dword [edi + 0x3c]
call ebx
test eax, eax
jne 0x425886
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x42585e
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x425869
mov esi, 0x80004005
push esi
push 0x22e
push str.cabextract.cpp
call fcn.0043294e
push str.Failed_to_set_file_pointer_to_beginning_of_file.
push esi
call fcn.0042fa86
pop ecx
pop ecx
mov dword [edi + 0x30], esi
test esi, esi
pop esi
pop ebx
js 0x425894
mov eax, dword [ebp - 4]
leave
ret
or eax, 0xffffffff
leave
ret