Function at 0x420d16
Capabilities:
Clear file content

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
xor ebx, ebx
inc ebx
push dword [edi + 0x28]
call dword [sym.imp.KERNEL32.dll_SetEvent]
test eax, eax
jne 0x420d6f
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x420d46
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x420d4d
mov esi, 0x80004005
push esi
push 0x204
push str.cabextract.cpp
call fcn.00403821
push str.Failed_to_set_operation_complete_event.
push esi
call fcn.00440237
pop ecx
pop ecx
jmp 0x4210e8
push 0xffffffffffffffff
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0xffffffff
jne 0x420db4
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x420d96
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x420d9d
mov esi, 0x80004005
push esi
push 0x20a
push str.cabextract.cpp
call fcn.00403821
push str.Failed_to_wait_for_begin_operation_event.
jmp 0x420d62
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_ResetEvent]
test eax, eax
jne 0x420df9
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x420dd8
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x420ddf
mov esi, 0x80004005
push esi
push 0x20f
push str.cabextract.cpp
call fcn.00403821
push str.Failed_to_reset_begin_operation_event.
jmp 0x420d62
mov eax, dword [edi + 0x2c]
sub eax, 1
je 0x420e32
sub eax, 4
je 0x420e28
mov ebx, 0x8007139f
push ebx
push 0x21d
push str.cabextract.cpp
mov esi, ebx
call fcn.00403821
push str.Invalid_operation_for_this_state.
push ebx
jmp 0x4210de
mov esi, 0x80004004
jmp 0x4210e8
mov ebx, dword [ebp + 0xc]
push 0xfde9
push 0
push dword [ebx + 4]
push dword [edi + 0x34]
call fcn.004021ac
mov esi, eax
test esi, esi
jns 0x420e63
push dword [ebx + 4]
push str.Failed_to_copy_stream_name:__ls
push esi
call fcn.00440237
add esp, 0xc
jmp 0x4210e5
push dword [edi + 0x28]
call dword [sym.imp.KERNEL32.dll_SetEvent]
test eax, eax
jne 0x420ea8
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x420e87
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x420e8e
mov esi, 0x80004005
push esi
push 0x227
push str.cabextract.cpp
call fcn.00403821
push str.Failed_to_set_operation_complete_event.
jmp 0x4210dd
push 0xffffffffffffffff
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0xffffffff
jne 0x420ef0
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x420ecf
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x420ed6
mov esi, 0x80004005
push esi
push 0x22d
push str.cabextract.cpp
call fcn.00403821
push str.Failed_to_wait_for_begin_operation_event.
jmp 0x4210dd
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_ResetEvent]
test eax, eax
jne 0x420f35
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x420f14
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x420f1b
mov esi, 0x80004005
push esi
push 0x232
push str.cabextract.cpp
call fcn.00403821
push str.Failed_to_reset_begin_operation_event.
jmp 0x4210dd
mov eax, dword [edi + 0x2c]
dec eax
sub eax, 1
je 0x420fab
sub eax, 1
je 0x420f6e
sub eax, 1
je 0x420f67
sub eax, 1
je 0x420f5d
mov ebx, 0x8007139f
push ebx
push 0x268
jmp 0x420e11
mov esi, 0x80004004
jmp 0x4210e5
xor ebx, ebx
jmp 0x4210e8
push 1
push dword [ebx]
call fcn.0040394f
mov dword [edi + 0x40], eax
test eax, eax
jne 0x420f9d
mov esi, 0x8007000e
push esi
push 0x257
push str.cabextract.cpp
call fcn.00403821
push str.Failed_to_allocate_buffer_for_stream.
jmp 0x4210dd
mov eax, dword [ebx]
and dword [edi + 0x48], 0
mov dword [edi + 0x44], eax
jmp 0x4210e5
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 0x42100b
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x420fe7
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x420fee
mov esi, 0x80004005
push esi
push 0x23d
push str.cabextract.cpp
call fcn.00403821
push dword [edi + 0x38]
push str.Failed_to_create_file:__ls
jmp 0x420e55
mov eax, dword [ebx]
mov ebx, dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
push 0
push 0
cdq
push edx
push eax
push ecx
call ebx
test eax, eax
jne 0x421059
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x421038
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x42103f
mov esi, 0x80004005
push esi
push 0x244
push str.cabextract.cpp
call fcn.00403821
push str.Failed_to_set_file_pointer_to_end_of_file.
jmp 0x4210dd
push dword [edi + 0x3c]
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
test eax, eax
jne 0x42109b
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x42107d
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x421084
mov esi, 0x80004005
push esi
push 0x249
push str.cabextract.cpp
call fcn.00403821
push str.Failed_to_set_end_of_file.
jmp 0x4210dd
xor eax, eax
push eax
push eax
push eax
push eax
push dword [edi + 0x3c]
call ebx
test eax, eax
jne 0x4210e5
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x4210c1
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x4210c8
mov esi, 0x80004005
push esi
push 0x24f
push str.cabextract.cpp
call fcn.00403821
push str.Failed_to_set_file_pointer_to_beginning_of_file.
push esi
call fcn.00440237
pop ecx
pop ecx
xor ebx, ebx
inc ebx
mov dword [edi + 0x30], esi
test esi, esi
jns 0x4210f2
or ebx, 0xffffffff
pop edi
pop esi
mov eax, ebx
pop ebx
pop ebp
ret 8