Function at 0x424a22
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 0x424a77
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x424a52
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x424a5d
mov esi, 0x80004005
push esi
push 0x1e3
push str.cabextract.cpp
call fcn.0043166e
push str.Failed_to_set_operation_complete_event.
jmp 0x424db2
push 0xffffffffffffffff
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0xffffffff
jne 0x424ac0
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x424a9b
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x424aa6
mov esi, 0x80004005
push esi
push 0x1e9
push str.cabextract.cpp
call fcn.0043166e
push str.Failed_to_wait_for_begin_operation_event.
jmp 0x424db2
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_ResetEvent]
test eax, eax
jne 0x424b06
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x424ae1
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x424aec
mov esi, 0x80004005
push esi
push 0x1ee
push str.cabextract.cpp
call fcn.0043166e
push str.Failed_to_reset_begin_operation_event.
jmp 0x424db2
mov eax, dword [edi + 0x2c]
dec eax
je 0x424b3a
sub eax, 4
je 0x424b30
mov esi, 0x8007139f
push esi
push 0x1fc
push str.cabextract.cpp
call fcn.0043166e
push str.Invalid_operation_for_this_state.
jmp 0x424db2
mov esi, 0x80004004
jmp 0x424dba
push 0xfde9
push 0
push dword [ebx + 4]
push dword [edi + 0x34]
call fcn.0042fbee
mov esi, eax
test esi, esi
jns 0x424b68
push dword [ebx + 4]
push str.Failed_to_copy_stream_name:__ls
push esi
call fcn.0042eef6
add esp, 0xc
jmp 0x424dba
push dword [edi + 0x28]
call dword [sym.imp.KERNEL32.dll_SetEvent]
test eax, eax
jne 0x424b9f
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x424b89
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x424b94
mov esi, 0x80004005
push esi
push 0x206
jmp 0x424a63
push 0xffffffffffffffff
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0xffffffff
jne 0x424bd9
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x424bc3
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x424bce
mov esi, 0x80004005
push esi
push 0x20c
jmp 0x424aac
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_ResetEvent]
test eax, eax
jne 0x424c10
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x424bfa
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x424c05
mov esi, 0x80004005
push esi
push 0x211
jmp 0x424af2
mov eax, dword [edi + 0x2c]
dec eax
dec eax
je 0x424c7a
dec eax
je 0x424c3d
dec eax
je 0x424c34
dec eax
je 0x424b30
mov esi, 0x8007139f
push esi
push 0x247
jmp 0x424b1c
and dword [ebp - 4], 0
jmp 0x424dba
push 1
push dword [ebx]
call fcn.0043186c
mov dword [edi + 0x40], eax
test eax, eax
jne 0x424c6c
mov esi, 0x8007000e
push esi
push 0x236
push str.cabextract.cpp
call fcn.0043166e
push str.Failed_to_allocate_buffer_for_stream.
jmp 0x424db2
mov eax, dword [ebx]
and dword [edi + 0x48], 0
mov dword [edi + 0x44], eax
jmp 0x424dba
push 0
push 0x80
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 0x424cdb
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x424cb3
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x424cbe
mov esi, 0x80004005
push esi
push 0x21c
push str.cabextract.cpp
call fcn.0043166e
push dword [edi + 0x38]
push str.Failed_to_create_file:__ls
jmp 0x424b5a
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 0x424d2a
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x424d05
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x424d10
mov esi, 0x80004005
push esi
push 0x223
push str.cabextract.cpp
call fcn.0043166e
push str.Failed_to_set_file_pointer_to_end_of_file.
jmp 0x424db2
push dword [edi + 0x3c]
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
test eax, eax
jne 0x424d6d
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x424d4b
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x424d56
mov esi, 0x80004005
push esi
push 0x228
push str.cabextract.cpp
call fcn.0043166e
push str.Failed_to_set_end_of_file.
jmp 0x424db2
xor ecx, ecx
push ecx
push ecx
push ecx
xor eax, eax
push eax
push dword [edi + 0x3c]
call ebx
test eax, eax
jne 0x424dba
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x424d92
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
js 0x424d9d
mov esi, 0x80004005
push esi
push 0x22e
push str.cabextract.cpp
call fcn.0043166e
push str.Failed_to_set_file_pointer_to_beginning_of_file.
push esi
call fcn.0042eef6
pop ecx
pop ecx
mov dword [edi + 0x30], esi
test esi, esi
pop esi
pop ebx
js 0x424dc8
mov eax, dword [ebp - 4]
leave
ret
or eax, 0xffffffff
leave
ret