Function at 0x52de30
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5776e0
mov eax, dword fs:[0]
push eax
sub esp, 0x840
mov eax, dword [0x5d52e0]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x834]
mov dword [ebp - 0x81c], eax
mov eax, dword [eax]
push ecx
xor esi, esi
push eax
mov dword [ebp - 0x834], esi
call dword [sym.imp.VERSION.dll_GetFileVersionInfoSizeW]
mov ebx, eax
cmp ebx, esi
jne 0x52de9d
push 0x5c781c
lea edx, [ebp - 0x815]
push edx
mov byte [ebp - 0x815], 0
call fcn.005039bf
xor ecx, ecx
lea edi, [ebx + 2]
mov dword [ebp - 0x844], esi
mov dword [ebp - 0x840], ecx
mov dword [ebp - 0x83c], ecx
cmp edi, ecx
jbe 0x52def0
mov ecx, edi
lea eax, [ebp - 0x844]
call fcn.00407110
mov esi, dword [ebp - 0x844]
mov ecx, dword [ebp - 0x840]
mov eax, esi
sub eax, ecx
add eax, edi
je 0x52dee5
push eax
push 0
push ecx
call fcn.00503ac0
add esp, 0xc
lea eax, [esi + edi]
mov dword [ebp - 0x840], eax
xor ecx, ecx
push esi
mov dword [ebp - 4], ecx
mov edx, dword [ebp - 0x81c]
mov eax, dword [edx]
push ebx
push ecx
push eax
call dword [sym.imp.VERSION.dll_GetFileVersionInfoW]
test eax, eax
jne 0x52df20
mov byte [ebp - 0x815], al
push 0x5c781c
lea eax, [ebp - 0x815]
push eax
call fcn.005039bf
xor ebx, ebx
push 0x7fe
lea edx, [ebp - 0x812]
xor ecx, ecx
push ebx
push edx
mov dword [ebp - 0x830], ebx
mov dword [ebp - 0x824], ebx
mov word [ebp - 0x814], cx
call fcn.00503ac0
mov edi, dword [sym.imp.VERSION.dll_VerQueryValueW]
add esp, 0xc
lea eax, [ebp - 0x830]
push eax
lea ecx, [ebp - 0x824]
push ecx
push str.VarFileInfoTranslation
push esi
call edi
test eax, eax
jne 0x52df83
push 0x5c781c
lea edx, [ebp - 0x815]
push edx
mov byte [ebp - 0x815], bl
call fcn.005039bf
mov eax, dword [ebp - 0x824]
movzx ecx, word [eax + 2]
movzx edx, word [eax]
push 0x5acbac
push ecx
push edx
push str.StringFileInfo_04x_04x_s
lea eax, [ebp - 0x814]
push 0x400
push eax
call fcn.00500a88
add esp, 0x18
lea ecx, [ebp - 0x830]
push ecx
lea edx, [ebp - 0x82c]
push edx
lea eax, [ebp - 0x814]
push eax
push esi
mov dword [ebp - 0x82c], ebx
call edi
test eax, eax
jne 0x52dfe9
push 0x5c781c
lea ecx, [ebp - 0x815]
push ecx
mov byte [ebp - 0x815], bl
call fcn.005039bf
mov edx, dword [ebp - 0x82c]
push edx
lea ecx, [ebp - 0x828]
mov dword [ebp - 0x820], ebx
xor edi, edi
call fcn.00401210
lea ecx, [ebp - 0x81c]
mov dword [ebp - 0x84c], ebx
call fcn.004011e0
mov byte [ebp - 4], 2
lea ebx, [edi + 3]
jmp 0x52e020
lea eax, [ebp - 0x84c]
push eax
push 0x5acbc4
lea ecx, [ebp - 0x848]
push ecx
lea ecx, [ebp - 0x828]
call fcn.0040b970
push eax
lea ecx, [ebp - 0x81c]
mov byte [ebp - 4], bl
call fcn.004015b0
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x848]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x52e073
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [ebp - 0x81c]
push 0xa
push 0
push esi
call fcn.00500a26
mov ecx, ebx
sub ecx, edi
add ecx, ecx
add ecx, ecx
movzx eax, al
add ecx, ecx
shl eax, cl
add esp, 0xc
inc edi
or dword [ebp - 0x820], eax
cmp dword [esi - 0xc], 0
jne 0x52e020
cmp edi, ebx
jl 0x52e020
lea eax, [esi - 0x10]
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x52e0ce
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x828]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x52e0f4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [ebp - 0x844]
call fcn.004091f0
mov eax, dword [ebp - 0x820]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004ff57c
mov esp, ebp
pop ebp
ret