Function at 0x4037b8
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
push ebx
sub esp, 0xb4
mov ebx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x14]
mov word [ebp - 0x9c], bx
mov byte [ebp - 0xa0], cl
mov byte [ebp - 0xa4], dl
mov byte [ebp - 0xa8], al
mov byte [ebp - 0x19], 0x1c
mov word [ebp - 0x82], 0x444
movzx eax, byte [ebp - 0x19]
mov byte [ebp - 0xb], al
movzx eax, byte [ebp - 0xa4]
mov byte [ebp - 0x89], al
movzx eax, word [ebp - 0x82]
cmp ax, 0x2c8
jbe 0x4038cc
movsx eax, byte [ebp - 0x19]
lea edx, [eax - 0x75]
movsx eax, byte [ebp - 0xb]
cmp edx, eax
jg 0x4038c3
lea eax, [ebp - 0x89]
mov dword [ebp - 0x58], eax
movzx eax, word [ebp - 0x82]
cmp ax, 0x929
jne 0x4038a1
movzx eax, byte [ebp - 0x89]
movzx ebx, al
mov eax, dword [ebp - 0x58]
movzx eax, byte [eax]
movzx ecx, al
mov eax, dword [ebp - 0x58]
movzx eax, byte [eax]
movzx edx, al
movsx eax, word [ebp - 0x9c]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004037b8
movzx edx, byte [ebp - 0xa0]
movzx eax, byte [ebp - 0xa4]
add eax, edx
mov byte [ebp - 0x89], al
movzx edx, byte [ebp - 0x89]
mov eax, dword [ebp - 0x58]
and dl, byte [ebp - 0xa4]
mov byte [eax], dl
movzx eax, word [ebp - 0x82]
mov word [ebp - 0xa], ax
movzx eax, word [ebp - 0x9c]
mov word [ebp - 0xe], ax
lea eax, [ebp - 0x89]
mov dword [ebp - 0x88], eax
lea eax, [ebp - 0x82]
mov dword [ebp - 0x14], eax
movzx eax, word [ebp - 0x9c]
mov word [ebp - 0x1c], ax
movzx eax, byte [ebp - 0x19]
mov byte [ebp - 0x1d], al
movzx eax, word [ebp - 0x82]
mov word [ebp - 0x20], ax
movzx eax, byte [ebp - 0xa0]
mov byte [ebp - 0x51], al
mov dword [ebp - 0x18], 0x4cf0
movsx eax, byte [ebp - 0x1d]
cmp eax, 0x1c
je 0x403939
cmp eax, 0x66
jne 0x403a9c
lea eax, [ebp - 0x51]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0xf0
mov dword [esp + 4], 0x96
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
call sub.VERSION.dll_GetFileVersionInfoA
sub esp, 0x10
mov dword [ebp - 0x28], eax
jmp 0x403a9c
mov eax, dword [ebp - 0x14]
movzx eax, word [eax]
movzx edx, ax
movzx eax, word [ebp - 0x82]
movzx eax, ax
imul edx, eax
movzx eax, word [ebp - 0x20]
xor ax, word [ebp - 0xa]
movzx eax, ax
cmp edx, eax
je 0x403a8e
movsx edx, word [ebp - 0x1c]
movsx eax, word [ebp - 0xe]
mov ecx, eax
shl edx, cl
movsx eax, word [ebp - 0x9c]
cmp edx, eax
jle 0x403999
movsx eax, byte [ebp - 0x1d]
mov dword [esp + 8], 0x28
mov edx, dword [ebp - 0x18]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00404261
jmp 0x403a9b
movzx eax, byte [ebp - 0x19]
or al, byte [ebp - 0x1d]
cmp byte [ebp - 0xb], al
jge 0x403a9b
mov eax, dword [ebp - 0x14]
movzx eax, word [eax]
mov edx, 0
div word [ebp - 0xa]
movzx edx, ax
movzx eax, word [ebp - 0x82]
movzx ebx, ax
movzx eax, word [ebp - 0x20]
mov ecx, eax
sar ebx, cl
mov eax, ebx
cmp edx, eax
jge 0x403a6e
mov eax, dword [ebp - 0x88]
movzx ecx, byte [eax]
mov eax, dword [ebp - 0x88]
movzx edx, byte [ebp - 0xa4]
add edx, ecx
mov byte [eax], dl
movzx eax, word [ebp - 0x1c]
mov word [ebp - 0x9c], ax
mov eax, dword [ebp - 0x88]
movzx eax, byte [eax]
movzx ebx, al
movsx ecx, byte [ebp - 0x1d]
movsx edx, byte [ebp - 0xb]
movsx eax, byte [ebp - 0xb]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004e3676
sub esp, 0x10
lea eax, [ebp - 0x58]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x71
mov dword [esp + 4], 0x75
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
mov eax, dword [sym.imp.GDI32.dll_SetBrushOrgEx]
call eax
sub esp, 0x10
mov dword [ebp - 0x30], eax
movzx edx, byte [ebp - 0x51]
mov eax, dword [ebp - 0x88]
movzx ecx, byte [eax]
mov eax, edx
sub eax, ecx
mov byte [ebp - 0x89], al
jmp 0x403a9b
cmp dword [ebp - 0x18], 0x6776
jle 0x403a9b
mov eax, dword [ebp - 0x14]
movzx edx, word [eax]
movzx eax, word [ebp - 0x82]
and edx, eax
mov eax, dword [ebp - 0x14]
mov word [eax], dx
jmp 0x403a9b
movzx eax, byte [ebp - 0x1d]
movzx edx, byte [ebp - 0x19]
sub eax, edx
mov byte [ebp - 0xb], al
nop
mov eax, dword [ebp - 0x14]
movzx eax, word [eax]
movzx edx, ax
movzx eax, word [ebp - 0x20]
lea ecx, [edx + eax]
movzx eax, word [ebp - 0x82]
movzx edx, ax
movzx eax, word [ebp - 0xa]
add eax, edx
cmp ecx, eax
jge 0x403b2f
lea eax, [ebp - 0x88]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x4c]
mov dword [esp], eax
mov eax, dword [sym.imp.GDI32.dll_GetWindowExtEx]
call eax
sub esp, 8
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x58]
movzx eax, byte [eax]
movzx edx, al
movzx eax, byte [ebp - 0x51]
movzx eax, al
mov ecx, eax
shl edx, cl
mov eax, dword [ebp - 0x58]
mov byte [eax], dl
mov eax, dword [ebp - 0x88]
movzx ecx, byte [eax]
movzx edx, byte [ebp - 0x89]
mov eax, dword [ebp - 0x58]
xor edx, ecx
mov byte [eax], dl
mov eax, dword [ebp - 0x14]
movzx eax, word [eax]
movzx edx, ax
movzx eax, word [ebp - 0x82]
movzx eax, ax
mov ecx, eax
sar edx, cl
mov eax, edx
mov word [ebp - 0xa], ax
jmp 0x403ddd
mov eax, dword [ebp - 0x88]
movzx edx, byte [eax]
movzx eax, byte [ebp - 0x89]
and eax, edx
movzx edx, al
movzx eax, byte [ebp - 0x51]
movzx ecx, al
mov eax, dword [ebp - 0x58]
movzx eax, byte [eax]
movzx eax, al
add eax, ecx
cmp edx, eax
jg 0x403d8c
mov eax, dword [ebp - 0x88]
movzx eax, byte [eax]
movzx eax, al
test eax, eax
jne 0x403c36
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x34], eax
cmp dword [ebp - 0x34], 0x1b94
je 0x403b8f
cmp dword [ebp - 0x34], 0x6ba0
je 0x403be2
jmp 0x403c8e
movzx ecx, byte [ebp - 0x89]
movzx edx, byte [ebp - 0x51]
mov eax, dword [ebp - 0x88]
and edx, ecx
mov byte [eax], dl
movzx ebx, byte [ebp - 0xa8]
movsx ecx, byte [ebp - 0x19]
movsx edx, byte [ebp - 0x1d]
movsx eax, byte [ebp - 0x1d]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004e3676
sub esp, 0x10
mov eax, dword [ebp - 0x58]
movzx edx, byte [eax]
movzx eax, byte [ebp - 0x51]
add eax, edx
mov byte [ebp - 0x89], al
jmp 0x403c34
mov eax, dword [ebp - 0x88]
movzx eax, byte [eax]
movzx ebx, al
mov eax, dword [ebp - 0x88]
movzx eax, byte [eax]
movzx ecx, al
movzx eax, byte [ebp - 0x51]
movzx edx, al
movsx eax, word [ebp - 0x9c]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004037b8
mov eax, dword [ebp - 0x14]
movzx eax, word [eax]
movzx ecx, word [ebp - 0x82]
sub eax, ecx
mov edx, eax
mov eax, dword [ebp - 0x14]
mov word [eax], dx
nop
jmp 0x403c8e
mov dword [esp + 0xc], 0xf7
mov dword [esp + 8], fcn.00404261
mov eax, dword [ebp - 0x3c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x38]
mov dword [esp], eax
mov eax, dword [sym.imp.GDI32.dll_EnumMetaFile]
call eax
sub esp, 0x10
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x14]
movzx edx, word [eax]
movzx eax, word [ebp - 0x82]
or edx, eax
mov eax, dword [ebp - 0x14]
mov word [eax], dx
xor dword [ebp - 0x18], 0x753b
movsx edx, byte [ebp - 0x19]
movsx eax, byte [ebp - 0x1d]
mov ecx, eax
sar edx, cl
mov eax, edx
mov byte [ebp - 0xb], al
nop
movzx eax, word [ebp - 0xe]
and ax, word [ebp - 0x1c]
cmp word [ebp - 0x9c], ax
jg 0x403d7d
movzx eax, byte [ebp - 0x89]
movzx ebx, al
mov eax, dword [ebp - 0x88]
movzx eax, byte [eax]
movzx ecx, al
movzx edx, byte [ebp - 0xa4]
movsx eax, word [ebp - 0xe]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.004037b8
movzx eax, word [ebp - 0x1c]
mov word [ebp - 0x9c], ax
sub dword [ebp - 0x18], 0x27e1
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x40]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
mov eax, dword [sym.imp.GDI32.dll_SelectPalette]
call eax
sub esp, 0xc
mov dword [ebp - 0x44], eax
movzx edx, byte [ebp - 0x89]
movzx ecx, byte [ebp - 0x51]
mov eax, dword [ebp - 0x88]
sub edx, ecx
mov byte [eax], dl
movsx ecx, byte [ebp - 0x1d]
movzx eax, byte [ebp - 0x89]
movzx edx, al
mov eax, dword [ebp - 0x88]
movzx eax, byte [eax]
movzx eax, al
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00403df2
sub esp, 0xc
movzx edx, word [ebp - 0xa]
movzx eax, word [ebp - 0x20]
add edx, eax
mov eax, dword [ebp - 0x14]
mov word [eax], dx
movzx eax, byte [ebp - 0x89]
movzx edx, al
mov eax, dword [ebp - 0x88]
movzx eax, byte [eax]
movzx eax, al
mov ecx, eax
shl edx, cl
mov eax, edx
mov byte [ebp - 0x51], al
movzx edx, byte [ebp - 0x19]
movzx eax, byte [ebp - 0xb]
add eax, edx
mov byte [ebp - 0x1d], al
jmp 0x403da0
movzx edx, byte [ebp - 0x51]
mov eax, dword [ebp - 0x58]
movzx ecx, byte [eax]
mov eax, dword [ebp - 0x88]
sub edx, ecx
mov byte [eax], dl
mov dword [esp + 8], 0x7f
lea eax, [ebp - 0x80]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
mov eax, dword [sym.imp.GDI32.dll_PolyTextOutA]
call eax
sub esp, 0xc
mov dword [ebp - 0x28], eax
movsx eax, byte [ebp - 0xb]
mov dword [esp + 8], 0x76
mov edx, dword [ebp - 0x18]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.00404261
movzx eax, word [ebp - 0xe]
mov word [ebp - 0x9c], ax
mov eax, 0x61
mov ebx, dword [ebp - 4]
leave
ret