Function at 0x4b70f0
Capabilities:
Check if file exists
Check os version
Create directory
Get common file path
Get file attributes
Get program files directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48c
mov eax, dword [0x53f4a0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov esi, ecx
push 4
mov dword [ebp - 0x418], esi
call fcn.004eb0f9
xor ebx, ebx
add esp, 4
cmp eax, ebx
je 0x4b712e
lea ecx, [ebp - 0x444]
mov dword [eax], ecx
mov dword [ebp - 0x444], eax
jmp 0x4b7134
mov dword [ebp - 0x444], ebx
push 4
mov dword [ebp - 0x438], ebx
mov dword [ebp - 0x434], ebx
mov dword [ebp - 0x430], ebx
call fcn.004eb0f9
add esp, 4
cmp eax, ebx
je 0x4b7164
lea edx, [ebp - 0x45c]
mov dword [eax], edx
mov dword [ebp - 0x45c], eax
jmp 0x4b716a
mov dword [ebp - 0x45c], ebx
push 4
mov dword [ebp - 0x450], ebx
mov dword [ebp - 0x44c], ebx
mov dword [ebp - 0x448], ebx
call fcn.004eb0f9
add esp, 4
cmp eax, ebx
je 0x4b719a
lea ecx, [ebp - 0x474]
mov dword [eax], ecx
mov dword [ebp - 0x474], eax
jmp 0x4b71a0
mov dword [ebp - 0x474], ebx
mov edi, dword [esi + 0x198]
add esi, 0x188
mov dword [ebp - 0x468], ebx
mov dword [ebp - 0x464], ebx
mov dword [ebp - 0x460], ebx
mov dword [ebp - 0x41c], esi
cmp dword [esi + 0xc], edi
jbe 0x4b71ce
call fcn.004eaba2
mov edx, dword [esi]
mov dword [ebp - 0x424], edx
mov edx, dword [esi + 0xc]
mov dword [ebp - 0x40c], edx
cmp edx, dword [esi + 0x10]
jbe 0x4b71ef
call fcn.004eaba2
mov edx, dword [ebp - 0x40c]
push edi
mov ecx, esi
mov esi, dword [ebp - 0x424]
mov eax, dword [ecx]
push esi
push edx
push eax
lea eax, [ebp - 0x42c]
push eax
call fcn.004b55f0
mov edi, dword [ebp - 0x418]
mov esi, dword [edi + 0x1b0]
add edi, 0x1a0
mov dword [ebp - 0x420], edi
cmp dword [edi + 0xc], esi
jbe 0x4b722b
call fcn.004eaba2
mov eax, dword [edi + 0xc]
mov ecx, dword [edi]
mov dword [ebp - 0x42c], ecx
mov dword [ebp - 0x40c], eax
cmp eax, dword [edi + 0x10]
jbe 0x4b7246
call fcn.004eaba2
mov edx, dword [ebp - 0x42c]
mov ecx, dword [ebp - 0x40c]
mov eax, dword [edi]
push esi
push edx
push ecx
push eax
lea edx, [ebp - 0x42c]
push edx
mov ecx, edi
call fcn.004b55f0
mov edi, dword [ebp - 0x418]
mov esi, dword [edi + 0x1c8]
add edi, 0x1b8
cmp dword [edi + 0xc], esi
jbe 0x4b7282
call fcn.004eaba2
mov eax, dword [edi]
mov dword [ebp - 0x42c], eax
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x40c], eax
cmp eax, dword [edi + 0x10]
jbe 0x4b729d
call fcn.004eaba2
mov ecx, dword [ebp - 0x42c]
mov edx, dword [ebp - 0x40c]
mov eax, dword [edi]
push esi
push ecx
push edx
push eax
lea eax, [ebp - 0x42c]
push eax
mov ecx, edi
call fcn.004b55f0
lea ecx, [ebp - 0x474]
push ecx
lea edx, [ebp - 0x45c]
push edx
lea eax, [ebp - 0x444]
push eax
mov ecx, 0x542518
call fcn.00490a10
push 4
call fcn.004eb0f9
add esp, 4
cmp eax, ebx
je 0x4b72fa
lea ecx, [ebp - 0x48c]
mov dword [eax], ecx
mov dword [ebp - 0x48c], eax
jmp 0x4b7300
mov dword [ebp - 0x48c], ebx
mov edx, dword [0x5427f0]
mov eax, dword [edx + 0xc]
mov ecx, 0x5427f0
mov dword [ebp - 0x480], ebx
mov dword [ebp - 0x47c], ebx
mov dword [ebp - 0x478], ebx
call eax
lea ecx, [ebp - 0x408]
add eax, 0x10
push ecx
mov dword [ebp - 0x414], eax
mov dword [ebp - 0x408], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x4b735e
cmp dword [ebp - 0x404], 6
jb 0x4b735e
mov ecx, dword [ebp - 0x418]
mov byte [ecx + 0x13a], 1
jmp 0x4b7364
mov ecx, dword [ebp - 0x418]
mov eax, 7
xor edx, edx
mov dword [ebp - 0x2dc], eax
mov dword [ebp - 0x2c0], eax
mov dword [ebp - 0x2a4], eax
mov dword [ebp - 0x288], eax
xor eax, eax
mov dword [ebp - 0x2e0], ebx
mov word [ebp - 0x2f0], dx
mov dword [ebp - 0x2c4], ebx
mov word [ebp - 0x2d4], dx
mov dword [ebp - 0x2a8], ebx
mov word [ebp - 0x2b8], dx
mov dword [ebp - 0x28c], ebx
mov word [ebp - 0x29c], ax
cmp byte [ecx + 0x13a], al
jne 0x4b77b0
lea edx, [ebp - 0x48c]
push edx
call fcn.004b67f0
push ebx
push 0x26
lea eax, [ebp - 0x210]
push eax
push ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
mov esi, dword [ebp - 0x480]
mov eax, dword [ebp - 0x47c]
cmp esi, eax
jbe 0x4b73fd
call fcn.004eaba2
mov eax, dword [ebp - 0x47c]
mov ecx, dword [ebp - 0x48c]
mov dword [ebp - 0x410], ecx
mov edi, esi
jmp 0x4b7410
mov esi, eax
cmp dword [ebp - 0x480], eax
jbe 0x4b741f
call fcn.004eaba2
mov eax, dword [ebp - 0x410]
cmp eax, ebx
je 0x4b7431
cmp eax, dword [ebp - 0x48c]
je 0x4b7436
call fcn.004eaba2
cmp edi, esi
je 0x4b77b0
mov eax, dword [ebp - 0x410]
xor edx, edx
mov dword [ebp - 0x214], 7
mov dword [ebp - 0x218], ebx
mov word [ebp - 0x228], dx
cmp eax, ebx
jne 0x4b7779
call fcn.004eaba2
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x4b7476
call fcn.004eaba2
push 0xffffffffffffffff
push ebx
lea ecx, [edi + 0x70]
xor eax, eax
push ecx
mov esi, 7
lea ecx, [ebp - 0x280]
mov dword [ebp - 0x268], esi
mov dword [ebp - 0x26c], ebx
mov word [ebp - 0x27c], ax
call fcn.00402df0
sub esp, 0x1c
mov ecx, esp
mov dword [ecx + 0x18], esi
xor edx, edx
lea eax, [ebp - 0x210]
mov dword [ecx + 0x14], ebx
mov word [ecx + 4], dx
lea esi, [eax + 2]
lea esp, [esp]
mov dx, word [eax]
add eax, 2
cmp dx, bx
jne 0x4b74c0
sub eax, esi
sar eax, 1
push eax
lea eax, [ebp - 0x210]
push eax
call fcn.00403060
sub esp, 0x1c
mov ecx, esp
push 0xe
mov esi, 7
xor edx, edx
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x14], ebx
push str._ProgramFiles_
mov word [ecx + 4], dx
call fcn.00403060
lea eax, [ebp - 0x280]
push eax
call fcn.004bea80
add esp, 0x3c
lea ecx, [ebp - 0x22c]
push ecx
sub esp, 0x1c
mov ecx, esp
push 0xffffffffffffffff
push ebx
lea eax, [ebp - 0x280]
xor edx, edx
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x14], ebx
push eax
mov word [ecx + 4], dx
call fcn.00402df0
cmp dword [ebp - 0x410], ebx
jne 0x4b7780
call fcn.004eaba2
mov esi, dword [ebp - 0x410]
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x4b7557
call fcn.004eaba2
sub esp, 0x1c
mov ecx, esp
push 0xffffffffffffffff
push ebx
lea eax, [edi + 0x54]
xor edx, edx
mov dword [ecx + 0x18], 7
mov dword [ecx + 0x14], ebx
push eax
mov word [ecx + 4], dx
call fcn.00402df0
cmp esi, ebx
jne 0x4b778d
call fcn.004eaba2
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x4b7591
call fcn.004eaba2
sub esp, 0x1c
mov ecx, esp
push 0xffffffffffffffff
push ebx
lea eax, [edi + 0x38]
xor edx, edx
mov dword [ecx + 0x18], 7
mov dword [ecx + 0x14], ebx
push eax
mov word [ecx + 4], dx
call fcn.00402df0
cmp esi, ebx
jne 0x4b7794
call fcn.004eaba2
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x4b75cb
call fcn.004eaba2
sub esp, 0x1c
mov ecx, esp
push 0xffffffffffffffff
push ebx
lea eax, [edi + 0x1c]
xor edx, edx
mov dword [ecx + 0x18], 7
mov dword [ecx + 0x14], ebx
push eax
mov word [ecx + 4], dx
call fcn.00402df0
mov ecx, dword [ebp - 0x418]
call fcn.004b5160
test al, al
je 0x4b770a
cmp esi, ebx
jne 0x4b779b
call fcn.004eaba2
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x4b7618
call fcn.004eaba2
push 0xffffffffffffffff
push ebx
push edi
lea ecx, [ebp - 0x2f4]
call fcn.00402df0
push 0xffffffffffffffff
push ebx
lea ecx, [ebp - 0x22c]
push ecx
lea ecx, [ebp - 0x2d8]
call fcn.00402df0
cmp dword [ebp - 0x214], 8
mov eax, dword [ebp - 0x228]
jae 0x4b7651
lea eax, [ebp - 0x228]
lea edx, [ebp - 0x414]
push edx
push eax
call fcn.004bee60
add esp, 8
test eax, eax
je 0x4b76eb
mov edx, dword [ebp - 0x414]
cmp dword [edx - 4], 1
jle 0x4b768a
mov eax, dword [edx - 0xc]
push eax
lea ecx, [ebp - 0x414]
call fcn.00460a30
mov edx, dword [ebp - 0x414]
mov eax, edx
lea esi, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x4b7690
sub eax, esi
sar eax, 1
push eax
push edx
lea ecx, [ebp - 0x2a0]
call fcn.00403060
mov eax, dword [ebp - 0x414]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.004eb0bf
add esp, 8
cmp eax, ebx
jl 0x4b77a6
mov ecx, dword [ebp - 0x414]
cmp eax, dword [ecx - 8]
jg 0x4b77a6
mov esi, dword [ebp - 0x410]
mov dword [ecx - 0xc], eax
mov edx, dword [ebp - 0x414]
xor ecx, ecx
mov word [edx + eax*2], cx
mov ecx, dword [ebp - 0x41c]
lea eax, [ebp - 0x2f4]
push eax
mov byte [ebp - 0x284], 1
mov byte [ebp - 0x283], bl
call fcn.004b6740
cmp dword [ebp - 0x268], 8
jb 0x4b7722
mov ecx, dword [ebp - 0x27c]
push ecx
call fcn.004ea481
add esp, 4
xor edx, edx
cmp dword [ebp - 0x214], 8
mov dword [ebp - 0x268], 7
mov dword [ebp - 0x26c], ebx
mov word [ebp - 0x27c], dx
jb 0x4b7753
mov eax, dword [ebp - 0x228]
push eax
call fcn.004ea481
add esp, 4
cmp esi, ebx
jne 0x4b77a2
call fcn.004eaba2
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x4b7768
call fcn.004eaba2
mov eax, dword [ebp - 0x47c]
add edi, 0x8c
jmp 0x4b7410
mov eax, dword [eax]
jmp 0x4b746c
mov esi, dword [ebp - 0x410]
mov eax, dword [esi]
jmp 0x4b754d
mov eax, dword [esi]
jmp 0x4b7587
mov eax, dword [esi]
jmp 0x4b75c1
mov eax, dword [esi]
jmp 0x4b760e
mov eax, dword [esi]
jmp 0x4b775e
push 0x80070057
call fcn.0045f890
mov eax, dword [ebp - 0x41c]
mov ecx, dword [eax + 0x10]
sub ecx, dword [eax + 0xc]
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4b79e6
mov eax, dword [ebp - 0x434]
mov ecx, dword [ebp - 0x438]
mov edx, eax
sub edx, ecx
test edx, 0xfffffff0
je 0x4b79e6
mov ebx, ecx
cmp ecx, eax
jbe 0x4b7808
call fcn.004eaba2
mov eax, dword [ebp - 0x434]
mov ecx, dword [ebp - 0x438]
mov esi, dword [ebp - 0x444]
mov dword [ebp - 0x410], esi
mov edi, eax
cmp ecx, eax
jbe 0x4b781f
call fcn.004eaba2
test esi, esi
je 0x4b782b
cmp esi, dword [ebp - 0x444]
je 0x4b7830
call fcn.004eaba2
cmp ebx, edi
je 0x4b79e6
test esi, esi
jne 0x4b79c9
call fcn.004eaba2
cmp ebx, dword [esi + 0x10]
jb 0x4b784f
call fcn.004eaba2
mov esi, dword [ebx]
sub esp, 0x1c
mov ecx, esp
mov eax, esi
mov dword [ecx + 0x18], 0xf
mov dword [ecx + 0x14], 0
mov byte [ecx + 4], 0
lea edi, [eax + 1]
lea ecx, [ecx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4b7870
sub eax, edi
push eax
push esi
call fcn.00401900
lea eax, [ebp - 0x22c]
push eax
call fcn.004be790
add esp, 0x20
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x2f4]
call fcn.00402df0
cmp dword [ebp - 0x214], 8
jb 0x4b78b7
mov ecx, dword [ebp - 0x228]
push ecx
call fcn.004ea481
add esp, 4
mov eax, dword [ebp - 0x410]
test eax, eax
jne 0x4b79d0
call fcn.004eaba2
xor eax, eax
cmp ebx, dword [eax + 0x10]
jb 0x4b78d6
call fcn.004eaba2
mov esi, dword [ebx + 4]
sub esp, 0x1c
mov ecx, esp
mov eax, esi
mov dword [ecx + 0x18], 0xf
mov dword [ecx + 0x14], 0
mov byte [ecx + 4], 0
lea edi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4b78f5
sub eax, edi
push eax
push esi
call fcn.00401900
lea edx, [ebp - 0x22c]
push edx
call fcn.004be790
add esp, 0x20
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x2d8]
call fcn.00402df0
cmp dword [ebp - 0x214], 8
jb 0x4b793c
mov eax, dword [ebp - 0x228]
push eax
call fcn.004ea481
add esp, 4
mov esi, dword [ebp - 0x410]
test esi, esi
jne 0x4b79d7
call fcn.004eaba2
xor eax, eax
cmp ebx, dword [eax + 0x10]
jb 0x4b795b
call fcn.004eaba2
cmp dword [ebx + 8], 0
setne cl
mov byte [ebp - 0x284], cl
test esi, esi
jne 0x4b79de
call fcn.004eaba2
xor eax, eax
cmp ebx, dword [eax + 0x10]
jb 0x4b797d
call fcn.004eaba2
cmp dword [ebx + 0xc], 0
mov ecx, dword [ebp - 0x41c]
lea eax, [ebp - 0x2f4]
setne dl
push eax
mov byte [ebp - 0x283], dl
call fcn.004b6740
test esi, esi
jne 0x4b79e2
call fcn.004eaba2
cmp ebx, dword [esi + 0x10]
jb 0x4b79af
call fcn.004eaba2
mov eax, dword [ebp - 0x434]
mov ecx, dword [ebp - 0x438]
mov esi, dword [ebp - 0x410]
add ebx, 0x10
jmp 0x4b7814
mov esi, dword [esi]
jmp 0x4b7845
mov eax, dword [eax]
jmp 0x4b78cc
mov eax, dword [esi]
jmp 0x4b7951
mov eax, dword [esi]
jmp 0x4b7973
mov esi, dword [esi]
jmp 0x4b79a5
xor edi, edi
push 0xffffffffffffffff
xor ecx, ecx
mov eax, 7
push edi
mov word [ebp - 0x244], cx
xor edx, edx
push 0x541864
lea ecx, [ebp - 0x264]
mov dword [ebp - 0x230], eax
mov dword [ebp - 0x234], edi
mov dword [ebp - 0x24c], eax
mov dword [ebp - 0x250], edi
mov word [ebp - 0x260], dx
call fcn.00402df0
push 1
push 0xffffffffffffffff
push 0x50f2fc
lea ecx, [ebp - 0x264]
call fcn.00461050
mov ecx, dword [ebp - 0x250]
dec ecx
cmp eax, ecx
je 0x4b7a5b
push 1
push 0x50f2fc
lea ecx, [ebp - 0x264]
call fcn.00468840
mov eax, dword [ebp - 0x260]
mov esi, 8
cmp dword [ebp - 0x24c], esi
jae 0x4b7a74
lea eax, [ebp - 0x260]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x4b7a9c
mov eax, dword [ebp - 0x260]
cmp dword [ebp - 0x24c], esi
jae 0x4b7a94
lea eax, [ebp - 0x260]
push edi
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov esi, dword [ebp - 0x41c]
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x4b7d15
xor ebx, ebx
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp edi, ecx
jb 0x4b7ae5
call fcn.004eaba2
mov eax, dword [esi + 0xc]
add eax, ebx
push 0x514ce8
push eax
lea edx, [ebp - 0x264]
push edx
lea eax, [ebp - 0x280]
push eax
call fcn.004b4410
add esp, 0xc
push eax
lea ecx, [ebp - 0x22c]
push ecx
call fcn.0046f700
add esp, 0xc
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x248]
call fcn.00402df0
cmp dword [ebp - 0x214], 8
jb 0x4b7b3e
mov edx, dword [ebp - 0x228]
push edx
call fcn.004ea481
add esp, 4
xor eax, eax
cmp dword [ebp - 0x268], 8
mov dword [ebp - 0x214], 7
mov dword [ebp - 0x218], 0
mov word [ebp - 0x228], ax
jb 0x4b7b73
mov ecx, dword [ebp - 0x27c]
push ecx
call fcn.004ea481
add esp, 4
cmp dword [ebp - 0x230], 8
mov eax, dword [ebp - 0x244]
jae 0x4b7b88
lea eax, [ebp - 0x244]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x4b7bff
cmp dword [ebp - 0x230], 8
jb 0x4b7bab
mov edx, dword [ebp - 0x244]
mov dword [ebp - 0x40c], edx
jmp 0x4b7bb7
lea eax, [ebp - 0x244]
mov dword [ebp - 0x40c], eax
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp edi, ecx
jb 0x4b7bd9
call fcn.004eaba2
mov edx, dword [esi + 0xc]
cmp dword [edx + ebx + 0x34], 8
lea eax, [edx + ebx + 0x1c]
jb 0x4b7bec
mov eax, dword [eax + 4]
jmp 0x4b7bef
add eax, 4
mov ecx, dword [ebp - 0x40c]
push ecx
push eax
call fcn.00480960
add esp, 8
cmp dword [ebp - 0x230], 8
mov eax, dword [ebp - 0x244]
jae 0x4b7c14
lea eax, [ebp - 0x244]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4b7cea
sub esp, 0x1c
mov ecx, esp
push 1
xor edx, edx
mov dword [ecx + 0x18], 7
mov dword [ecx + 0x14], 0
push 0x514ce4
mov word [ecx + 4], dx
call fcn.00403060
sub esp, 0x1c
mov ecx, esp
push 1
xor eax, eax
mov dword [ecx + 0x18], 7
mov dword [ecx + 0x14], 0
push 0x50f2fc
mov word [ecx + 4], ax
call fcn.00403060
lea ecx, [ebp - 0x248]
push ecx
call fcn.004beb10
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
add esp, 0x3c
cmp edi, eax
jb 0x4b7c9f
call fcn.004eaba2
mov ecx, dword [ebp - 0x41c]
mov esi, dword [ecx + 0xc]
lea edx, [ebp - 0x248]
push edx
lea eax, [ebp - 0x22c]
push str.file:__localhost_
push eax
add esi, ebx
call fcn.0046f670
add esp, 0xc
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esi + 0x38]
call fcn.00402df0
cmp dword [ebp - 0x214], 8
jb 0x4b7cea
mov ecx, dword [ebp - 0x228]
push ecx
call fcn.004ea481
add esp, 4
mov esi, dword [ebp - 0x41c]
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
inc edi
add eax, edx
add ebx, 0x74
cmp edi, eax
jb 0x4b7ac3
mov eax, dword [ebp - 0x44c]
mov ecx, dword [ebp - 0x450]
mov edx, eax
sub edx, ecx
test edx, 0xfffffff0
je 0x4b81a1
mov ebx, ecx
cmp ecx, eax
jbe 0x4b7d48
call fcn.004eaba2
mov eax, dword [ebp - 0x44c]
mov ecx, dword [ebp - 0x450]
mov esi, dword [ebp - 0x45c]
mov dword [ebp - 0x410], esi
mov edi, eax
cmp ecx, eax
jbe 0x4b7d5f
call fcn.004eaba2
test esi, esi
je 0x4b7d6b
cmp esi, dword [ebp - 0x45c]
je 0x4b7d70
call fcn.004eaba2
cmp ebx, edi
je 0x4b7f26
test esi, esi
jne 0x4b7f09
call fcn.004eaba2
cmp ebx, dword [esi + 0x10]
jb 0x4b7d8f
call fcn.004eaba2
mov esi, dword [ebx]
sub esp, 0x1c
mov ecx, esp
mov eax, esi
mov dword [ecx + 0x18], 0xf
mov dword [ecx + 0x14], 0
mov byte [ecx + 4], 0
lea edi, [eax + 1]
lea ecx, [ecx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4b7db0
sub eax, edi
push eax
push esi
call fcn.00401900
lea eax, [ebp - 0x22c]
push eax
call fcn.004be790
add esp, 0x20
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x2f4]
call fcn.00402df0
cmp dword [ebp - 0x214], 8
jb 0x4b7df7
mov ecx, dword [ebp - 0x228]
push ecx
call fcn.004ea481
add esp, 4
mov eax, dword [ebp - 0x410]
test eax, eax
jne 0x4b7f10
call fcn.004eaba2
xor eax, eax
cmp ebx, dword [eax + 0x10]
jb 0x4b7e16
call fcn.004eaba2
mov esi, dword [ebx + 4]
sub esp, 0x1c
mov ecx, esp
mov eax, esi
mov dword [ecx + 0x18], 0xf
mov dword [ecx + 0x14], 0
mov byte [ecx + 4], 0
lea edi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4b7e35
sub eax, edi
push eax
push esi
call fcn.00401900
lea edx, [ebp - 0x22c]
push edx
call fcn.004be790
add esp, 0x20
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x2d8]
call fcn.00402df0
cmp dword [ebp - 0x214], 8
jb 0x4b7e7c
mov eax, dword [ebp - 0x228]
push eax
call fcn.004ea481
add esp, 4
mov esi, dword [ebp - 0x410]
test esi, esi
jne 0x4b7f17
call fcn.004eaba2
xor eax, eax
cmp ebx, dword [eax + 0x10]
jb 0x4b7e9b
call fcn.004eaba2
cmp dword [ebx + 8], 0
setne cl
mov byte [ebp - 0x284], cl
test esi, esi
jne 0x4b7f1e
call fcn.004eaba2
xor eax, eax
cmp ebx, dword [eax + 0x10]
jb 0x4b7ebd
call fcn.004eaba2
cmp dword [ebx + 0xc], 0
mov ecx, dword [ebp - 0x420]
lea eax, [ebp - 0x2f4]
setne dl
push eax
mov byte [ebp - 0x283], dl
call fcn.004b6740
test esi, esi
jne 0x4b7f22
call fcn.004eaba2
cmp ebx, dword [esi + 0x10]
jb 0x4b7eef
call fcn.004eaba2
mov eax, dword [ebp - 0x44c]
mov ecx, dword [ebp - 0x450]
mov esi, dword [ebp - 0x410]
add ebx, 0x10
jmp 0x4b7d54
mov esi, dword [esi]
jmp 0x4b7d85
mov eax, dword [eax]
jmp 0x4b7e0c
mov eax, dword [esi]
jmp 0x4b7e91
mov eax, dword [esi]
jmp 0x4b7eb3
mov esi, dword [esi]
jmp 0x4b7ee5
mov esi, dword [ebp - 0x420]
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
xor edi, edi
add ecx, edx
je 0x4b81a1
xor ebx, ebx
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x4b7f71
call fcn.004eaba2
mov eax, dword [esi + 0xc]
push 0x514ce8
add eax, ebx
push eax
lea ecx, [ebp - 0x264]
push ecx
lea edx, [ebp - 0x280]
push edx
call fcn.004b4410
add esp, 0xc
push eax
lea eax, [ebp - 0x22c]
push eax
call fcn.0046f700
add esp, 0xc
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x248]
call fcn.00402df0
cmp dword [ebp - 0x214], 8
jb 0x4b7fca
mov ecx, dword [ebp - 0x228]
push ecx
call fcn.004ea481
add esp, 4
xor edx, edx
cmp dword [ebp - 0x268], 8
mov dword [ebp - 0x214], 7
mov dword [ebp - 0x218], 0
mov word [ebp - 0x228], dx
jb 0x4b7fff
mov eax, dword [ebp - 0x27c]
push eax
call fcn.004ea481
add esp, 4
cmp dword [ebp - 0x230], 8
mov eax, dword [ebp - 0x244]
jae 0x4b8014
lea eax, [ebp - 0x244]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x4b808b
cmp dword [ebp - 0x230], 8
jb 0x4b8037
mov ecx, dword [ebp - 0x244]
mov dword [ebp - 0x40c], ecx
jmp 0x4b8043
lea edx, [ebp - 0x244]
mov dword [ebp - 0x40c], edx
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x4b8065
call fcn.004eaba2
mov ecx, dword [esi + 0xc]
cmp dword [ebx + ecx + 0x34], 8
lea eax, [ebx + ecx + 0x1c]
jb 0x4b8078
mov eax, dword [eax + 4]
jmp 0x4b807b
add eax, 4
mov edx, dword [ebp - 0x40c]
push edx
push eax
call fcn.00480960
add esp, 8
cmp dword [ebp - 0x230], 8
mov eax, dword [ebp - 0x244]
jae 0x4b80a0
lea eax, [ebp - 0x244]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4b8176
sub esp, 0x1c
mov ecx, esp
push 1
xor eax, eax
mov dword [ecx + 0x18], 7
mov dword [ecx + 0x14], 0
push 0x514ce4
mov word [ecx + 4], ax
call fcn.00403060
sub esp, 0x1c
mov ecx, esp
push 1
xor edx, edx
mov dword [ecx + 0x18], 7
mov dword [ecx + 0x14], 0
push 0x50f2fc
mov word [ecx + 4], dx
call fcn.00403060
lea eax, [ebp - 0x248]
push eax
call fcn.004beb10
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
add esp, 0x3c
cmp edi, ecx
jb 0x4b812b
call fcn.004eaba2
mov edx, dword [ebp - 0x420]
mov esi, dword [edx + 0xc]
lea eax, [ebp - 0x248]
push eax
lea ecx, [ebp - 0x22c]
push str.file:__localhost_
push ecx
add esi, ebx
call fcn.0046f670
add esp, 0xc
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esi + 0x38]
call fcn.00402df0
cmp dword [ebp - 0x214], 8
jb 0x4b8176
mov edx, dword [ebp - 0x228]
push edx
call fcn.004ea481
add esp, 4
mov esi, dword [ebp - 0x420]
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
inc edi
add eax, edx
add ebx, 0x74
cmp edi, eax
jb 0x4b7f4f
mov eax, dword [ebp - 0x464]
mov ecx, dword [ebp - 0x468]
mov edx, eax
sub edx, ecx
test edx, 0xfffffff0
je 0x4b83c0
mov ebx, ecx
cmp ecx, eax
jbe 0x4b81d4
call fcn.004eaba2
mov eax, dword [ebp - 0x464]
mov ecx, dword [ebp - 0x468]
mov esi, dword [ebp - 0x474]
mov dword [ebp - 0x410], esi
mov edi, eax
cmp ecx, eax
jbe 0x4b81eb
call fcn.004eaba2
test esi, esi
je 0x4b81f7
cmp esi, dword [ebp - 0x474]
je 0x4b81fc
call fcn.004eaba2
cmp ebx, edi
je 0x4b83c0
test esi, esi
jne 0x4b83a3
call fcn.004eaba2
cmp ebx, dword [esi + 0x10]
jb 0x4b821b
call fcn.004eaba2
mov esi, dword [ebx]
sub esp, 0x1c
mov ecx, esp
mov eax, esi
mov dword [ecx + 0x18], 0xf
mov dword [ecx + 0x14], 0
mov byte [ecx + 4], 0
lea edi, [eax + 1]
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4b8240
sub eax, edi
push eax
push esi
call fcn.00401900
lea eax, [ebp - 0x22c]
push eax
call fcn.004be790
add esp, 0x20
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x2f4]
call fcn.00402df0
cmp dword [ebp - 0x214], 8
jb 0x4b8287
mov ecx, dword [ebp - 0x228]
push ecx
call fcn.004ea481
add esp, 4
mov eax, dword [ebp - 0x410]
test eax, eax
jne 0x4b83aa
call fcn.004eaba2
xor eax, eax
cmp ebx, dword [eax + 0x10]
jb 0x4b82a6
call fcn.004eaba2
mov esi, dword [ebx + 4]
sub esp, 0x1c
mov ecx, esp
mov eax, esi
mov dword [ecx + 0x18], 0xf
mov dword [ecx + 0x14], 0
mov byte [ecx + 4], 0
lea edi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4b82c5
sub eax, edi
push eax
push esi
call fcn.00401900
lea edx, [ebp - 0x22c]
push edx
call fcn.004be790
add esp, 0x20
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x2d8]
call fcn.00402df0
cmp dword [ebp - 0x214], 8
jb 0x4b830c
mov eax, dword [ebp - 0x228]
push eax
call fcn.004ea481
add esp, 4
mov esi, dword [ebp - 0x410]
test esi, esi
jne 0x4b83b1
call fcn.004eaba2
xor eax, eax
cmp ebx, dword [eax + 0x10]
jb 0x4b832b
call fcn.004eaba2
cmp dword [ebx + 8], 0
setne cl
mov byte [ebp - 0x284], cl
test esi, esi
jne 0x4b83b8
call fcn.004eaba2
xor eax, eax
cmp ebx, dword [eax + 0x10]
jb 0x4b8351
call fcn.004eaba2
cmp dword [ebx + 0xc], 0
mov ecx, dword [ebp - 0x418]
setne dl
lea eax, [ebp - 0x2f4]
push eax
add ecx, 0x1b8
mov byte [ebp - 0x283], dl
call fcn.004b6740
test esi, esi
jne 0x4b83bc
call fcn.004eaba2
cmp ebx, dword [esi + 0x10]
jb 0x4b8389
call fcn.004eaba2
mov eax, dword [ebp - 0x464]
mov ecx, dword [ebp - 0x468]
mov esi, dword [ebp - 0x410]
add ebx, 0x10
jmp 0x4b81e0
mov esi, dword [esi]
jmp 0x4b8211
mov eax, dword [eax]
jmp 0x4b829c
mov eax, dword [esi]
jmp 0x4b8321
mov eax, dword [esi]
jmp 0x4b8347
mov esi, dword [esi]
jmp 0x4b837f
mov ecx, dword [ebp - 0x418]
call fcn.004b4590
mov ebx, 8
cmp dword [ebp - 0x24c], ebx
jb 0x4b83e7
mov ecx, dword [ebp - 0x260]
push ecx
call fcn.004ea481
add esp, 4
xor esi, esi
xor edx, edx
mov edi, 7
mov dword [ebp - 0x24c], edi
mov dword [ebp - 0x250], esi
mov word [ebp - 0x260], dx
cmp dword [ebp - 0x230], ebx
jb 0x4b841a
mov eax, dword [ebp - 0x244]
push eax
call fcn.004ea481
add esp, 4
xor ecx, ecx
mov word [ebp - 0x244], cx
lea ecx, [ebp - 0x2f4]
mov dword [ebp - 0x230], edi
mov dword [ebp - 0x234], esi
call fcn.004671e0
mov eax, dword [ebp - 0x414]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4b845c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x48c]
call fcn.00402fe0
mov ecx, dword [ebp - 0x48c]
push ecx
call fcn.004ea481
mov eax, dword [ebp - 0x468]
add esp, 4
cmp eax, esi
je 0x4b8489
push eax
call fcn.004ea481
add esp, 4
mov edx, dword [ebp - 0x474]
push edx
mov dword [ebp - 0x468], esi
mov dword [ebp - 0x464], esi
mov dword [ebp - 0x460], esi
call fcn.004ea481
mov eax, dword [ebp - 0x450]
add esp, 4
cmp eax, esi
je 0x4b84bd
push eax
call fcn.004ea481
add esp, 4
mov eax, dword [ebp - 0x45c]
push eax
mov dword [ebp - 0x450], esi
mov dword [ebp - 0x44c], esi
mov dword [ebp - 0x448], esi
call fcn.004ea481
mov eax, dword [ebp - 0x438]
add esp, 4
cmp eax, esi
je 0x4b84f1
push eax
call fcn.004ea481
add esp, 4
mov ecx, dword [ebp - 0x444]
push ecx
mov dword [ebp - 0x438], esi
mov dword [ebp - 0x434], esi
mov dword [ebp - 0x430], esi
call fcn.004ea481
mov ecx, dword [ebp - 4]
add esp, 4
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004ea5a8
mov esp, ebp
pop ebp
ret