Function at 0x4038f0
Capabilities:
Check os version

Disassembly:
push 0xffffffffffffffff
push 0x42983b
mov eax, dword fs:[0]
push eax
sub esp, 0x344
mov eax, dword [0x434bf4]
xor eax, esp
mov dword [esp + 0x340], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x434bf4]
xor eax, esp
push eax
lea eax, [esp + 0x358]
mov dword fs:[0], eax
mov eax, dword [esp + 0x36c]
mov edi, ecx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x14], eax
call fcn.00408a78
xor ecx, ecx
xor ebx, ebx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x403958
push 0x80004005
call fcn.00402e70
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
mov dword [esp + 0x360], ebx
xor esi, esi
xor edx, edx
cmp dword [esp + 0x374], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x28], ebx
je 0x4039ad
mov ecx, dword [esp + 0x378]
mov eax, dword [esp + 0x37c]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x380]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x28], ecx
mov ecx, 0x7fffffff
mov eax, str.http:__go.epson.com_redirect.aspx_
cmp word [eax], bx
je 0x4039cc
add eax, 2
sub ecx, 1
jne 0x4039b7
or esi, 0xffffffff
jmp 0x404227
cmp ecx, ebx
je 0x403aaa
mov ebp, 0x7fffffff
sub ebp, ecx
cmp edi, ebx
je 0x403a14
cmp word [edi], bx
je 0x403a14
mov ecx, 0x7fffffff
mov eax, edi
jmp 0x4039f0
cmp word [eax], bx
je 0x403a05
add eax, 2
sub ecx, 1
jne 0x4039f0
or esi, 0xffffffff
jmp 0x404227
cmp ecx, ebx
je 0x403aaa
mov esi, 0x7fffffff
sub esi, ecx
cmp dword [esp + 0x14], ebx
je 0x403a48
mov eax, dword [esp + 0x14]
cmp word [eax], bx
je 0x403a48
mov ecx, 0x7fffffff
cmp word [eax], bx
je 0x403a3d
add eax, 2
sub ecx, 1
jne 0x403a28
or esi, 0xffffffff
jmp 0x404227
cmp ecx, ebx
je 0x403aaa
mov edx, 0x7fffffff
sub edx, ecx
mov edi, dword [esp + 0x370]
add esi, edx
add esi, ebp
lea esi, [esi + esi + 0xc8]
push esi
push 8
mov dword [edi], ebx
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ecx, eax
cmp ecx, ebx
mov dword [edi], ecx
jne 0x403a7e
mov esi, 0xfffffffe
jmp 0x404227
xor eax, eax
cmp esi, ebx
je 0x403a8c
cmp esi, 0x7fffffff
jbe 0x403a91
mov eax, 0x80070057
cmp eax, ebx
jl 0x403aaa
push str.http:__go.epson.com_redirect.aspx_
mov eax, 0x7ffffffe
mov edx, esi
call fcn.004037b0
cmp eax, ebx
je 0x403ab2
or esi, 0xffffffff
jmp 0x404227
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
cmp dword [esp + 0x18], ebx
mov ebp, eax
lea edi, [esp + 0x154]
je 0x403aea
mov ecx, dword [esp + 0x18]
push ecx
push str.LGW0x_X
mov ecx, 0x80
call fcn.004036f0
add esp, 8
cmp eax, ebx
je 0x403b11
or esi, 0xffffffff
jmp 0x404227
mov edx, ebp
and edx, 0x3ff
push edx
push str.LGW0x_X
mov ecx, 0x80
call fcn.004036f0
add esp, 8
cmp eax, ebx
je 0x403b11
or esi, 0xffffffff
jmp 0x404227
mov ecx, dword [esp + 0x370]
mov ebx, dword [ecx]
lea eax, [esp + 0x154]
push eax
call fcn.004036b0
test eax, eax
je 0x403b33
or esi, 0xffffffff
jmp 0x404227
cmp dword [esp + 0x1c], 0
je 0x403b8a
mov edx, dword [esp + 0x1c]
push edx
push str.CNW0x_X
mov ecx, 0x80
lea edi, [esp + 0x15c]
call fcn.004036f0
add esp, 8
test eax, eax
je 0x403b64
or esi, 0xffffffff
jmp 0x404227
mov ecx, dword [esp + 0x370]
mov ebx, dword [ecx]
lea eax, [esp + 0x154]
push eax
call fcn.004036b0
test eax, eax
je 0x403c04
or esi, 0xffffffff
jmp 0x404227
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
je 0x403bbc
push str.GetUserGeoID
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test edi, edi
je 0x403bbc
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
push 0x10
call edi
cmp eax, 0xffffffff
jne 0x403bc8
mov ecx, ebp
call fcn.00403850
cmp eax, 0xffffffff
je 0x403c04
push eax
push str.CNW0x_X
mov ecx, 0x80
lea edi, [esp + 0x15c]
call fcn.004036f0
add esp, 8
test eax, eax
je 0x403bee
or esi, 0xffffffff
jmp 0x404227
mov eax, dword [esp + 0x370]
mov ebx, dword [eax]
lea edx, [esp + 0x154]
push edx
jmp 0x403b75
movzx ecx, byte [esp + 0x368]
push ecx
push str.CTI_d
mov ecx, 0x80
lea edi, [esp + 0x15c]
call fcn.004036f0
add esp, 8
test eax, eax
jne 0x403b82
mov ebp, dword [esp + 0x370]
mov ebx, dword [ebp]
mov edx, edi
push edx
call fcn.004036b0
test eax, eax
jne 0x403b82
mov edi, dword [esp + 0x2c]
test edi, edi
je 0x403d90
cmp word [edi], ax
je 0x403d90
push str.Epson
push edi
call fcn.00412abf
add esp, 8
test eax, eax
jne 0x403ca5
push str.Epson_
push edi
call fcn.00412abf
add esp, 8
test eax, eax
jne 0x403ca5
push 0x42ef6c
push edi
call fcn.00412abf
add esp, 8
test eax, eax
jne 0x403ca5
push str.EPSON_
push edi
call fcn.00412abf
add esp, 8
test eax, eax
je 0x403cd8
mov ecx, 0x7fffffff
mov eax, str.Epson
nop
cmp word [eax], 0
je 0x403cc6
add eax, 2
sub ecx, 1
jne 0x403cb0
or esi, 0xffffffff
jmp 0x404227
test ecx, ecx
je 0x403aaa
mov eax, 0x7fffffff
sub eax, ecx
lea edi, [edi + eax*2]
lea eax, [esp + 0x254]
mov ecx, eax
xor ebx, ebx
mov edx, 0x80
sub edi, ecx
lea ebx, [ebx]
lea ecx, [edx + 0x7fffff7e]
test ecx, ecx
je 0x403d10
movzx ecx, word [edi + eax]
test cx, cx
je 0x403d10
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x403cf0
jmp 0x403d14
test edx, edx
jne 0x403d1c
sub eax, 2
mov ebx, 0x8007007a
test ebx, ebx
mov word [eax], 0
jne 0x403b82
cmp word [esp + 0x254], bx
lea eax, [esp + 0x254]
je 0x403d54
lea ebx, [ebx]
cmp word [eax], 0x20
jne 0x403d4b
mov word [eax], 0x5f
add eax, 2
cmp word [eax], 0
jne 0x403d40
lea edx, [esp + 0x254]
push edx
push str.PRN_s
mov ecx, 0x80
lea edi, [esp + 0x15c]
call fcn.004036f0
add esp, 8
test eax, eax
jne 0x403b82
mov ebx, dword [ebp]
mov eax, edi
push eax
call fcn.004036b0
test eax, eax
jne 0x403b82
lea ecx, [esp + 0x30]
push ecx
mov word [esp + 0x148], 0
mov dword [esp + 0x34], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x403e29
mov eax, dword [esp + 0x40]
cmp eax, 1
jne 0x403f1b
cmp dword [esp + 0x34], 4
jne 0x403e29
mov eax, dword [esp + 0x38]
test eax, eax
je 0x403e29
cmp eax, 0xa
jne 0x403ecb
lea edx, [eax - 2]
lea eax, [esp + 0x144]
mov edi, 0x42ef9c
mov ecx, eax
xor ebx, ebx
sub edi, ecx
jmp 0x403df0
lea ecx, [edx + 0x7ffffff6]
test ecx, ecx
je 0x403e10
movzx ecx, word [edi + eax]
test cx, cx
je 0x403e10
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x403df0
jmp 0x403e14
test edx, edx
jne 0x403e1c
sub eax, 2
mov ebx, 0x8007007a
test ebx, ebx
mov word [eax], 0
jne 0x403b82
cmp word [esp + 0x144], 0
je 0x403e70
lea edx, [esp + 0x144]
push edx
push str.OSC_s
mov ecx, 0x80
lea edi, [esp + 0x15c]
call fcn.004036f0
add esp, 8
test eax, eax
jne 0x403b82
mov ebx, dword [ebp]
mov eax, edi
push eax
call fcn.004036b0
test eax, eax
jne 0x403b82
mov eax, dword [esp + 0x28]
test eax, eax
ja 0x40416a
lea eax, [esp + 0x154]
mov edi, str.WSI1
mov ecx, eax
xor ebx, ebx
mov edx, 0x80
sub edi, ecx
jmp 0x403ea0
lea ecx, [edx + 0x7fffff7e]
test ecx, ecx
je 0x40414d
movzx ecx, word [eax + edi]
test cx, cx
je 0x40414d
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x403ea0
jmp 0x404151
cmp eax, 0x5a
jne 0x403e29
lea edx, [eax - 0x52]
lea eax, [esp + 0x144]
mov edi, 0x42efa4
mov ecx, eax
xor ebx, ebx
sub edi, ecx
lea esp, [esp]
lea ecx, [edx + 0x7ffffff6]
test ecx, ecx
je 0x403e10
movzx ecx, word [edi + eax]
test cx, cx
je 0x403e10
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x403ef0
jmp 0x403e14
cmp eax, 2
jne 0x403e29
mov eax, dword [esp + 0x34]
cmp eax, 4
je 0x403e29
cmp eax, 5
jne 0x40402b
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x403f8b
lea edx, [eax + 8]
lea eax, [esp + 0x144]
mov edi, 0x42efac
mov ecx, eax
xor ebx, ebx
sub edi, ecx
jmp 0x403f60
lea ecx, [edx + 0x7ffffff6]
test ecx, ecx
je 0x403e10
movzx ecx, word [edi + eax]
test cx, cx
je 0x403e10
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x403f60
jmp 0x403e14
cmp eax, 1
jne 0x403fdb
lea edx, [eax + 7]
lea eax, [esp + 0x144]
mov edi, 0x42efb4
mov ecx, eax
xor ebx, ebx
sub edi, ecx
jmp 0x403fb0
lea ecx, [edx + 0x7ffffff6]
test ecx, ecx
je 0x403e10
movzx ecx, word [edi + eax]
test cx, cx
je 0x403e10
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x403fb0
jmp 0x403e14
cmp eax, 2
jne 0x403e29
lea edx, [eax + 6]
lea eax, [esp + 0x144]
mov edi, 0x42efbc
mov ecx, eax
xor ebx, ebx
sub edi, ecx
lea esp, [esp]
lea ecx, [edx + 0x7ffffff6]
test ecx, ecx
je 0x403e10
movzx ecx, word [edi + eax]
test cx, cx
je 0x403e10
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x404000
jmp 0x403e14
cmp eax, 6
jb 0x403e29
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x4040bd
call fcn.00403810
xor ebx, ebx
lea ecx, [esp + 0x144]
test eax, eax
mov edx, 8
mov eax, ecx
je 0x40408b
mov edi, 0x42efc4
sub edi, ecx
lea ecx, [edx + 0x7ffffff6]
test ecx, ecx
je 0x403e10
movzx ecx, word [eax + edi]
test cx, cx
je 0x403e10
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x404060
jmp 0x403e14
mov edi, 0x42efcc
sub edi, ecx
lea ecx, [edx + 0x7ffffff6]
test ecx, ecx
je 0x403e10
movzx ecx, word [eax + edi]
test cx, cx
je 0x403e10
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x404092
jmp 0x403e14
cmp eax, 1
jb 0x403e29
call fcn.00403810
xor ebx, ebx
lea ecx, [esp + 0x144]
test eax, eax
mov edx, 8
mov eax, ecx
je 0x40411b
mov edi, 0x42efd4
sub edi, ecx
jmp 0x4040f0
lea ecx, [edx + 0x7ffffff6]
test ecx, ecx
je 0x403e10
movzx ecx, word [eax + edi]
test cx, cx
je 0x403e10
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x4040f0
jmp 0x403e14
mov edi, 0x42efdc
sub edi, ecx
lea ecx, [edx + 0x7ffffff6]
test ecx, ecx
je 0x403e10
movzx ecx, word [eax + edi]
test cx, cx
je 0x403e10
mov word [eax], cx
add eax, 2
sub edx, 1
jne 0x404122
jmp 0x403e14
test edx, edx
jne 0x404159
sub eax, 2
mov ebx, 0x8007007a
test ebx, ebx
mov word [eax], 0
je 0x40418c
or esi, 0xffffffff
jmp 0x404227
push eax
push str.WSI_d
mov ecx, 0x80
lea edi, [esp + 0x15c]
call fcn.004036f0
add esp, 8
test eax, eax
jne 0x403b82
mov ebx, dword [ebp]
lea edx, [esp + 0x154]
push edx
call fcn.004036b0
test eax, eax
jne 0x403b82
mov edi, dword [esp + 0x14]
test edi, edi
je 0x4041d7
cmp word [edi], ax
je 0x4041d7
mov ebx, dword [ebp]
push 0x42f014
call fcn.004036b0
test eax, eax
jne 0x403b82
mov ebx, dword [ebp]
push edi
call fcn.004036b0
test eax, eax
jne 0x403b82
mov edi, dword [ebp]
lea eax, [esp + 0x24]
push eax
push esi
push edi
call fcn.004010e0
test eax, eax
jne 0x403b82
push edi
lea ecx, [esp + 0x24]
push 0x42f018
push ecx
call fcn.00403360
mov edx, dword [esp + 0x2c]
push edx
mov eax, 0x43951c
call fcn.00405f10
push str.GoEpson.DLL_End_r_n
mov eax, 0x43951c
call fcn.00405f10
mov esi, dword [esp + 0x38]
add esp, 0x14
test esi, esi
jge 0x404247
mov eax, dword [esp + 0x370]
cmp dword [eax], 0
je 0x404247
mov ecx, eax
mov edx, dword [ecx]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [esp + 0x360], 0xffffffff
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x404272
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, esi
mov ecx, dword [esp + 0x358]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x340]
xor ecx, esp
call fcn.004127bc
add esp, 0x350
ret