Function at 0x401c90
Capabilities:
Check for time delay via gettickcount
Create directory
Get common file path
Get file size
Resolve function by parsing pe exports
Write file on windows

Disassembly:
push 0xffffffffffffffff
push 0x46dad5
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x26c
push ebx
push ebp
push esi
mov ebp, ecx
push edi
mov dword [esp + 0x44], ebp
call fcn.00468777
mov ecx, dword [eax + 4]
call fcn.00457f84
mov eax, dword [esp + 0x294]
xor esi, esi
cmp eax, esi
mov dword [esp + 0x284], esi
jne 0x401ce7
push esi
push esi
push str._CBinPacket_Invalidate_params
call fcn.0045f42f
jmp 0x40252a
mov ecx, dword [ebp + 4]
or edi, 0xffffffff
cmp ecx, edi
jne 0x401cfd
mov dword [esp + 0x284], edi
jmp 0x402535
mov dword [eax], esi
mov eax, dword [ebp + 4]
push esi
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
cmp eax, 0x84c
mov dword [esp + 0x50], eax
jge 0x401d2d
push esi
push esi
push str.Bin_packets_size_is_too_small_maybe_it_has_been_destructed_
call fcn.0045f42f
mov dword [esp + 0x284], edi
jmp 0x402535
mov ecx, dword [ebp + 4]
push ecx
lea ecx, [esp + 0x2c]
call fcn.00458ed9
mov ebx, dword [esp + 0x290]
push 0x84c
push ebx
lea ecx, [esp + 0x30]
mov byte [esp + 0x28c], 1
mov dword [esp + 0x24], esi
call fcn.00459172
mov edi, eax
mov eax, dword [ebx + 0x844]
cmp eax, 0xfffafffa
mov dword [esp + 0x24], esi
jne 0x401d9c
push 0x84a
push ebx
push esi
mov dword [esp + 0x30], 1
call fcn.00406d00
add esp, 0xc
cmp ax, si
je 0x401d9c
push esi
push esi
push str.CRC_Error__nPAC_file_may_be_damaged_
call fcn.0045f42f
jmp 0x402519
lea esi, [ebx + 0x34]
lea ecx, [esp + 0x10]
push esi
call fcn.0045854a
push str.PAC_
lea ecx, [esp + 0x14]
mov byte [esp + 0x288], 2
call fcn.00451311
test eax, eax
je 0x401de1
push str.PAC_
push 0
lea ecx, [esp + 0x18]
call fcn.00450e89
mov edx, dword [esp + 0x10]
push edx
push esi
call fcn.0043f59c
add esp, 8
cmp edi, 0x84c
jne 0x4024fa
push str.BP_R1.0.0
push ebx
call fcn.0043f64f
add esp, 8
test eax, eax
jne 0x4024fa
mov eax, dword [esp + 0x50]
mov ecx, dword [ebx + 0x30]
cmp ecx, eax
je 0x401e1c
push 0
push 0
push str.Bin_packets_size_is_not_correct_maybe_it_has_been_destructed_
jmp 0x402503
mov eax, dword [ebx + 0x434]
test eax, eax
jne 0x401e34
push 0
push 0
push str.There_is_no_files_in_packet_
jmp 0x402503
mov ecx, dword [0x4ad780]
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x28c]
mov byte [esp + 0x284], 3
test eax, eax
je 0x401e9e
push eax
lea ecx, [esp + 0x1c]
call fcn.0045854a
push 0x5c
lea ecx, [esp + 0x1c]
mov byte [esp + 0x288], 4
call fcn.004516e1
mov edi, dword [esp + 0x18]
lea esi, [ebp + 0x10]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
push edi
push str._s_DownloadFiles_d
push esi
call fcn.00451685
add esp, 0x10
lea ecx, [esp + 0x18]
mov byte [esp + 0x284], 3
call fcn.004584d6
jmp 0x401ee0
lea edx, [esp + 0x74]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
jne 0x401ec3
push eax
push eax
push str.Can_not_get_temp_path_
call fcn.0045f42f
jmp 0x402484
lea esi, [ebp + 0x10]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
lea eax, [esp + 0x78]
push eax
push 0x4a9344
push esi
call fcn.00451685
add esp, 0x10
lea ecx, [esp + 0x58]
call fcn.004372eb
mov eax, dword [esi]
push 0
push eax
lea ecx, [esp + 0x60]
mov byte [esp + 0x28c], 5
call fcn.004373b0
test eax, eax
je 0x401f0d
mov eax, dword [esi]
mov ecx, ebp
push eax
call fcn.004025a0
lea ecx, [esp + 0x58]
call fcn.00437366
mov eax, dword [esi]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x401f9f
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x401f9f
mov ecx, dword [0x4ad780]
mov dword [esp + 0x1c], ecx
mov esi, dword [esi]
lea edx, [esp + 0x1c]
push esi
push str.Can_not_create_directory__s_
push edx
mov byte [esp + 0x290], 6
call fcn.00451685
mov eax, dword [esp + 0x28]
add esp, 0xc
push 0
push 0
push eax
call fcn.0045f42f
lea ecx, [esp + 0x1c]
mov byte [esp + 0x284], 5
call fcn.004584d6
lea ecx, [esp + 0x58]
mov byte [esp + 0x284], 3
call fcn.0043732a
lea ecx, [esp + 0x14]
mov byte [esp + 0x284], 2
call fcn.004584d6
jmp 0x402508
mov esi, dword [esi]
lea ecx, [esp + 0x14]
push esi
push 0x4a9300
push ecx
call fcn.00451685
mov esi, dword [ebx + 0x434]
mov eax, esi
shl eax, 7
add eax, esi
lea edx, [eax + eax*4]
shl edx, 2
push edx
call fcn.00458a48
mov ebp, eax
add esp, 0x10
test ebp, ebp
mov dword [esp + 0x48], ebp
je 0x402099
dec esi
mov edx, ebp
test esi, esi
jl 0x402001
inc esi
mov ecx, 0x285
xor eax, eax
mov edi, edx
add edx, 0xa14
rep stosd dword es:[edi], eax
mov dword [edx - 0xa14], 0xa14
dec esi
jne 0x401fe3
mov ecx, dword [ebx + 0x434]
mov edi, ebp
mov eax, ecx
shl eax, 7
add eax, ecx
lea ecx, [eax + eax*4]
xor eax, eax
shl ecx, 2
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [ebx + 0x434]
mov eax, ecx
shl eax, 7
add eax, ecx
lea ecx, [esp + 0x28]
lea eax, [eax + eax*4]
shl eax, 2
push eax
push ebp
call fcn.00459172
mov edx, dword [ebx + 0x434]
mov ecx, edx
shl ecx, 7
add ecx, edx
lea ecx, [ecx + ecx*4]
shl ecx, 2
cmp eax, ecx
je 0x4020d8
push 0
call fcn.00458a71
add esp, 4
push 0
push 0
push str._CBinPaket_Out_of_memory_
call fcn.0045f42f
lea ecx, [esp + 0x58]
mov byte [esp + 0x284], 3
call fcn.0043732a
lea ecx, [esp + 0x14]
mov byte [esp + 0x284], 2
call fcn.004584d6
jmp 0x402508
mov eax, dword [esp + 0x24]
xor esi, esi
cmp eax, esi
je 0x4020f1
push ecx
push ebp
push esi
call fcn.00406d00
add esp, 0xc
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + 0x434]
mov dword [esp + 0x38], esi
cmp eax, esi
mov dword [esp + 0x18], esi
jle 0x4022f7
lea esi, [ebp + 0x604]
mov dword [esp + 0x40], esi
push 0
push 0
push str.Bin_packet_version_is_not_support_
call fcn.0045f42f