Function at 0x477c50
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x641525
mov eax, dword fs:[0]
push eax
sub esp, 0x6c
mov eax, dword [0x6d3438]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0xc]
mov ecx, eax
mov edi, dword [ebp + 8]
mov dword [ebp - 0x54], edi
mov dword [ebp - 0x60], edi
cmp dword [eax + 0x14], 8
mov dword [ebp - 0x50], eax
jb 0x477c93
mov ecx, dword [eax]
push 0
push 0
push 3
push 0
push 1
push SysReAllocStringLen
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
mov dword [ebp - 0x4c], esi
mov dword [ebp - 4], 0
cmp esi, 0xffffffff
jne 0x477d33
push 1
call fcn.0049dcb0
add esp, 4
test eax, eax
je 0x477d05
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 0x50]
cmp dword [eax + 0x14], 8
jb 0x477cdc
mov eax, dword [eax]
mov dword [ebp - 0x50], eax
mov edx, str.E:BT3ee744b7_78e2_4d9e_b7ee_63935aebafd6ClientAnalyticsXMLUpdater_srcBSIUpdaterPluginTxtVerSubstitution.cpp
lea eax, [ebp - 0x54]
mov ecx, 1
push eax
lea eax, [ebp - 0x50]
push eax
push str.failed_to_open_file:__s_with_error_code__d
push 0x24
push str.Intel::Analytics::CTxtVerSubstitution::Substitute
call fcn.00439940
add esp, 0x14
push 8
xor eax, eax
mov dword [edi], 0
mov dword [edi + 0x10], 0
mov ecx, edi
mov dword [edi + 0x14], 7
push 0x68f0d4
mov word [edi], ax
call fcn.0042e850
push 0xffffffffffffffff
jmp 0x47814b
push 0x400
call fcn.00608193
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x48], eax
push 0x400
push 0
push eax
mov byte [ebp - 4], 1
call fcn.0060a8e0
add esp, 0x10
mov dword [ebp - 0x44], 0
lea eax, [ebp - 0x44]
push 0
push eax
push 0x3ff
push dword [ebp - 0x50]
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x477de2
push 5
call fcn.0049dcb0
add esp, 4
test eax, eax
je 0x477dab
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x54], eax
mov edx, str.E:BT3ee744b7_78e2_4d9e_b7ee_63935aebafd6ClientAnalyticsXMLUpdater_srcBSIUpdaterPluginTxtVerSubstitution.cpp
lea eax, [ebp - 0x54]
push eax
push str.failed_to_read_the_file:__d
push 0x2e
push str.Intel::Analytics::CTxtVerSubstitution::Substitute
call fcn.00478310
add esp, 0x10
push 8
xor eax, eax
mov dword [edi], 0
mov dword [edi + 0x10], 0
mov ecx, edi
mov dword [edi + 0x14], 7
push 0x68f0d4
mov word [edi], ax
call fcn.0042e850
push dword [ebp - 0x50]
call fcn.0060819c
add esp, 4
jmp 0x478146
mov edx, dword [ebp - 0x50]
mov ecx, edx
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0xf
lea eax, [ecx + 1]
mov byte [ebp - 0x40], 0
mov dword [ebp - 0x5c], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x477e06
sub ecx, dword [ebp - 0x5c]
push ecx
push edx
lea ecx, [ebp - 0x40]
call fcn.0042f5a0
mov byte [ebp - 4], 2
push dword [ebp - 0x50]
mov dword [ebp - 0x48], 0
call fcn.0060819c
mov eax, dword [ebp - 0x30]
lea ecx, [ebp - 0x40]
add esp, 4
cmp dword [ebp - 0x2c], 0x10
cmovae ecx, dword [ebp - 0x40]
setae byte [ebp - 0x55]
mov dword [ebp - 0x60], ecx
cmp eax, 0xd
jb 0x477ee4
add eax, 0xfffffff4
add eax, ecx
mov dword [ebp - 0x5c], eax
sub eax, ecx
push eax
push 0x24
push ecx
call fcn.0060b860
add esp, 0xc
mov dword [ebp - 0x50], eax
test eax, eax
je 0x477ee4
nop dword [eax + eax]
mov ecx, eax
mov edx, str._FileVersion
mov edi, 9
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x477e91
add ecx, 4
add edx, 4
sub edi, 4
jae 0x477e80
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x477eb8
cmp edi, 0xfffffffd
je 0x477eb4
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x477eb8
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x477eb8
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x477eb8
xor eax, eax
jmp 0x477ebd
sbb eax, eax
or eax, 1
mov ecx, dword [ebp - 0x50]
test eax, eax
je 0x477f6e
mov eax, dword [ebp - 0x5c]
inc ecx
sub eax, ecx
push eax
push 0x24
push ecx
call fcn.0060b860
add esp, 0xc
mov dword [ebp - 0x50], eax
test eax, eax
jne 0x477e70
mov edi, dword [ebp - 0x54]
push 5
call fcn.0049dcb0
add esp, 4
test eax, eax
je 0x477f10
push str.failed_to_find_file_version_key
push 0x39
push str.Intel::Analytics::CTxtVerSubstitution::Substitute
mov edx, str.E:BT3ee744b7_78e2_4d9e_b7ee_63935aebafd6ClientAnalyticsXMLUpdater_srcBSIUpdaterPluginTxtVerSubstitution.cpp
mov ecx, 5
call fcn.00438de0
add esp, 0xc
push 8
xor eax, eax
mov dword [edi], 0
mov dword [edi + 0x10], 0
mov ecx, edi
mov dword [edi + 0x14], 7
push 0x68f0d4
mov word [edi], ax
call fcn.0042e850
mov edx, dword [ebp - 0x2c]
cmp edx, 0x10
jb 0x478134
mov ecx, dword [ebp - 0x40]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x47812a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4781cb
jmp 0x47812a
sub ecx, dword [ebp - 0x60]
cmp ecx, 0xffffffff
je 0x477ee1
mov eax, dword [ebp - 0x30]
lea edx, [ecx + 0xd]
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
cmp eax, edx
jb 0x4781d0
sub eax, edx
or ecx, 0xffffffff
cmp eax, 0xffffffff
cmovb ecx, eax
cmp byte [ebp - 0x55], 0
lea eax, [ebp - 0x40]
cmovne eax, dword [ebp - 0x40]
push ecx
add eax, edx
lea ecx, [ebp - 0x28]
push eax
call fcn.0042f5a0
mov byte [ebp - 4], 3
lea edi, [ebp - 0x28]
cmp dword [ebp - 0x14], 0x10
mov eax, dword [ebp - 0x18]
cmovae edi, dword [ebp - 0x28]
test eax, eax
je 0x478170
push eax
push 0x20
push edi
call fcn.0060b860
mov ecx, eax
add esp, 0xc
test ecx, ecx
je 0x478170
sub ecx, edi
cmp ecx, 0xffffffff
je 0x478170
cmp dword [ebp - 0x18], ecx
lea eax, [ebp - 0x28]
mov dword [ebp - 0x78], 0
cmovb ecx, dword [ebp - 0x18]
cmp dword [ebp - 0x14], 0x10
push ecx
cmovae eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x78]
push eax
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x64], 0xf
call fcn.0042f5a0
mov edx, dword [ebp - 0x14]
cmp edx, 0x10
jb 0x478063
mov ecx, dword [ebp - 0x28]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x478059
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4781cb
push edx
push ecx
call fcn.00608415
add esp, 8
movups xmm1, xmmword [ebp - 0x78]
cmp dword [ebp - 0x64], 0x10
lea edx, [ebp - 0x28]
mov edi, dword [ebp - 0x54]
mov eax, dword [ebp - 0x68]
push dword [ebp - 0x4c]
movq xmm0, qword [ebp - 0x68]
movd ecx, xmm1
mov dword [edi], 0
mov dword [edi + 0x10], 0
cmovae edx, ecx
mov dword [edi + 0x14], 7
add eax, edx
movq qword [ebp - 0x18], xmm0
cmp dword [ebp - 0x64], 0x10
lea edx, [ebp - 0x28]
push eax
cmovae edx, ecx
xor ecx, ecx
mov word [edi], cx
mov ecx, edi
push edx
movups xmmword [ebp - 0x28], xmm1
call fcn.00478340
mov edx, dword [ebp - 0x14]
cmp edx, 0x10
jb 0x4780ee
mov ecx, dword [ebp - 0x28]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4780e4
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4781cb
push edx
push ecx
call fcn.00608415
add esp, 8
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
cmp edx, 0x10
jb 0x478134
mov ecx, dword [ebp - 0x40]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x47812a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4781cb
push edx
push ecx
call fcn.00608415
add esp, 8
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0xf
mov byte [ebp - 0x40], 0
test esi, esi
je 0x478151
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00608185
mov esp, ebp
pop ebp
ret 0xc
push 5
call fcn.0049dcb0
add esp, 4
test eax, eax
je 0x47819c
push str.failed_to_find_the_end_of_the_file_version
push 0x41
push str.Intel::Analytics::CTxtVerSubstitution::Substitute
mov edx, str.E:BT3ee744b7_78e2_4d9e_b7ee_63935aebafd6ClientAnalyticsXMLUpdater_srcBSIUpdaterPluginTxtVerSubstitution.cpp
mov ecx, 5
call fcn.00438de0
add esp, 0xc
mov edi, dword [ebp - 0x54]
xor eax, eax
push 8
push 0x68f0d4
mov ecx, edi
mov dword [edi], 0
mov dword [edi + 0x10], 0
mov dword [edi + 0x14], 7
mov word [edi], ax
call fcn.0042e850
jmp 0x4780ba
call fcn.0060e0d0
call fcn.0042b9a0
int3