Function at 0x401300
Capabilities:
Get file version info
Read .ini file
Read file on windows
Terminate process

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x13c4
call fcn.00402320
mov eax, dword [0x450004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
call fcn.00422540
cmp dword [eax], 1
jle 0x401354
call fcn.00422546
push 0x4461d0
mov eax, dword [eax]
push dword [eax + 4]
call fcn.004033e0
mov ecx, dword [0x4509d4]
add esp, 8
test eax, eax
mov edx, 1
cmovne ecx, edx
mov dword [0x4509d4], ecx
push 0x104
lea eax, [ebp - 0x9d8]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0
push 0
lea eax, [ebp - 0xbe0]
push eax
lea eax, [ebp - 0xadc]
push eax
lea eax, [ebp - 0x9d8]
push eax
call fcn.004223a4
add esp, 0x14
xor ecx, ecx
nop word [eax + eax]
mov al, byte [ebp + ecx - 0xadc]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x2bd], al
test al, al
jne 0x401390
lea edx, [ebp - 0xbe0]
mov esi, edx
nop dword [eax]
mov al, byte [edx]
inc edx
test al, al
jne 0x4013b0
lea edi, [ebp - 0x2bc]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4013c0
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x2bc]
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4013e0
sub ecx, edx
cmp byte [ebp + ecx - 0x2bd], 0x5c
je 0x401413
lea edi, [ebp - 0x2bc]
dec edi
nop word [eax + eax]
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x401400
mov ax, word [0x4461d4]
mov word [edi], ax
xor ecx, ecx
mov al, byte [ebp + ecx - 0x2bc]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x3c1], al
test al, al
jne 0x401415
lea ecx, [ebp - 0x3c0]
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x401431
mov eax, dword [str.update.ini]
mov dword [ecx], eax
mov eax, dword [0x4461dc]
mov dword [ecx + 4], eax
mov ax, word [0x4461e0]
mov word [ecx + 8], ax
mov al, byte [0x4461e2]
mov byte [ecx + 0xa], al
lea eax, [ebp - 0x3c0]
push 4
push eax
call fcn.004227cf
add esp, 8
test eax, eax
jne 0x4021b8
xor ecx, ecx
nop word [eax + eax]
mov al, byte [ebp + ecx - 0x2bc]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x7a9], al
test al, al
jne 0x401480
lea ecx, [ebp - 0x7a8]
dec ecx
nop dword [eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x4014a0
mov eax, dword [str.upcftool.ini]
mov dword [ecx], eax
mov eax, dword [0x446228]
mov dword [ecx + 4], eax
mov eax, dword [0x44622c]
mov dword [ecx + 8], eax
mov al, byte [0x446230]
mov byte [ecx + 0xc], al
lea eax, [ebp - 0x7a8]
push 4
push eax
call fcn.004227cf
mov ebx, dword [sym.imp.USER32.dll_MessageBoxA]
mov esi, eax
add esp, 8
test esi, esi
jne 0x4015b1
lea eax, [ebp - 0x7a8]
push eax
push 0x14
lea eax, [ebp - 0x80]
push eax
push 0x446231
push str.ClnName
push str.General
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea ecx, [ebp - 0x80]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401512
sub ecx, edx
je 0x4015b1
xor ecx, ecx
mov al, byte [ebp + ecx - 0x2bc]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x1b9], al
test al, al
jne 0x401523
lea edx, [ebp - 0x80]
mov esi, edx
nop dword [eax]
mov al, byte [edx]
inc edx
test al, al
jne 0x401540
lea edi, [ebp - 0x1b8]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x401550
mov ecx, edx
lea eax, [ebp - 0x1b8]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
push 4
rep movsb byte es:[edi], byte [esi]
push eax
call fcn.004227cf
mov esi, eax
add esp, 8
test esi, esi
je 0x4015b1
lea eax, [ebp - 0x1b8]
push eax
lea eax, [ebp - 0x550]
push str.Unable_to_find_configured_client_program_file__s
push eax
call fcn.004022b0
add esp, 0xc
lea eax, [ebp - 0x550]
push 0x10
push str.MKCHKSUM
push eax
push 0
call ebx
mov byte [ebp - 0x1b8], 0
lea ecx, [ebp - 0x1b8]
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4015c0
sub ecx, edx
jne 0x40181e
nop
mov al, byte [ebp + ecx - 0x2bc]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x1b9], al
test al, al
jne 0x4015d0
lea ecx, [ebp - 0x1b8]
dec ecx
nop dword [eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x4015f0
mov eax, dword [str.ePsClient.exe]
mov dword [ecx], eax
mov eax, dword [0x44627c]
mov dword [ecx + 4], eax
mov eax, dword [0x446280]
mov dword [ecx + 8], eax
mov ax, word [0x446284]
mov word [ecx + 0xc], ax
lea eax, [ebp - 0x1b8]
push 4
push eax
call fcn.004227cf
add esp, 8
test eax, eax
je 0x401826
xor ecx, ecx
mov al, byte [ebp + ecx - 0x2bc]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x1b9], al
test al, al
jne 0x401636
lea ecx, [ebp - 0x1b8]
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x401652
mov eax, dword [str.ePsCln.exe]
mov dword [ecx], eax
mov eax, dword [0x44628c]
mov dword [ecx + 4], eax
mov ax, word [0x446290]
mov word [ecx + 8], ax
mov al, byte [0x446292]
mov byte [ecx + 0xa], al
lea eax, [ebp - 0x1b8]
push 4
push eax
call fcn.004227cf
add esp, 8
test eax, eax
je 0x401826
xor ecx, ecx
nop dword [eax + eax]
mov al, byte [ebp + ecx - 0x2bc]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x1b9], al
test al, al
jne 0x4016a0
lea ecx, [ebp - 0x1b8]
dec ecx
nop dword [eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x4016c0
mov eax, dword [str.ePsSmCln.exe]
mov dword [ecx], eax
mov eax, dword [0x446298]
mov dword [ecx + 4], eax
mov eax, dword [0x44629c]
mov dword [ecx + 8], eax
mov al, byte [0x4462a0]
mov byte [ecx + 0xc], al
lea eax, [ebp - 0x1b8]
push 4
push eax
call fcn.004227cf
add esp, 8
test eax, eax
je 0x401826
xor ecx, ecx
mov al, byte [ebp + ecx - 0x2bc]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x1b9], al
test al, al
jne 0x401704
lea ecx, [ebp - 0x1b8]
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x401720
mov eax, dword [str.ePsAlCln.exe]
mov dword [ecx], eax
mov eax, dword [0x4462a8]
mov dword [ecx + 4], eax
mov eax, dword [0x4462ac]
mov dword [ecx + 8], eax
mov al, byte [0x4462b0]
mov byte [ecx + 0xc], al
lea eax, [ebp - 0x1b8]
push 4
push eax
call fcn.004227cf
add esp, 8
test eax, eax
je 0x401826
xor ecx, ecx
mov al, byte [ebp + ecx - 0x2bc]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x1b9], al
test al, al
jne 0x401764
lea ecx, [ebp - 0x1b8]
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x401780
mov eax, dword [str.ePsSntCln.exe]
mov dword [ecx], eax
mov eax, dword [0x4462b8]
mov dword [ecx + 4], eax
mov eax, dword [0x4462bc]
mov dword [ecx + 8], eax
mov ax, word [0x4462c0]
mov word [ecx + 0xc], ax
lea eax, [ebp - 0x1b8]
push 4
push eax
call fcn.004227cf
add esp, 8
test eax, eax
je 0x401826
xor ecx, ecx
mov al, byte [ebp + ecx - 0x2bc]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x1b9], al
test al, al
jne 0x4017c2
lea ecx, [ebp - 0x1b8]
dec ecx
nop
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x4017e0
mov eax, dword [str.VPilotCln.exe]
mov dword [ecx], eax
mov eax, dword [0x4462c8]
mov dword [ecx + 4], eax
mov eax, dword [0x4462cc]
mov dword [ecx + 8], eax
mov ax, word [0x4462d0]
mov word [ecx + 0xc], ax
lea eax, [ebp - 0x1b8]
push 4
push eax
call fcn.004227cf
add esp, 8
mov esi, eax
test esi, esi
jne 0x4021f0
lea eax, [ebp - 0x1b8]
push eax
lea eax, [ebp - 0x550]
push str.Get_file__s_version._n
push eax
call fcn.004022b0
add esp, 0xc
mov dword [ebp - 0x13b8], 0
lea eax, [ebp - 0x13b8]
mov dword [ebp - 0x13b4], 0
push eax
lea eax, [ebp - 0x1b8]
push eax
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov esi, eax
push esi
call fcn.0041f8aa
mov edi, eax
add esp, 4
test edi, edi
je 0x4021aa
push edi
push esi
push dword [ebp - 0x13b8]
lea eax, [ebp - 0x1b8]
push eax
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
je 0x4021aa
lea eax, [ebp - 0x13b4]
push eax
lea eax, [ebp - 0x13c0]
push eax
push str.VarFileInfoTranslation
push edi
call sub.VERSION.dll_VerQueryValueA
test eax, eax
je 0x4021aa
mov ecx, dword [ebp - 0x13b4]
xor esi, esi
test ecx, 0xfffffffc
jbe 0x40192e
mov ebx, dword [sym.imp.USER32.dll_wsprintfA]
mov eax, dword [ebp - 0x13c0]
lea ecx, [eax + esi*4]
movzx eax, word [ecx + 2]
push eax
movzx eax, word [ecx]
push eax
lea eax, [ebp - 0x6a4]
push str.StringFileInfo_04x_04xFileVersion
push eax
call ebx
add esp, 0x10
mov dword [ebp - 0x13b4], 0x32
lea eax, [ebp - 0x13b4]
push eax
lea eax, [ebp - 0x13bc]
push eax
lea eax, [ebp - 0x6a4]
push eax
push edi
call sub.VERSION.dll_VerQueryValueA
mov ecx, dword [ebp - 0x13b4]
inc esi
mov eax, ecx
shr eax, 2
cmp esi, eax
jb 0x4018d0
mov ebx, dword [sym.imp.USER32.dll_MessageBoxA]
push ecx
call fcn.0041f8aa
mov esi, eax
add esp, 4
test esi, esi
je 0x4021aa
mov eax, dword [ebp - 0x13b4]
test eax, eax
je 0x4021aa
push eax
push dword [ebp - 0x13bc]
push esi
call fcn.0040d870
push edi
call fcn.0041f88f
lea edx, [ebp - 0x1c]
add esp, 0x10
mov ecx, esi
sub edx, esi
nop dword [eax]
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx + ecx - 1], al
test al, al
jne 0x401970
push esi
call fcn.0041f88f
mov ebx, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
lea eax, [ebp - 0x3c0]
add esp, 4
push eax
lea eax, [ebp - 0x1c]
push eax
push str.NewVersion
push str.Common
call ebx
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0x3c0]
push eax
push 0xa
lea eax, [ebp - 0x80]
push eax
push 0x446231
push str.UpdateAllFiles
push str.Common
call esi
lea ecx, [ebp - 0x80]
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4019d0
sub ecx, edx
je 0x4019e8
cmp byte [ebp - 0x80], 0x31
jne 0x4019e8
mov eax, 1
jmp 0x4019ea
xor eax, eax
mov dword [0x4509d0], eax
lea eax, [ebp - 0x3c0]
push eax
push 0xa
lea eax, [ebp - 0x80]
push eax
push 0x446231
push str.Files
push str.Common
call esi
lea ecx, [ebp - 0x80]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401a13
sub ecx, edx
je 0x402224
lea eax, [ebp - 0x80]
push eax
call fcn.00421800
add esp, 4
mov dword [ebp - 0x13c0], eax
test eax, eax
je 0x40215a
mov edi, 1
mov dword [ebp - 0x13b8], edi
nop word [eax + eax]
push edi
lea eax, [ebp - 0xb4]
mov dword [ebp - 0x13c4], edi
push str.File_d
push eax
call fcn.004022b0
add esp, 0xc
lea eax, [ebp - 0x3c0]
push eax
push 0x63
lea eax, [ebp - 0x80]
push eax
push 0x446231
lea eax, [ebp - 0xb4]
push eax
push str.Common
call esi
lea eax, [ebp - 0x3c0]
push eax
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0xb4]
push eax
lea eax, [ebp - 0x1c]
push eax
call ebx
xor ecx, ecx
nop word [eax + eax]
mov al, byte [ebp + ecx - 0x80]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x655], al
test al, al
jne 0x401ab0
lea ecx, [ebp - 0x80]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401ac8
sub ecx, edx
je 0x402147
cmp dword [0x4509d0], 0
jne 0x401db0
lea eax, [ebp - 0x80]
mov esi, str.UPDATE.INI
push eax
call fcn.004269f9
add esp, 4
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x401b15
test cl, cl
je 0x401b11
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x401b15
add eax, 2
add esi, 2
test cl, cl
jne 0x401af5
xor eax, eax
jmp 0x401b1a
sbb eax, eax
or eax, 1
test eax, eax
je 0x401db0
lea eax, [ebp - 0x80]
mov esi, str.EPSCLIENT.EXE
push eax
call fcn.004269f9
add esp, 4
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x401b53
test cl, cl
je 0x401b4f
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x401b53
add eax, 2
add esi, 2
test cl, cl
jne 0x401b33
xor eax, eax
jmp 0x401b58
sbb eax, eax
or eax, 1
test eax, eax
je 0x401db0
lea eax, [ebp - 0x80]
mov esi, str.EPSSNTCLN.EXE
push eax
call fcn.004269f9
add esp, 4
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x401b91
test cl, cl
je 0x401b8d
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x401b91
add eax, 2
add esi, 2
test cl, cl
jne 0x401b71
xor eax, eax
jmp 0x401b96
sbb eax, eax
or eax, 1
test eax, eax
je 0x401db0
lea eax, [ebp - 0x80]
mov esi, str.VPILOTCLN.EXE
push eax
call fcn.004269f9
add esp, 4
nop
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x401bd0
test cl, cl
je 0x401bcc
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x401bd0
add eax, 2
add esi, 2
test cl, cl
jne 0x401bb0
xor eax, eax
jmp 0x401bd5
sbb eax, eax
or eax, 1
test eax, eax
je 0x401db0
lea eax, [ebp - 0x80]
mov esi, str.CONFUPD.INI
push eax
call fcn.004269f9
add esp, 4
nop
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x401c10
test cl, cl
je 0x401c0c
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x401c10
add eax, 2
add esi, 2
test cl, cl
jne 0x401bf0
xor eax, eax
jmp 0x401c15
sbb eax, eax
or eax, 1
test eax, eax
je 0x401db0
xor ecx, ecx
nop
mov al, byte [ebp + ecx - 0x2bc]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x1b9], al
test al, al
jne 0x401c20
lea edx, [ebp - 0x80]
mov esi, edx
nop word [eax + eax]
mov al, byte [edx]
inc edx
test al, al
jne 0x401c40
lea edi, [ebp - 0x1b8]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x401c50
mov ecx, edx
lea eax, [ebp - 0x1b8]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
push 0x446454
rep movsb byte es:[edi], byte [esi]
push eax
call fcn.0040dd96
add esp, 8
mov dword [ebp - 0x13b4], eax
test eax, eax
je 0x402262
push eax
push 0x7d0
lea eax, [ebp - 0x13b0]
xor ebx, ebx
push 1
push eax
call fcn.0040e055
mov edx, eax
add esp, 0x10
test edx, edx
je 0x401d9a
nop dword [eax + eax]
xor ecx, ecx
test edx, edx
je 0x401d26
cmp edx, 8
jb 0x401d26
mov eax, edx
xorps xmm2, xmm2
and eax, 0xfffffff8
xorps xmm3, xmm3
nop word [eax + eax]
movd xmm1, dword [ebp + ecx - 0x13b0]
xorps xmm0, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm1, xmm0
paddd xmm2, xmm1
movd xmm1, dword [ebp + ecx - 0x13ac]
punpcklbw xmm1, xmm0
add ecx, 8
punpcklwd xmm1, xmm0
paddd xmm3, xmm1
cmp ecx, eax
jb 0x401cd0
paddd xmm2, xmm3
movaps xmm0, xmm2
psrldq xmm0, 8
paddd xmm2, xmm0
movups xmm0, xmm2
psrldq xmm0, 4
paddd xmm2, xmm0
movd eax, xmm2
add ebx, eax
xor esi, esi
xor edi, edi
cmp ecx, edx
jae 0x401d74
mov eax, edx
sub eax, ecx
cmp eax, 2
jb 0x401d65
lea eax, [edx - 1]
mov dword [ebp - 0x13bc], eax
movzx eax, byte [ebp + ecx - 0x13b0]
add esi, eax
movzx eax, byte [ebp + ecx - 0x13af]
add ecx, 2
add edi, eax
mov eax, ecx
cmp ecx, dword [ebp - 0x13bc]
jb 0x401d40
cmp eax, edx
jae 0x401d6f
movzx eax, byte [ebp + ecx - 0x13b0]
add ebx, eax
lea eax, [edi + esi]
add ebx, eax
push dword [ebp - 0x13b4]
lea eax, [ebp - 0x13b0]
push 0x7d0
push 1
push eax
call fcn.0040e055
mov edx, eax
add esp, 0x10
test edx, edx
jne 0x401cb0
push dword [ebp - 0x13b4]
call fcn.0040da54
mov edi, dword [ebp - 0x13b8]
add esp, 4
jmp 0x401db5
mov ebx, 0xffffff00
push edi
lea eax, [ebp - 0xb4]
push str.CRC_d
push eax
call fcn.004022b0
push ebx
lea eax, [ebp - 0x80]
push 0x446418
push eax
call fcn.004022b0
add esp, 0x18
lea eax, [ebp - 0x3c0]
push eax
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0xb4]
push eax
lea eax, [ebp - 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
cmp dword [0x4509d0], 0
jne 0x4020e0
lea eax, [ebp - 0x654]
mov esi, str.UPDATE.INI
push eax
call fcn.004269f9
add esp, 4
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x401e36
test cl, cl
je 0x401e32
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x401e36
add eax, 2
add esi, 2
test cl, cl
jne 0x401e16
xor eax, eax
jmp 0x401e3b
sbb eax, eax
or eax, 1
test eax, eax
je 0x4020e0
lea eax, [ebp - 0x654]
mov esi, str.EPSCLIENT.EXE
push eax
call fcn.004269f9
add esp, 4
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x401e77
test cl, cl
je 0x401e73
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x401e77
add eax, 2
add esi, 2
test cl, cl
jne 0x401e57
xor eax, eax
jmp 0x401e7c
sbb eax, eax
or eax, 1
test eax, eax
je 0x4020e0
lea eax, [ebp - 0x654]
mov esi, str.EPSSNTCLN.EXE
push eax
call fcn.004269f9
add esp, 4
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x401eb8
test cl, cl
je 0x401eb4
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x401eb8
add eax, 2
add esi, 2
test cl, cl
jne 0x401e98
xor eax, eax
jmp 0x401ebd
sbb eax, eax
or eax, 1
test eax, eax
je 0x4020e0
lea eax, [ebp - 0x654]
mov esi, str.VPILOTCLN.EXE
push eax
call fcn.004269f9
add esp, 4
nop dword [eax]
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x401f00
test cl, cl
je 0x401efc
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x401f00
add eax, 2
add esi, 2
test cl, cl
jne 0x401ee0
xor eax, eax
jmp 0x401f05
sbb eax, eax
or eax, 1
test eax, eax
je 0x4020e0
lea eax, [ebp - 0x654]
mov esi, str.CONFUPD.INI
push eax
call fcn.004269f9
add esp, 4
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x401f41
test cl, cl
je 0x401f3d
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x401f41
add eax, 2
add esi, 2
test cl, cl
jne 0x401f21
xor eax, eax
jmp 0x401f46
sbb eax, eax
or eax, 1
test eax, eax
je 0x4020e0
xor ecx, ecx
mov al, byte [ebp + ecx - 0x2bc]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x1b9], al
test al, al
jne 0x401f50
lea edx, [ebp - 0x654]
mov esi, edx
nop dword [eax]
mov al, byte [edx]
inc edx
test al, al
jne 0x401f70
lea edi, [ebp - 0x1b8]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x401f80
mov ecx, edx
lea eax, [ebp - 0x1b8]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
push 0x446490
rep movsb byte es:[edi], byte [esi]
push eax
call fcn.0040dd96
add esp, 8
mov dword [ebp - 0x13b4], eax
test eax, eax
je 0x402262
push eax
push 0x7d0
lea eax, [ebp - 0x13b0]
xor ebx, ebx
push 1
push eax
call fcn.0040e055
mov edx, eax
add esp, 0x10
test edx, edx
je 0x4020ca
nop dword [eax + eax]
xor ecx, ecx
test edx, edx
je 0x402056
cmp edx, 8
jb 0x402056
mov eax, edx
xorps xmm2, xmm2
and eax, 0xfffffff8
xorps xmm3, xmm3
nop word [eax + eax]
movd xmm1, dword [ebp + ecx - 0x13b0]
xorps xmm0, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm1, xmm0
paddd xmm2, xmm1
movd xmm1, dword [ebp + ecx - 0x13ac]
punpcklbw xmm1, xmm0
add ecx, 8
punpcklwd xmm1, xmm0
paddd xmm3, xmm1
cmp ecx, eax
jb 0x402000
paddd xmm2, xmm3
movaps xmm0, xmm2
psrldq xmm0, 8
paddd xmm2, xmm0
movups xmm0, xmm2
psrldq xmm0, 4
paddd xmm2, xmm0
movd eax, xmm2
add ebx, eax
xor esi, esi
xor edi, edi
cmp ecx, edx
jae 0x4020a4
mov eax, edx
sub eax, ecx
cmp eax, 2
jb 0x402095
lea eax, [edx - 1]
mov dword [ebp - 0x13bc], eax
movzx eax, byte [ebp + ecx - 0x13b0]
add esi, eax
movzx eax, byte [ebp + ecx - 0x13af]
add ecx, 2
add edi, eax
mov eax, ecx
cmp ecx, dword [ebp - 0x13bc]
jb 0x402070
cmp eax, edx
jae 0x40209f
movzx eax, byte [ebp + ecx - 0x13b0]
add ebx, eax
lea eax, [edi + esi]
add ebx, eax
push dword [ebp - 0x13b4]
lea eax, [ebp - 0x13b0]
push 0x7d0
push 1
push eax
call fcn.0040e055
mov edx, eax
add esp, 0x10
test edx, edx
jne 0x401fe0
push dword [ebp - 0x13b4]
call fcn.0040da54
mov edi, dword [ebp - 0x13b8]
add esp, 4
jmp 0x4020e5
mov ebx, 0xffffff00
push edi
lea eax, [ebp - 0xb4]
push str.BinCRC_d
push eax
call fcn.004022b0
push ebx
lea eax, [ebp - 0x80]
push 0x446418
push eax
call fcn.004022b0
mov ebx, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
lea eax, [ebp - 0x3c0]
add esp, 0x18
push eax
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0xb4]
push eax
lea eax, [ebp - 0x1c]
push eax
call ebx
mov eax, dword [ebp - 0x13c0]
inc edi
mov dword [ebp - 0x13b8], edi
cmp dword [ebp - 0x13c4], eax
jae 0x40215a
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
jmp 0x401a50
lea eax, [ebp - 0x3c0]
push eax
lea eax, [ebp - 0xb4]
push eax
jmp 0x402230
cmp dword [0x4509d4], 0
pop edi
pop esi
pop ebx
jne 0x402198
lea eax, [ebp - 0x3c0]
push eax
lea eax, [ebp - 0x550]
push str.The__s_file_is_ready_for_version_update.
push eax
call fcn.004022b0
add esp, 0xc
lea eax, [ebp - 0x550]
push 0x40
push str.MKCHKSUM
push eax
mov eax, dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call eax
mov ecx, dword [ebp - 4]
xor eax, eax
xor ecx, ebp
call fcn.00402311
mov esp, ebp
pop ebp
ret 0x10
lea eax, [ebp - 0x1b8]
push eax
push str.Unable_to_get_file__s_version._Unable_to_continue.
jmp 0x4021fc
lea eax, [ebp - 0x3c0]
push eax
lea eax, [ebp - 0x550]
push str.Unable_to_work_with_file__s._Unable_to_continue.
push eax
call fcn.004022b0
add esp, 0xc
lea eax, [ebp - 0x550]
push 0x10
push str.MKCHKSUM
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 1
call fcn.0041fd13
lea eax, [ebp - 0x1b8]
push eax
push str.Unable_to_work_with_client_program_file._Unable_to_continue.
lea eax, [ebp - 0x550]
push eax
call fcn.004022b0
add esp, 0xc
lea eax, [ebp - 0x550]
push 0x10
push str.MKCHKSUM
push eax
push 0
call ebx
push 1
call fcn.0041fd13
lea eax, [ebp - 0x3c0]
push eax
push str.Files
lea eax, [ebp - 0x550]
push str._s_is_not_defined_in_file__s._Unable_to_continue.
push eax
call fcn.004022b0
add esp, 0x10
lea eax, [ebp - 0x550]
push 0x10
push str.MKCHKSUM
push eax
mov eax, dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call eax
push 1
call fcn.0041fd13
lea eax, [ebp - 0x1b8]
push eax
lea eax, [ebp - 0x8d4]
push str.Unable_to_open_file__s_for_read._Unable_to_continue.
push eax
call fcn.004022b0
add esp, 0xc
lea eax, [ebp - 0x8d4]
push 0x10
push str.MKCHKSUM
push eax
mov eax, dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call eax
push 1
call fcn.0041fd13
int3