Function at 0x1002a3f0
Capabilities:
Check if file exists
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x101053c8
mov eax, dword fs:[0]
push eax
sub esp, 0x2b4
mov eax, dword [0x1014b520]
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 + 8]
push 0
push 0
push 1
push 0
push str.start
mov dword [ebp - 0x228], eax
call fcn.10008d90
mov ecx, eax
call fcn.10040cb0
call fcn.10013e20
mov ecx, eax
call fcn.10002200
test eax, eax
jne 0x1002a4cb
call fcn.1003fde0
test eax, eax
je 0x1002a4ad
call fcn.1003fde0
mov ecx, eax
mov edx, dword [eax]
mov eax, dword [edx + 4]
call eax
test al, al
je 0x1002a4ad
call fcn.1003fde0
lea ecx, [ebp - 0xa8]
mov edi, eax
call fcn.100053e0
mov esi, eax
push str.init_product_info_failed
push esi
mov dword [ebp - 4], 0
call fcn.10003110
mov edx, dword [edi]
add esp, 8
mov ecx, edi
push esi
call dword [edx + 0x14]
lea ecx, [ebp - 0xa8]
mov dword [ebp - 4], 0xffffffff
call fcn.100083c0
push 0
push 0
push 1
push 0
push str.init_failed
call fcn.10008d90
mov ecx, eax
call fcn.10040cb0
jmp 0x1002a924
lea eax, [ebp - 0x21c]
push eax
lea ecx, [ebp - 0x21d]
call fcn.1002a010
mov esi, eax
lea eax, [ebp - 0x224]
mov dword [ebp - 4], 1
push eax
call fcn.10013e20
mov ecx, eax
call fcn.10002180
mov ecx, dword [esi]
mov byte [ebp - 4], 2
test ecx, ecx
je 0x1002a943
push ecx
push dword [eax]
call fcn.100da91e
mov edx, dword [ebp - 0x224]
add esp, 8
test eax, eax
mov byte [ebp - 4], 1
sete byte [ebp - 0x21d]
or esi, 0xffffffff
add edx, 0xfffffff0
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1002a53f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x21c]
mov eax, esi
mov dword [ebp - 4], 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1002a563
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x21d], 0
je 0x1002a5b4
call fcn.1003fde0
test eax, eax
je 0x1002a924
call fcn.1003fde0
mov ecx, eax
mov edx, dword [eax]
mov eax, dword [edx + 4]
call eax
test al, al
je 0x1002a924
call fcn.1003fde0
lea ecx, [ebp - 0xa8]
mov edi, eax
call fcn.100053e0
mov esi, eax
mov dword [ebp - 4], 3
push str.init_info_failed
jmp 0x1002a908
lea eax, [ebp - 0x21c]
push eax
lea ecx, [ebp - 0x21d]
call fcn.1002a0a0
push dword [eax]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov edx, dword [ebp - 0x21c]
mov dword [0x1014fe24], eax
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], esi
dec esi
test esi, esi
jg 0x1002a5f2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [0x1014fe24], 0
jne 0x1002a674
call fcn.1003fde0
test eax, eax
je 0x1002a66a
call fcn.1003fde0
mov ecx, eax
mov edx, dword [eax]
mov eax, dword [edx + 4]
call eax
test al, al
je 0x1002a66a
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
call fcn.1003fde0
lea ecx, [ebp - 0xa8]
mov dword [ebp - 0x21c], eax
call fcn.100053e0
mov esi, eax
push str.CreateMutex_error:
push esi
mov dword [ebp - 4], 4
call fcn.10006900
add esp, 8
mov ecx, esi
push edi
call fcn.1001ff80
mov ecx, dword [ebp - 0x21c]
push esi
mov eax, dword [ecx]
call dword [eax + 0x14]
lea ecx, [ebp - 0xa8]
call fcn.100083c0
mov eax, 1
jmp 0x1002a926
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x1002a708
call fcn.1003fde0
test eax, eax
je 0x1002a6dc
call fcn.1003fde0
mov ecx, eax
mov edx, dword [eax]
mov eax, dword [edx + 4]
call eax
test al, al
je 0x1002a6dc
call fcn.1003fde0
lea ecx, [ebp - 0xa8]
mov edi, eax
call fcn.100053e0
mov esi, eax
push str.CreateMutex_already_exists.
push esi
mov dword [ebp - 4], 5
call fcn.10006900
mov edx, dword [edi]
add esp, 8
mov ecx, edi
push esi
call dword [edx + 0x14]
lea ecx, [ebp - 0xa8]
call fcn.100083c0
push dword [0x1014fe24]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push dword [0x1014fe24]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [0x1014fe24], 0
mov eax, 1
jmp 0x1002a926
mov edi, dword [0x1014fdac]
test edi, edi
jne 0x1002a76f
push 0x1014a070
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [0x1014fdac], edi
jne 0x1002a75e
push 0x10
call fcn.100bb0a7
add esp, 4
mov dword [ebp - 0x21c], eax
test eax, eax
je 0x1002a74c
xorps xmm0, xmm0
movups xmmword [eax], xmm0
mov dword [eax], edi
mov dword [eax + 4], edi
mov dword [eax + 8], edi
mov dword [eax + 0xc], edi
jmp 0x1002a74e
xor eax, eax
xor edx, edx
lea ecx, [ebp - 0x21c]
lock or dword [ecx], edx
mov dword [0x1014fdac], eax
push 0x1014a070
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov edi, dword [0x1014fdac]
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.100d6e30
add esp, 0xc
lea eax, [ebp - 0x218]
push 0x104
push eax
push 0x10000000
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov esi, dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
lea eax, [ebp - 0x218]
push eax
call esi
lea eax, [ebp - 0x218]
push eax
call esi
push str.net.dll
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x1002a8cd
cmp dword [edi], 0
jne 0x1002a81c
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [edi], eax
test eax, eax
je 0x1002a835
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.HttpInit
push eax
call esi
push str.HttpUninit
push dword [edi]
mov dword [edi + 4], eax
call esi
mov dword [edi + 8], eax
mov eax, dword [edi + 4]
test eax, eax
je 0x1002a81c
call eax
mov dword [edi + 0xc], eax
cmp dword [edi + 8], 0
je 0x1002a835
cmp dword [edi + 4], 0
je 0x1002a835
cmp dword [edi + 0xc], 0
je 0x1002a835
mov eax, 1
jmp 0x1002a837
xor eax, eax
test eax, eax
je 0x1002a8cd
mov ecx, dword [ebp - 0x228]
add ecx, 8
call fcn.10025440
test al, al
jne 0x1002a8ad
call fcn.1003fde0
test eax, eax
je 0x1002a924
call fcn.1003fde0
mov ecx, eax
mov edx, dword [eax]
mov eax, dword [edx + 4]
call eax
test al, al
je 0x1002a924
call fcn.1003fde0
lea ecx, [ebp - 0x2c0]
mov edi, eax
call fcn.100053e0
mov esi, eax
push str.alice_main_failed
push esi
mov dword [ebp - 4], 7
call fcn.10003110
mov edx, dword [edi]
add esp, 8
mov ecx, edi
push esi
call dword [edx + 0x14]
lea ecx, [ebp - 0x2c0]
jmp 0x1002a91f
push 0
push 0
push 1
push 0
push str.work
call fcn.10008d90
mov ecx, eax
call fcn.10040cb0
mov eax, 1
jmp 0x1002a926
call fcn.1003fde0
test eax, eax
je 0x1002a924
call fcn.1003fde0
mov ecx, eax
mov edx, dword [eax]
mov eax, dword [edx + 4]
call eax
test al, al
je 0x1002a924
call fcn.1003fde0
lea ecx, [ebp - 0xa8]
mov edi, eax
call fcn.100053e0
mov esi, eax
mov dword [ebp - 4], 6
push str.init_net_failed
push esi
call fcn.10003110
mov edx, dword [edi]
add esp, 8
mov ecx, edi
push esi
call dword [edx + 0x14]
lea ecx, [ebp - 0xa8]
call fcn.100083c0
xor eax, eax
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.100bb073
mov esp, ebp
pop ebp
ret 4
push 0x80004005
call fcn.10001900
int3