Function at 0x4239aa
Capabilities:
Clear file content

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
push dword [edi + 0x28]
call dword [sym.imp.KERNEL32.dll_SetEvent]
or ebx, 0xffffffff
test eax, eax
jne 0x4239fd
call dword [sym.imp.KERNEL32.dll_GetLastError]
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov eax, 0x80004005
test esi, esi
cmovns esi, eax
push esi
push 0x20f
push str.cabextract.cpp
call fcn.00433f1c
push str.Failed_to_set_operation_complete_event.
jmp 0x423d4e
push ebx
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, ebx
jne 0x423a43
call dword [sym.imp.KERNEL32.dll_GetLastError]
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov eax, 0x80004005
test esi, esi
cmovns esi, eax
push esi
push 0x215
push str.cabextract.cpp
call fcn.00433f1c
push str.Failed_to_wait_for_begin_operation_event.
jmp 0x423d4e
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_ResetEvent]
test eax, eax
jne 0x423a88
call dword [sym.imp.KERNEL32.dll_GetLastError]
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov eax, 0x80004005
test esi, esi
cmovns esi, eax
push esi
push 0x21a
push str.cabextract.cpp
call fcn.00433f1c
push str.Failed_to_reset_begin_operation_event.
jmp 0x423d4e
mov eax, dword [edi + 0x2c]
dec eax
je 0x423ac7
sub eax, 4
je 0x423abd
mov ebx, 0x8007139f
push ebx
push 0x228
push str.cabextract.cpp
mov esi, ebx
call fcn.00433f1c
push str.Invalid_operation_for_this_state.
push ebx
call fcn.004348ae
or ebx, 0xffffffff
jmp 0x423d54
mov esi, 0x80004004
jmp 0x423d56
mov eax, dword [ebp + 0xc]
push 0xfde9
push 0
push dword [eax + 4]
push dword [edi + 0x34]
call fcn.00437ef2
mov esi, eax
test esi, esi
jns 0x423afb
mov eax, dword [ebp + 0xc]
push dword [eax + 4]
push str.Failed_to_copy_stream_name:__ls
push esi
call fcn.004348ae
add esp, 0xc
jmp 0x423d56
push dword [edi + 0x28]
call dword [sym.imp.KERNEL32.dll_SetEvent]
test eax, eax
jne 0x423b31
call dword [sym.imp.KERNEL32.dll_GetLastError]
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov eax, 0x80004005
test esi, esi
cmovns esi, eax
push esi
push 0x232
jmp 0x4239e9
push ebx
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, ebx
jne 0x423b68
call dword [sym.imp.KERNEL32.dll_GetLastError]
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov eax, 0x80004005
test esi, esi
cmovns esi, eax
push esi
push 0x238
jmp 0x423a2f
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_ResetEvent]
test eax, eax
jne 0x423b9e
call dword [sym.imp.KERNEL32.dll_GetLastError]
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov eax, 0x80004005
test esi, esi
cmovns esi, eax
push esi
push 0x23d
jmp 0x423a74
mov eax, dword [edi + 0x2c]
dec eax
dec eax
je 0x423c0c
dec eax
je 0x423bc9
dec eax
je 0x423bc2
dec eax
je 0x423abd
mov ebx, 0x8007139f
push ebx
push 0x273
jmp 0x423a9e
xor eax, eax
jmp 0x423d59
mov eax, dword [ebp + 0xc]
push 1
push dword [eax]
call fcn.00434ed9
mov dword [edi + 0x40], eax
test eax, eax
jne 0x423bfb
mov esi, 0x8007000e
push esi
push 0x262
push str.cabextract.cpp
call fcn.00433f1c
push str.Failed_to_allocate_buffer_for_stream.
jmp 0x423d4e
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
and dword [edi + 0x48], 0
mov dword [edi + 0x44], eax
jmp 0x423d56
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, ebx
jne 0x423c6b
call dword [sym.imp.KERNEL32.dll_GetLastError]
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov eax, 0x80004005
test esi, esi
cmovns esi, eax
push esi
push 0x248
push str.cabextract.cpp
call fcn.00433f1c
push dword [edi + 0x38]
push str.Failed_to_create_file:__ls
jmp 0x423aed
mov eax, dword [ebp + 0xc]
push 0
push 0
mov eax, dword [eax]
cdq
push edx
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
jne 0x423cba
call dword [sym.imp.KERNEL32.dll_GetLastError]
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov eax, 0x80004005
test esi, esi
cmovns esi, eax
push esi
push 0x24f
push str.cabextract.cpp
call fcn.00433f1c
push str.Failed_to_set_file_pointer_to_end_of_file.
jmp 0x423d4e
push dword [edi + 0x3c]
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
test eax, eax
jne 0x423cfc
call dword [sym.imp.KERNEL32.dll_GetLastError]
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov eax, 0x80004005
test esi, esi
cmovns esi, eax
push esi
push 0x254
push str.cabextract.cpp
call fcn.00433f1c
push str.Failed_to_set_end_of_file.
jmp 0x423d4e
push 0
push 0
xorps xmm0, xmm0
movlpd qword [ebp - 8], xmm0
push dword [ebp - 4]
push dword [ebp - 8]
push dword [edi + 0x3c]
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
test eax, eax
jne 0x423d56
call dword [sym.imp.KERNEL32.dll_GetLastError]
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov eax, 0x80004005
test esi, esi
cmovns esi, eax
push esi
push 0x25a
push str.cabextract.cpp
call fcn.00433f1c
push str.Failed_to_set_file_pointer_to_beginning_of_file.
push esi
call fcn.004348ae
pop ecx
pop ecx
xor eax, eax
inc eax
test esi, esi
mov dword [edi + 0x30], esi
pop edi
cmovns ebx, eax
pop esi
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
ret 8