Function at 0x41fdd0
Capabilities:
Check if file exists
Check mutex on windows
Copy file
Get common file path
Get file attributes
Set file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x546963
mov eax, dword fs:[0]
push eax
sub esp, 0x894
mov eax, dword [0x5ec938]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov ebx, ecx
mov ecx, dword [ebp + 0x10]
push 0x11c
lea esi, [ebx + 0x10]
push 0
push esi
mov dword [ebp - 0x834], eax
mov dword [ebp - 0x86c], ecx
call fcn.0052c850
add esp, 0xc
push esi
mov dword [esi], 0x11c
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
sub esp, 0x114
mov edi, esp
mov ecx, 0x45
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
call fcn.00413240
push 0x206
push 0
test eax, eax
jne 0x41fefe
lea eax, [ebp - 0x216]
xor edx, edx
push eax
mov word [ebp - 0x218], dx
call fcn.0052c850
add esp, 0xc
call fcn.0043b907
mov eax, dword [eax + 4]
mov edx, dword [eax + 0x44]
push 0x104
lea ecx, [ebp - 0x218]
push ecx
push 0x7d0
push edx
call dword [sym.imp.USER32.dll_LoadStringW]
lea ecx, [ebp - 0x878]
push ecx
push 0
lea edx, [ebp - 0x834]
push edx
push 0x400
push 0xbe
push 0
lea eax, [ebp - 0x218]
push 0x3100
mov dword [ebp - 0x878], eax
mov dword [ebp - 0x834], 0
call dword [sym.imp.KERNEL32.dll_FormatMessageW]
mov ecx, dword [ebp - 0x834]
push 0
lea eax, [ebp - 0x218]
push eax
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov edx, dword [ebp - 0x834]
push edx
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov eax, 0x661
jmp 0x420aad
lea ecx, [ebp - 0x82e]
xor eax, eax
push ecx
mov word [ebp - 0x830], ax
call fcn.0052c850
mov edx, dword [ebp - 0x86c]
mov eax, dword [ebp - 0x834]
push edx
push eax
push str._s_s
lea ecx, [ebp - 0x830]
push 0x104
push ecx
call fcn.0052d99b
add esp, 0x20
lea esi, [ebx + 0x148]
lea edx, [ebp - 0x830]
push edx
mov ecx, esi
mov dword [ebp - 0x848], esi
call fcn.00407080
test eax, eax
je 0x420aa8
mov ecx, ebx
call fcn.0041e990
mov eax, dword [ebx + 0xe894]
mov dword [ebx + 0xdd94], eax
mov dword [ebp - 0x884], 0
cmp eax, 2
je 0x41ff87
cmp eax, 3
jne 0x42000d
push 0x556794
lea ecx, [ebp - 0x860]
call fcn.00404fe0
lea eax, [ebp - 0x884]
push eax
lea ecx, [ebp - 0x860]
push ecx
push 0
push 0x80000001
mov ecx, esi
mov dword [ebp - 4], 0
call fcn.0040f0e0
lea edi, [ebx + 0xe892]
push edi
lea edx, [ebx + 0xe8a0]
push edx
push 1
push 0x80000002
mov ecx, esi
call fcn.0040f0e0
mov eax, dword [ebp - 0x884]
test ax, ax
je 0x41ffe4
mov word [edi], ax
mov eax, dword [ebp - 0x860]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42000d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
movzx eax, word [ebx + 0xddf8]
test ax, ax
je 0x420055
push eax
mov word [ebx + 0xe890], ax
call fcn.00406d00
add esp, 4
push eax
mov ecx, esi
call fcn.00407de0
test eax, eax
jne 0x4200ab
mov eax, dword [ebx + 0xe894]
cmp eax, 2
je 0x420045
cmp eax, 3
jne 0x4200ab
mov cx, word [ebp - 0x884]
mov word [ebx + 0xe890], cx
jmp 0x4200ab
movzx eax, word [ebx + 0xe88c]
test ax, ax
je 0x42009d
push eax
mov word [ebx + 0xe890], ax
call fcn.00406d00
add esp, 4
push eax
mov ecx, esi
call fcn.00407de0
test eax, eax
jne 0x4200ab
mov eax, dword [ebx + 0xe894]
cmp eax, 2
je 0x42008d
cmp eax, 3
jne 0x4200ab
mov dx, word [ebp - 0x884]
mov word [ebx + 0xe890], dx
jmp 0x4200ab
mov ax, word [ebx + 0xe892]
mov word [ebx + 0xe890], ax
movzx ecx, word [ebx + 0xe890]
push ecx
call fcn.00406d00
add esp, 4
push eax
mov ecx, esi
call fcn.00407de0
test eax, eax
jne 0x42011a
xor edx, edx
push 0x206
push edx
lea eax, [ebp - 0x216]
push eax
mov word [ebp - 0x218], dx
call fcn.0052c850
mov ecx, dword [ebp - 0x834]
push str.MUI.dll
push ecx
push str._s_s
lea edx, [ebp - 0x218]
push 0x104
push edx
call fcn.0052d99b
lea eax, [ebp - 0x218]
push eax
call fcn.00401030
add esp, 0x24
mov word [ebx + 0xe890], ax
push 0x556794
lea ecx, [ebp - 0x83c]
call fcn.00404fe0
push 0x556794
lea ecx, [ebp - 0x840]
mov dword [ebp - 4], 1
call fcn.00404fe0
push 0x556794
lea ecx, [ebp - 0x858]
mov byte [ebp - 4], 2
call fcn.00404fe0
push 0x556794
lea ecx, [ebp - 0x85c]
mov byte [ebp - 4], 3
call fcn.00404fe0
lea ecx, [ebp - 0x840]
push ecx
lea edx, [ebp - 0x83c]
push edx
push 1
push 0x80000001
mov ecx, esi
mov byte [ebp - 4], 4
call fcn.0040f330
mov eax, dword [ebp - 0x83c]
cmp dword [eax - 0xc], 0
je 0x4201a1
mov ecx, dword [ebp - 0x840]
cmp dword [ecx - 0xc], 0
jne 0x4201f9
lea edx, [ebp - 0x85c]
push edx
lea eax, [ebp - 0x858]
push eax
push 1
push 0x80000002
mov ecx, esi
call fcn.0040f330
mov ecx, dword [ebp - 0x83c]
cmp dword [ecx - 0xc], 0
jne 0x4201db
lea edx, [ebp - 0x858]
push edx
lea ecx, [ebp - 0x83c]
call fcn.00402930
mov eax, dword [ebp - 0x840]
cmp dword [eax - 0xc], 0
jne 0x4201f9
lea ecx, [ebp - 0x85c]
push ecx
lea ecx, [ebp - 0x840]
call fcn.00402930
push 0x556794
lea ecx, [ebp - 0x838]
call fcn.00404fe0
push 0x556794
lea ecx, [ebp - 0x844]
mov byte [ebp - 4], 5
call fcn.00404fe0
cmp word [ebx + 0xddfa], 0
lea eax, [ebx + 0xddfa]
mov byte [ebp - 4], 6
je 0x420263
push eax
lea ecx, [ebp - 0x838]
call fcn.00402bd0
push str.japan
lea ecx, [ebp - 0x838]
call fcn.004095e0
test eax, eax
jne 0x4202a3
push str.asia
lea ecx, [ebp - 0x838]
call fcn.00402bd0
jmp 0x4202a3
cmp word [ebx + 0xe824], 0
lea eax, [ebx + 0xe824]
je 0x420281
push eax
lea ecx, [ebp - 0x838]
call fcn.00402bd0
jmp 0x4202a3
mov eax, dword [ebx + 0xe894]
cmp eax, 2
je 0x420291
cmp eax, 3
jne 0x4202a3
lea edx, [ebp - 0x83c]
push edx
lea ecx, [ebp - 0x838]
call fcn.00402930
cmp word [ebx + 0xdffa], 0
lea eax, [ebx + 0xdffa]
je 0x4202c1
push eax
lea ecx, [ebp - 0x844]
call fcn.00402bd0
jmp 0x420301
cmp word [ebx + 0xe84c], 0
lea eax, [ebx + 0xe84c]
je 0x4202df
push eax
lea ecx, [ebp - 0x844]
call fcn.00402bd0
jmp 0x420301
mov eax, dword [ebx + 0xe894]
cmp eax, 2
je 0x4202ef
cmp eax, 3
jne 0x420301
lea eax, [ebp - 0x840]
push eax
lea ecx, [ebp - 0x844]
call fcn.00402930
call fcn.00436219
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x42031b
push 0x80004005
call fcn.00401ed0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x854], eax
cmp word [ebx + 0xe1fa], 0
lea eax, [ebx + 0xe1fa]
mov byte [ebp - 4], 7
je 0x42034d
push eax
lea ecx, [ebp - 0x854]
call fcn.00402bd0
mov ecx, dword [ebp - 0x854]
mov edx, dword [ebp - 0x844]
mov eax, dword [ebp - 0x838]
push ecx
movzx ecx, word [ebx + 0xe890]
push edx
mov edx, dword [ebp - 0x834]
push eax
push ecx
sub esp, 0x114
mov edi, esp
mov ecx, 0x45
lea esi, [ebx + 0x10]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x848]
push edx
call fcn.0040fa90
test eax, eax
je 0x4204ac
mov eax, dword [ebp - 0x854]
add eax, 0xfffffff0
mov byte [ebp - 4], 6
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4203bc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x844]
add eax, 0xfffffff0
mov byte [ebp - 4], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4203e2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x838]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x420408
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x85c]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42042e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x858]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x420454
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x840]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42047a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x83c]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x420aa8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x420aa8
xor ecx, ecx
push 0x206
push ecx
lea edx, [ebp - 0x626]
push edx
mov word [ebp - 0x628], cx
call fcn.0052c850
add esp, 0xc
push 0x104
lea eax, [ebp - 0x628]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
call fcn.00436219
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4204f6
push 0x80004005
call fcn.00401ed0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x850], eax
push str.SetupApi.DLL
lea ecx, [ebp - 0x628]
push ecx
lea edx, [ebp - 0x850]
push str._s_s
push edx
mov byte [ebp - 4], 8
call fcn.00403bf0
add esp, 0x10
lea ecx, [ebp - 0x8a0]
call fcn.00438f15
mov eax, dword [ebp - 0x850]
push 0
push eax
lea ecx, [ebp - 0x8a0]
mov byte [ebp - 4], 9
call fcn.00438fbc
lea ecx, [ebp - 0x8a0]
mov esi, eax
call fcn.00438a9f
lea ecx, [ebp - 0x850]
call fcn.004022d0
test esi, esi
jne 0x420786
xor ecx, ecx
push 0x206
push ecx
lea edx, [ebp - 0x216]
push edx
mov word [ebp - 0x218], cx
call fcn.0052c850
add esp, 0xc
call fcn.0043b907
mov eax, dword [eax + 4]
mov edx, dword [eax + 0x44]
push 0x104
lea ecx, [ebp - 0x218]
push ecx
push 0x7d0
push edx
call dword [sym.imp.USER32.dll_LoadStringW]
lea ecx, [ebp - 0x878]
push ecx
push esi
lea edx, [ebp - 0x834]
push edx
push 0x400
push 0xbe
push esi
lea eax, [ebp - 0x218]
push 0x3100
mov dword [ebp - 0x878], eax
mov dword [ebp - 0x834], esi
call dword [sym.imp.KERNEL32.dll_FormatMessageW]
mov ecx, dword [ebp - 0x848]
lea eax, [ebp - 0x86c]
push eax
call fcn.0040b5f0
mov eax, dword [eax]
mov ecx, dword [ebp - 0x834]
push esi
push eax
push ecx
push esi
call dword [sym.imp.USER32.dll_MessageBoxW]
mov eax, dword [ebp - 0x86c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42062d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x834]
push ecx
call dword [sym.imp.KERNEL32.dll_LocalFree]
lea ecx, [ebp - 0x8a0]
mov byte [ebp - 4], 8
call fcn.00438f47
mov eax, dword [ebp - 0x850]
add eax, 0xfffffff0
mov byte [ebp - 4], 7
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42066f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x854]
add eax, 0xfffffff0
mov byte [ebp - 4], 6
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x420695
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x844]
add eax, 0xfffffff0
mov byte [ebp - 4], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4206bb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x838]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4206e1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x85c]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x420707
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x858]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42072d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x840]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x420753
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x83c]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42077c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x661
jmp 0x420aad
mov esi, dword [ebp - 0x848]
lea ecx, [ebp - 0x848]
push ecx
mov ecx, esi
call fcn.00413df0
mov edi, dword [ebp - 0x848]
push 0
push edi
mov ecx, ebx
mov byte [ebp - 4], 0xa
call fcn.00416c10
lea ecx, [ebp - 0x868]
call fcn.00402450
lea ecx, [ebp - 0x84c]
call fcn.00402450
mov edx, dword [ebp - 0x834]
push str.Data1.cab
push edx
lea eax, [ebp - 0x868]
push str._s_s
push eax
mov byte [ebp - 4], 0xc
call fcn.00403bf0
push str.Data1.cab
push edi
lea ecx, [ebp - 0x84c]
push str._s_s
push ecx
call fcn.00403bf0
mov edx, dword [ebp - 0x84c]
mov eax, dword [ebp - 0x868]
add esp, 0x20
push 0
push edx
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x42082e
mov ecx, dword [ebp - 0x84c]
push ebx
push 0x41d420
push 0
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupIterateCabinetW]
mov edx, dword [ebp - 0x84c]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x420855
test al, 1
je 0x420855
and eax, 0xfffffffe
push eax
mov eax, dword [ebp - 0x84c]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
movzx ecx, word [ebx + 0xe890]
push ecx
call fcn.00406d50
add esp, 4
lea ecx, [ebp - 0x864]
mov dword [ebp - 0x86c], eax
call fcn.00402450
mov edx, dword [ebp - 0x86c]
push str.setuprsc.dll
push edx
push edi
lea eax, [ebp - 0x864]
push 0x5583f0
push eax
mov byte [ebp - 4], 0xd
call fcn.00403bf0
mov ecx, dword [ebp - 0x864]
add esp, 0x14
push ecx
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov edi, eax
mov dword [ebx + 0xddf0], edi
test edi, edi
je 0x420a15
call fcn.0043b907
push 0
mov ecx, esi
mov dword [eax + 0xc], edi
call fcn.004071a0
mov edx, dword [ebp + 0xc]
mov edi, eax
mov eax, dword [ebp - 0x834]
push edx
push eax
mov dword [ebp - 0x86c], edi
call fcn.0052ceda
add esp, 8
cmp edi, eax
jge 0x420acb
xor ecx, ecx
push 0x206
push ecx
lea edx, [ebp - 0x216]
push edx
mov word [ebp - 0x218], cx
call fcn.0052c850
xor eax, eax
push 0x206
push eax
lea ecx, [ebp - 0x41e]
push ecx
mov word [ebp - 0x420], ax
call fcn.0052c850
mov eax, dword [ebx + 0xddf0]
add esp, 0x18
push 0x104
lea edx, [ebp - 0x218]
push edx
push 0x45c
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x420a15
lea ecx, [ebp - 0x834]
push ecx
mov ecx, esi
call fcn.0040b5f0
mov eax, dword [ebp - 0x834]
cmp dword [eax - 0xc], 0
mov byte [ebp - 4], 0xe
jl 0x4209bf
push 0x559990
push eax
call fcn.0052d906
add esp, 8
test eax, eax
je 0x4209bf
mov ecx, dword [ebp - 0x834]
sub eax, ecx
sar eax, 1
cmp eax, 0xffffffff
je 0x4209bf
cmp dword [ecx - 0xc], 0
jl 0x4209bf
push 0x559988
push ecx
call fcn.0052d906
add esp, 8
test eax, eax
je 0x4209bf
sub eax, dword [ebp - 0x834]
sar eax, 1
cmp eax, 0xffffffff
je 0x4209bf
push str.Error
lea ecx, [ebp - 0x834]
call fcn.00402bd0
mov edx, dword [ebp - 0x86c]
push edx
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x420]
push 0x104
push ecx
call fcn.0052d99b
mov edx, dword [ebx + 0xddf0]
mov eax, dword [ebp - 0x834]
push edx
push 0
push eax
lea ecx, [ebp - 0x420]
push ecx
push 0
call fcn.00412340
add esp, 0x24
lea ecx, [ebp - 0x834]
call fcn.004022d0
lea ecx, [ebp - 0x834]
call fcn.00402480
lea ecx, [ebp - 0x864]
call fcn.00402480
lea ecx, [ebp - 0x84c]
call fcn.00402480
lea ecx, [ebp - 0x868]
call fcn.00402480
lea ecx, [ebp - 0x848]
call fcn.00402480
lea ecx, [ebp - 0x8a0]
mov byte [ebp - 4], 8
call fcn.00438f47
lea ecx, [ebp - 0x850]
call fcn.00402480
lea ecx, [ebp - 0x854]
call fcn.00402480
lea ecx, [ebp - 0x844]
call fcn.00402480
lea ecx, [ebp - 0x838]
call fcn.00402480
lea ecx, [ebp - 0x85c]
call fcn.00402480
lea ecx, [ebp - 0x858]
call fcn.00402480
lea ecx, [ebp - 0x840]
call fcn.00402480
lea ecx, [ebp - 0x83c]
call fcn.00402480
mov eax, 0x643
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0052c2ec
mov esp, ebp
pop ebp
ret 0xc
cmp dword [ebx + 4], 0
je 0x420bb6
cmp word [ebx + 0xe3fa], 0
lea edi, [ebx + 0xe3fa]
je 0x420c9a
lea ecx, [ebp - 0x834]
call fcn.00402450
xor edx, edx
push 0x206
push edx
lea eax, [ebp - 0x216]
push eax
mov byte [ebp - 4], 0xf
mov word [ebp - 0x218], dx
call fcn.0052c850
push edi
lea ecx, [ebp - 0x218]
push 0x104
push ecx
call fcn.0052cd4a
lea edx, [ebp - 0x218]
push 0x104
push edx
call fcn.0052ceda
lea eax, [ebp + eax*2 - 0x21a]
add esp, 0x20
cmp word [eax], 0x5c
jne 0x420b4b
xor ecx, ecx
mov word [eax], cx
lea edx, [ebp - 0x878]
push edx
mov ecx, esi
call fcn.0040ba90
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x218]
push ecx
lea edx, [ebp - 0x834]
push str._s_s
push edx
mov byte [ebp - 4], 0x10
call fcn.00403bf0
add esp, 0x10
lea ecx, [ebp - 0x878]
mov byte [ebp - 4], 0xf
call fcn.00402480
mov eax, dword [ebp - 0x834]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x874], esp
mov edi, esp
push eax
call fcn.004023a0
add eax, 0x10
add esp, 4
mov ecx, esi
mov dword [edi], eax
call fcn.00414ea0
jmp 0x420c8b
push 0x556794
lea ecx, [ebp - 0x834]
call fcn.00404fe0
lea eax, [ebp - 0x878]
push eax
lea ecx, [ebp - 0x834]
push ecx
mov ecx, esi
mov byte [ebp - 4], 0x11
mov dword [ebp - 0x878], 0
call fcn.0040f5b0
test eax, eax
je 0x420c8b
lea ecx, [ebp - 0x860]
call fcn.00402450
cmp dword [ebp - 0x878], 0
mov byte [ebp - 4], 0x12
jne 0x420c80
mov edx, dword [ebp - 0x834]
cmp dword [edx - 0xc], 0
je 0x420c80
lea eax, [ebp - 0x874]
push eax
mov ecx, esi
call fcn.0040ba90
mov ecx, dword [eax]
push ecx
lea ecx, [ebp - 0x834]
mov byte [ebp - 4], 0x13
call fcn.004047e0
push eax
lea edx, [ebp - 0x860]
push str._s_s
push edx
call fcn.00403bf0
add esp, 0x10
lea ecx, [ebp - 0x874]
mov byte [ebp - 4], 0x12
call fcn.00402480
mov eax, dword [ebp - 0x860]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x874], esp
mov edi, esp
push eax
call fcn.004023a0
add eax, 0x10
add esp, 4
mov ecx, esi
mov dword [edi], eax
call fcn.00414ea0
lea ecx, [ebp - 0x860]
call fcn.00402480
lea ecx, [ebp - 0x834]
mov byte [ebp - 4], 0xd
call fcn.00402480
lea eax, [ebp - 0x874]
push eax
mov ecx, esi
call fcn.00409a70
mov ecx, dword [eax]
mov edi, dword [ebp - 0x86c]
cmp edi, dword [ecx - 0xc]
lea ecx, [ebp - 0x874]
setl byte [ebp - 0x879]
call fcn.00402480
cmp byte [ebp - 0x879], 0
je 0x420d8f
xor edx, edx
push 0x206
push edx
lea eax, [ebp - 0x41e]
push eax
mov word [ebp - 0x420], dx
call fcn.0052c850
xor ecx, ecx
push 0x206
push ecx
lea edx, [ebp - 0x216]
push edx
mov word [ebp - 0x218], cx
call fcn.0052c850
mov ecx, dword [ebx + 0xddf0]
add esp, 0x18
push 0x104
lea eax, [ebp - 0x420]
push eax
push 0x45c
push ecx
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x420a15
lea edx, [ebp - 0x860]
push edx
mov ecx, esi
call fcn.0040b5f0
push edi
lea eax, [ebp - 0x420]
push eax
lea ecx, [ebp - 0x218]
push 0x104
push ecx
call fcn.0052d99b
mov edx, dword [ebx + 0xddf0]
mov eax, dword [ebp - 0x860]
push edx
push 0
push eax
lea ecx, [ebp - 0x218]
push ecx
push 0
call fcn.00412340
add esp, 0x24
lea ecx, [ebp - 0x860]
call fcn.004022d0
lea ecx, [ebp - 0x860]
jmp 0x420a10
lea edx, [ebp - 0x870]
push edx
mov ecx, esi
call fcn.0040b5f0
cmp dword [ebx + 0x14c], 0
mov byte [ebp - 4], 0x14
jne 0x420e82
mov eax, dword [ebp - 0x870]
push 1
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x874], esp
mov esi, esp
push eax
call fcn.004023a0
add esp, 4
add eax, 0x10
push 0
mov dword [esi], eax
call fcn.00416b60
add esp, 0xc
lea ecx, [ebp - 0x870]
call fcn.00402480
lea ecx, [ebp - 0x864]
call fcn.00402480
lea ecx, [ebp - 0x84c]
call fcn.00402480
lea ecx, [ebp - 0x868]
call fcn.00402480
lea ecx, [ebp - 0x848]
call fcn.00402480
lea ecx, [ebp - 0x8a0]
mov byte [ebp - 4], 8
call fcn.00438f47
lea ecx, [ebp - 0x850]
call fcn.00402480
lea ecx, [ebp - 0x854]
call fcn.00402480
lea ecx, [ebp - 0x844]
call fcn.00402480
lea ecx, [ebp - 0x838]
call fcn.00402480
lea ecx, [ebp - 0x85c]
call fcn.00402480
lea ecx, [ebp - 0x858]
call fcn.00402480
lea ecx, [ebp - 0x840]
call fcn.00402480
lea ecx, [ebp - 0x83c]
call fcn.00402480
mov eax, 0x661
jmp 0x420aad
mov ecx, ebx
call fcn.00417f80
test eax, eax
je 0x420dda
cmp dword [ebx + 0x20], 2
jne 0x420f7e
mov ecx, ebx
call fcn.00412790
test eax, eax
jne 0x420f7e
mov eax, dword [ebp - 0x870]
push 3
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x874], esp
mov esi, esp
push eax
call fcn.004023a0
add esp, 4
add eax, 0x10
push 0
mov dword [esi], eax
call fcn.00416b60
add esp, 0xc
lea ecx, [ebp - 0x870]
call fcn.00402480
lea ecx, [ebp - 0x864]
call fcn.00402480
lea ecx, [ebp - 0x84c]
call fcn.00402480
lea ecx, [ebp - 0x868]
call fcn.00402480
lea ecx, [ebp - 0x848]
call fcn.00402480
lea ecx, [ebp - 0x8a0]
mov byte [ebp - 4], 8
call fcn.00438f47
lea ecx, [ebp - 0x850]
call fcn.00402480
lea ecx, [ebp - 0x854]
call fcn.00402480
lea ecx, [ebp - 0x844]
call fcn.00402480
lea ecx, [ebp - 0x838]
call fcn.00402480
lea ecx, [ebp - 0x85c]
call fcn.00402480
lea ecx, [ebp - 0x858]
call fcn.00402480
lea ecx, [ebp - 0x840]
call fcn.00402480
lea ecx, [ebp - 0x83c]
call fcn.00402480
mov eax, 5
jmp 0x420aad
cmp dword [ebx + 8], 0
jne 0x420fd2
lea eax, [ebp - 0x860]
push eax
mov ecx, esi
call fcn.0040e480
mov ecx, dword [ebp - 0x860]
push ecx
push 0
push 0
mov byte [ebp - 4], 0x15
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [ebx + 0xddf4], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x42102e
cmp dword [ebx + 0xddf4], 0
je 0x42102e
lea ecx, [ebp - 0x860]
mov byte [ebp - 4], 0x14
call fcn.00402480
lea edx, [ebp - 0x880]
push edx
mov ecx, esi
call fcn.0040e4b0
mov eax, dword [ebp - 0x880]
push eax
push 0
push 0x1f0001
mov byte [ebp - 4], 0x16
call dword [sym.imp.KERNEL32.dll_OpenMutexW]
mov edi, eax
test edi, edi
je 0x42110d
push 2
push ecx
mov ecx, esp
mov dword [ebp - 0x874], esp
push ecx
mov ecx, esi
call fcn.0040b5f0
push 0
call fcn.00416b60
add esp, 0xc
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x880]
jmp 0x421060
mov eax, dword [ebp - 0x870]
push 2
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x874], esp
mov esi, esp
push eax
call fcn.004023a0
add esp, 4
add eax, 0x10
push 0
mov dword [esi], eax
call fcn.00416b60
add esp, 0xc
lea ecx, [ebp - 0x860]
call fcn.00402480
lea ecx, [ebp - 0x870]
call fcn.00402480
lea ecx, [ebp - 0x864]
call fcn.00402480
lea ecx, [ebp - 0x84c]
call fcn.00402480
lea ecx, [ebp - 0x868]
call fcn.00402480
lea ecx, [ebp - 0x848]
call fcn.00402480
lea ecx, [ebp - 0x8a0]
mov byte [ebp - 4], 8
call fcn.00438f47
lea ecx, [ebp - 0x850]
call fcn.00402480
lea ecx, [ebp - 0x854]
call fcn.00402480
lea ecx, [ebp - 0x844]
call fcn.00402480
lea ecx, [ebp - 0x838]
call fcn.00402480
lea ecx, [ebp - 0x85c]
call fcn.00402480
lea ecx, [ebp - 0x858]
call fcn.00402480
lea ecx, [ebp - 0x840]
call fcn.00402480
lea ecx, [ebp - 0x83c]
call fcn.00402480
mov eax, 0x652
jmp 0x420aad
cmp dword [ebx + 8], 0
jne 0x421241
mov ecx, esi
call fcn.004113a0
test eax, eax
jne 0x421241
lea edx, [ebp - 0x86c]
push edx
mov ecx, esi
call fcn.0040f840
mov eax, dword [ebp - 0x86c]
push 0x13
push 0
push ecx
add eax, 0xfffffff0
mov bl, 0x17
mov dword [ebp - 0x874], esp
mov edi, esp
push eax
mov byte [ebp - 4], bl
call fcn.004023a0
add eax, 0x10
mov dword [edi], eax
mov eax, esp
mov dword [ebp - 0x878], esp
push eax
mov ecx, esi
mov byte [ebp - 4], 0x18
call fcn.0040b5f0
push 0
mov byte [ebp - 4], bl
call fcn.00414f10
add esp, 0x14
push 0
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x86c]
call fcn.00402480
lea ecx, [ebp - 0x880]
call fcn.00402480
lea ecx, [ebp - 0x870]
call fcn.00402480
lea ecx, [ebp - 0x864]
call fcn.00402480
lea ecx, [ebp - 0x84c]
call fcn.00402480
lea ecx, [ebp - 0x868]
call fcn.00402480
lea ecx, [ebp - 0x848]
call fcn.00402480
lea ecx, [ebp - 0x8a0]
mov byte [ebp - 4], 8
call fcn.00438f47
lea ecx, [ebp - 0x850]
call fcn.00402480
lea ecx, [ebp - 0x854]
call fcn.00402480
lea ecx, [ebp - 0x844]
call fcn.00402480
lea ecx, [ebp - 0x838]
call fcn.00402480
lea ecx, [ebp - 0x85c]
call fcn.00402480
lea ecx, [ebp - 0x858]
call fcn.00402480
lea ecx, [ebp - 0x840]
call fcn.00402480
lea ecx, [ebp - 0x83c]
call fcn.00402480
mov eax, 0x82
jmp 0x420aad
mov ecx, ebx
call fcn.00418150
test eax, eax
jne 0x421269
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x880]
call fcn.00402480
lea ecx, [ebp - 0x870]
jmp 0x420a10
lea ecx, [ebp - 0x880]
call fcn.00402480
lea ecx, [ebp - 0x870]
call fcn.00402480
lea ecx, [ebp - 0x864]
call fcn.00402480
lea ecx, [ebp - 0x84c]
call fcn.00402480
lea ecx, [ebp - 0x868]
call fcn.00402480
lea ecx, [ebp - 0x848]
call fcn.00402480
lea ecx, [ebp - 0x8a0]
mov byte [ebp - 4], 8
call fcn.00438f47
lea ecx, [ebp - 0x850]
call fcn.00402480
lea ecx, [ebp - 0x854]
call fcn.00402480
lea ecx, [ebp - 0x844]
call fcn.00402480
lea ecx, [ebp - 0x838]
call fcn.00402480
lea ecx, [ebp - 0x85c]
call fcn.00402480
lea ecx, [ebp - 0x858]
call fcn.00402480
lea ecx, [ebp - 0x840]
call fcn.00402480
lea ecx, [ebp - 0x83c]
call fcn.00402480
xor eax, eax
jmp 0x420aad