Function at 0x40496f
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x11c
mov eax, dword [0x4960a8]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, edx
push edi
push esi
mov ebx, ecx
mov dword [ebp - 0x10c], esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x4049bc
push esi
push str.DING::CFilePacker::Extract_632__:_packed_file_does_not_exist:__s_r_n
call fcn.00416f04
pop ecx
pop ecx
mov eax, 0x80070002
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00459871
leave
ret
call fcn.0040635f
mov esi, eax
xor edi, edi
mov dword [ebp - 0xe4], esi
cmp esi, edi
jne 0x4049e1
push str.DING::CFilePacker::Extract_641__:_failed_to_create_ding::CFileStreamImpl_r_n
call fcn.00416f04
pop ecx
mov eax, 0x8007000e
jmp 0x4049ad
call fcn.0040633c
push edi
push 0x8000000
push 3
push edi
push 1
mov esi, eax
push SysReAllocString
push dword [ebp - 0x10c]
mov ecx, esi
mov dword [ebp - 0xd4], esi
call fcn.0042d0bc
mov ecx, esi
test eax, eax
jne 0x404a44
call fcn.0042d07f
mov esi, eax
push esi
push str.DING::CFilePacker::Extract_652__:_failed_to_open_this_file:__lu_r_n
jmp 0x404b55
and esi, 0xffff
or esi, 0x80070000
mov ecx, dword [ebp - 0xe4]
add ecx, 8
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, esi
jmp 0x4049ad
push edi
mov esi, ebx
call fcn.00406589
test al, al
jne 0x404a62
push 0x47de5c
call fcn.00416f04
pop ecx
mov esi, 0x8000ffff
jmp 0x404a2f
mov esi, dword [ebx + 0x20]
push esi
push str.End_of_EXE_module:__lu
call fcn.00416edc
pop ecx
pop ecx
mov ecx, dword [ebp - 0xd4]
push 4
lea eax, [ebx + 0x24]
push eax
push edi
push dword [ebx + 0x20]
mov dword [eax], edi
call fcn.0042d18e
test eax, eax
jne 0x404aa5
mov ecx, dword [ebp - 0xd4]
call fcn.0042d07f
mov esi, eax
push esi
push str.failed_to_read_signature_size_from_end_of_PE___lu__r_n
jmp 0x404b55
mov eax, dword [ebx]
add esi, dword [ebx + 0x24]
push 6
mov ecx, ebx
call dword [eax + 4]
test eax, eax
jne 0x404ae1
mov ecx, dword [ebp - 0xd4]
call fcn.0042cded
mov eax, dword [ebp - 0xe4]
mov edx, dword [ebx]
push edi
push esi
push edi
add eax, 0xc
push eax
push 6
mov ecx, ebx
call dword [edx + 8]
cmp eax, edi
jge 0x404ae1
mov esi, eax
jmp 0x404a2f
mov ecx, dword [ebp - 0xd4]
push edi
push edi
push esi
call fcn.0042cd74
test eax, eax
jne 0x404b26
mov ecx, dword [ebp - 0xd4]
call fcn.0042d07f
mov ebx, eax
push ebx
push esi
push str.DING::CFilePacker::Extract_693__:_failed_to_seek_to__lu___lu__r_n
call fcn.00416f04
add esp, 0xc
cmp ebx, edi
jle 0x404b1f
and ebx, 0xffff
or ebx, 0x80070000
mov esi, ebx
jmp 0x404a2f
mov esi, dword [ebp - 0xd4]
push 4
lea eax, [ebp - 0x118]
push eax
mov ecx, esi
mov dword [ebp - 0x118], edi
call fcn.0042cdf8
mov ecx, esi
test eax, eax
jne 0x404b69
call fcn.0042d07f
mov esi, eax
push esi
push str.DING::CFilePacker::Extract_701__:_failed_to_Read_signature___lu__r_n
call fcn.00416f04
cmp esi, edi
pop ecx
pop ecx
jg 0x404a23
jmp 0x404a2f
push 4
lea eax, [ebp - 0xec]
push eax
mov dword [ebp - 0xec], edi
call fcn.0042cdf8
test eax, eax
jne 0x404b92
mov ecx, esi
call fcn.0042d07f
mov esi, eax
push esi
push str.DING::CFilePacker::Extract_713__:_failed_to_read_version___lu__r_n
jmp 0x404b55
cmp dword [ebp - 0xec], 2
jbe 0x404bb1
push dword [ebp - 0xec]
push str.DING::CFilePacker::Extract_719__:_unexpected_version___lu__r_n
call fcn.00416f04
pop ecx
jmp 0x404a5a
push 8
lea eax, [ebp - 0x108]
push eax
mov ecx, esi
mov dword [ebp - 0x108], edi
mov dword [ebp - 0x104], edi
call fcn.0042cdf8
mov ecx, esi
test eax, eax
jne 0x404be5
call fcn.0042d07f
mov esi, eax
push esi
push str.DING::CFilePacker::Extract_732__:_failed_to_read_count_of_files:__lu_r_n
jmp 0x404b55
push 4
lea eax, [ebp - 0xfc]
push eax
mov dword [ebp - 0xfc], edi
call fcn.0042cdf8
test eax, eax
jne 0x404c11
mov ecx, esi
call fcn.0042d07f
mov esi, eax
push esi
push str.DING::CFilePacker::Extract_745__:_failed_to_read_pointer_archive_size:__lu_r_n
jmp 0x404b55
push 1
lea ecx, [ebp - 0xd0]
call fcn.0043057a
lea ecx, [ebp - 0xd0]
call fcn.004305ba
push dword [ebp - 0xfc]
mov esi, eax
push 2
mov ecx, esi
call fcn.0042fa66
test eax, eax
jne 0x404c5e
push str.DING::CFilePacker::Extract_758__:_out_of_memory_r_n
call fcn.00416f04
pop ecx
lea ecx, [ebp - 0xd0]
call fcn.004305a1
mov esi, 0x8007000e
jmp 0x404a2f
push dword [ebp - 0xfc]
mov ecx, esi
call fcn.0042d07f
mov ecx, dword [ebp - 0xd4]
push eax
call fcn.0042cdf8
test eax, eax
jne 0x404cb5
mov ecx, dword [ebp - 0xd4]
call fcn.0042d07f
mov esi, eax
push esi
push str.DING::CFilePacker::Extract_766__:_failed_to_read_pointer_archive:__lu_r_n
call fcn.00416f04
cmp esi, edi
pop ecx
pop ecx
jle 0x404ca5
and esi, 0xffff
or esi, 0x80070000
lea ecx, [ebp - 0xd0]
call fcn.004305a1
jmp 0x404a2f
mov dword [ebp - 0xf8], edi
mov dword [ebp - 0xf4], edi
cmp dword [ebp - 0x104], edi
jb 0x404f7d
ja 0x404cdb
cmp dword [ebp - 0x108], edi
jbe 0x404f7d
push 0x497a28
lea ecx, [ebp - 0xd8]
call fcn.004037fc
lea eax, [ebp - 0xd8]
push eax
lea ecx, [ebp - 0xd0]
call fcn.004343d7
test eax, eax
je 0x404f9d
lea eax, [ebp - 0xe0]
push eax
lea ecx, [ebp - 0xd0]
call fcn.00432f82
test eax, eax
je 0x404f9d
lea eax, [ebp - 0x114]
push eax
lea ecx, [ebp - 0xd0]
call fcn.00432f62
test eax, eax
je 0x404f9d
mov eax, dword [ebp - 0x114]
mov edx, dword [ebx]
push eax
mov ecx, ebx
mov dword [ebp - 0xe8], eax
call dword [edx + 4]
sub eax, edi
je 0x404e92
dec eax
je 0x404dcf
dec eax
je 0x404e77
dec eax
jne 0x404f0a
mov edi, dword [ebp - 0xe4]
call fcn.004064aa
push dword [ebp - 0xdc]
mov esi, edi
push dword [ebp - 0xe0]
call fcn.004064f9
mov ecx, dword [ebp - 0xd4]
push 1
push dword [ebp - 0xdc]
push dword [ebp - 0xe0]
call fcn.0042cd74
push dword [ebp - 0xdc]
mov edx, dword [ebx]
push dword [ebp - 0xe0]
lea eax, [esi + 0xc]
push dword [ebp - 0xd8]
mov ecx, ebx
push eax
push dword [ebp - 0xe8]
call dword [edx + 8]
test eax, eax
jl 0x404f6d
xor edi, edi
jmp 0x404ec3
call fcn.0040635f
mov esi, eax
cmp esi, edi
je 0x404f23
call fcn.0040633c
push edi
push 0x8000000
push 3
push edi
push 1
push SysReAllocString
push dword [ebp - 0x10c]
mov ecx, eax
mov dword [ebp - 0x110], ecx
call fcn.0042d0bc
test eax, eax
je 0x404f35
mov ecx, dword [ebp - 0xd4]
call fcn.0042d262
mov ecx, dword [ebp - 0x110]
push edx
push eax
call fcn.0042d06d
mov edi, esi
call fcn.004064aa
push dword [ebp - 0xdc]
push dword [ebp - 0xe0]
call fcn.004064f9
push dword [ebp - 0xdc]
mov edx, dword [ebx]
push dword [ebp - 0xe0]
lea eax, [esi + 0xc]
push dword [ebp - 0xd8]
mov ecx, ebx
push eax
push dword [ebp - 0xe8]
call dword [edx + 8]
add esi, 8
mov edi, eax
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
test edi, edi
jl 0x404f6f
xor edi, edi
mov ecx, dword [ebp - 0xd4]
push 1
push dword [ebp - 0xdc]
push dword [ebp - 0xe0]
call fcn.0042cd74
jmp 0x404ec3
push dword [ebp - 0xdc]
mov eax, dword [ebp - 0xe4]
push dword [ebp - 0xe0]
mov edx, dword [ebx]
push dword [ebp - 0xd8]
add eax, 0xc
push eax
push dword [ebp - 0xe8]
mov ecx, ebx
call dword [edx + 8]
cmp eax, edi
jl 0x404f6d
mov ecx, dword [ebp - 0xd8]
add ecx, 0xfffffff0
call fcn.00403af7
add dword [ebp - 0xf8], 1
adc dword [ebp - 0xf4], edi
mov eax, dword [ebp - 0xf4]
cmp eax, dword [ebp - 0x104]
jb 0x404cdb
ja 0x404f7d
mov eax, dword [ebp - 0xf8]
cmp eax, dword [ebp - 0x108]
jb 0x404cdb
jmp 0x404f7d
push dword [ebp - 0xe8]
push str.DING::CFilePacker::Extract_854__:_invalid_extract_type:__d
call fcn.00416f04
pop ecx
pop ecx
mov edi, 0x8000ffff
jmp 0x404f6f
push str.DING::CFilePacker::Extract_803__:_failed_to_create_ding::CFileStreamImpl_r_n
call fcn.00416f04
pop ecx
mov edi, 0x8007000e
jmp 0x404f6f
mov ecx, dword [ebp - 0x110]
call fcn.0042d07f
mov ebx, eax
push ebx
push str.DING::CFilePacker::Extract_814__:_failed_to_open_this_file:__lu_r_n
call fcn.00416f04
cmp ebx, edi
pop ecx
pop ecx
jle 0x404f5f
and ebx, 0xffff
or ebx, 0x80070000
add esi, 8
mov eax, dword [esi]
mov ecx, esi
mov edi, ebx
call dword [eax + 8]
jmp 0x404f6f
mov edi, eax
mov ecx, dword [ebp - 0xd8]
add ecx, 0xfffffff0
call fcn.00403af7
lea ecx, [ebp - 0xd0]
call fcn.004305a1
mov ecx, dword [ebp - 0xe4]
add ecx, 8
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, edi
jmp 0x4049ad
push str.DING::CFilePacker::Extract_779__:_failed_to_read_data_from_pointer_archive_r_n
call fcn.00416f04
pop ecx
mov ecx, dword [ebp - 0xd8]
add ecx, 0xfffffff0
call fcn.00403af7
lea ecx, [ebp - 0xd0]
call fcn.004305a1
jmp 0x404a5b