Function at 0x401000
Capabilities:
Check mutex and terminate process on windows
Check mutex on windows
Create directory
Print debug messages
Set current directory
Terminate process

Disassembly:
sub esp, 0xfd8
push ebx
push ebp
push esi
push edi
push str.ChromeMutex
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov esi, eax
mov eax, dword [esp + 0xff4]
push str._ami
push eax
call dword [sym.imp.MSVCRT.dll_strstr]
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
add esp, 8
test eax, eax
jne 0x40116f
mov al, byte [0x40b30c]
test al, al
jne 0x40116f
test esi, esi
je 0x40116f
call ebp
cmp eax, 0xb7
jne 0x40116f
push 0x409284
push str.dataRunning.scr
call dword [sym.imp.MSVCRT.dll_fopen]
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x4016a2
or ecx, 0xffffffff
xor eax, eax
mov edi, str.Error
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
lea edx, [esp + 0x50]
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
xor eax, eax
mov edi, str.Chrome_already_running
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
lea edx, [esp + 0xd0]
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [sym.imp.MSVCRT.dll_fgets]
push ebx
lea ecx, [esp + 0x54]
push 0x80
push ecx
call esi
push ebx
lea edx, [esp + 0xe0]
push 0x100
push edx
call esi
mov al, byte [esp + 0x68]
add esp, 0x18
test al, al
je 0x401116
lea eax, [esp + 0x50]
mov cl, byte [eax]
cmp cl, 0xa
je 0x40110b
cmp cl, 0xd
jne 0x40110e
mov byte [eax], 0
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x4010ff
mov al, byte [esp + 0xd0]
test al, al
je 0x40113f
lea eax, [esp + 0xd0]
mov cl, byte [eax]
cmp cl, 0xa
je 0x401134
cmp cl, 0xd
jne 0x401137
mov byte [eax], 0
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x401128
push ebx
call dword [sym.imp.MSVCRT.dll_fclose]
add esp, 4
push 0x10
lea eax, [esp + 0x54]
push eax
lea ecx, [esp + 0xd8]
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xfd8
ret 0x10
mov ebx, dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x400
lea edx, [esp + 0xbec]
push edx
push 0
call ebx
lea eax, [esp + 0x5e8]
push eax
lea ecx, [esp + 0x6ec]
push ecx
lea edx, [esp + 0x4f0]
push edx
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0xbf8]
push ecx
call dword [sym.imp.MSVCRT.dll__splitpath]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x14
lea edi, [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
lea edx, [esp + 0x7e8]
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
xor eax, eax
lea edi, [esp + 0x4e8]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
lea edx, [esp + 0x7e8]
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
shr ecx, 2
dec edi
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x7e8]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea ecx, [esp + 0xd0]
push ecx
xor esi, esi
push str.Params
mov dword [esp + 0xd8], esi
call dword [sym.imp.MSVCRT.dll__findfirst]
add esp, 8
cmp eax, 0xffffffff
je 0x401297
test byte [esp + 0xd0], 0x10
je 0x401297
push eax
call dword [sym.imp.MSVCRT.dll__findclose]
lea edx, [esp + 0x1c]
push edx
mov eax, str.Java
push str.JDK_bincompile.bat
push esi
mov dword [esp + 0x28], str.JDK_bincompile.bat
mov dword [esp + 0x2c], str._classpath
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], 0x409030
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], str.Params.java
mov dword [esp + 0x40], esi
call dword [sym.imp.MSVCRT.dll__spawnv]
add esp, 0x10
push 0x40924c
push str.logs_DXdiags.txt
call dword [sym.imp.MSVCRT.dll_fopen]
add esp, 8
cmp eax, esi
jne 0x401347
push str.logs_
call dword [sym.imp.MSVCRT.dll__mkdir]
mov edi, dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
add esp, 4
push str.Trying_to_run_DXdiag.exe_...__n
call edi
push 0
push str.logs_DXDiags.txt
push 0x4091f8
push str.dxdiag.exe
push 1
mov esi, str.unknown
call dword [sym.imp.MSVCRT.dll__spawnlp]
add esp, 0x14
cmp eax, 0xffffffff
jne 0x40133e
call ebp
add eax, 0xfffffffe
cmp eax, 0x14
ja case.0x401305.7
xor ecx, ecx
mov cl, byte [eax + 0x4016cc]
jmp dword [ecx*4 + 0x4016b4]
mov esi, str...._ERROR:_Argument_list_exceeds_1024_bytes_n
push esi
call edi
jmp 0x401351
mov esi, str...._ERROR:_mode_argument_is_invalid_n
push esi
call edi
jmp 0x401351
mov esi, str...._ERROR:_File_or_path_is_not_found_n
push esi
call edi
jmp 0x401351
mov esi, str...._ERROR:_Specified_file_is_not_executable_or_has_invalid_executable_file_format_n
push esi
call edi
jmp 0x401351
mov esi, str...._ERROR:_Not_enough_memory_is_available_to_execute_new_process_n
push esi
call edi
jmp 0x401351
push str...._OK_n
call edi
jmp 0x401351
push eax
call dword [sym.imp.MSVCRT.dll_fclose]
add esp, 4
mov edx, dword [esp + 0xfec]
push 0x100
push 0x40ae08
push edx
mov ebp, str.game.ini
call ebx
push 0x40ae08
mov dword [0x40b208], 1
mov dword [0x40b20c], 0x40ae08
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edx, dword [esp + 0xff4]
mov cl, byte [edx]
add eax, 0x40ae09
test cl, cl
je 0x4013ee
mov cl, byte [edx]
cmp cl, 0x20
je 0x4013a7
cmp cl, 9
jne 0x4013aa
inc edx
jmp 0x40139b
cmp byte [edx], 0
je 0x4013ee
mov ecx, dword [0x40b208]
mov dword [ecx*4 + 0x40b20c], eax
mov cl, byte [edx]
cmp cl, 0x20
je 0x4013d8
cmp cl, 9
je 0x4013d8
test cl, cl
je 0x4013d8
mov byte [eax], cl
mov cl, byte [edx + 1]
inc eax
inc edx
cmp cl, 0x20
jne 0x4013c3
mov byte [eax], 0
mov esi, dword [0x40b208]
inc eax
inc esi
mov dword [0x40b208], esi
cmp byte [edx], 0
jne 0x40139b
mov eax, dword [0x40b208]
xor edi, edi
test eax, eax
jle 0x401429
mov ebx, dword [sym.imp.MSVCRT.dll_strncmp]
mov esi, 0x40b20c
mov edx, dword [esi]
push 4
push str.ini
push edx
call ebx
add esp, 0xc
test eax, eax
jne 0x40141c
mov ebp, dword [esi]
add ebp, 4
mov eax, dword [0x40b208]
inc edi
add esi, 4
cmp edi, eax
jl 0x401404
or ecx, 0xffffffff
xor eax, eax
mov edi, 0x40b310
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
lea edx, [esp + 0x1e8]
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
xor eax, eax
mov edi, str.TestGame
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov ebx, ecx
or ecx, 0xffffffff
mov esi, edi
lea edx, [esp + 0x1e8]
mov edi, edx
repne scasb al, byte es:[edi]
dec edi
mov ecx, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
mov edi, 0x4090a0
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
mov esi, edi
lea edx, [esp + 0x3e8]
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
xor eax, eax
mov edi, str.code
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
shr ecx, 2
lea edx, [esp + 0x2e8]
mov esi, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
push ebp
rep movsb byte es:[edi], byte [esi]
call fcn.004016f0
add esp, 4
test eax, eax
mov dword [esp + 0x14], eax
je 0x4015ce
mov ebp, eax
mov esi, dword [sym.imp.MSVCRT.dll__stricmp]
lea ebx, [ebp + 4]
push str.JavaGameClassName
push ebx
call esi
add esp, 8
test eax, eax
jne 0x401530
mov eax, dword [ebp + 0x24]
cmp dword [eax + 8], 2
jne 0x401510
mov edx, dword [eax + 0xc]
jmp 0x401512
xor edx, edx
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
push edx
lea ecx, [esp + 0x1f0]
push ecx
call dword [sym.imp.MSVCRT.dll_strncpy]
add esp, 0xc
push str.JavaClasses
push ebx
call esi
add esp, 8
test eax, eax
jne 0x40157b
mov eax, dword [ebp + 0x24]
cmp dword [eax + 8], 2
jne 0x40154d
mov eax, dword [eax + 0xc]
jmp 0x40154f
xor eax, eax
or ecx, 0xffffffff
mov edi, eax
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
shr ecx, 2
lea edx, [esp + 0x3e8]
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [sym.imp.MSVCRT.dll__stricmp]
push str.JavaClassesPacked
push ebx
call esi
add esp, 8
test eax, eax
jne 0x4015b8
mov eax, dword [ebp + 0x24]
cmp dword [eax + 8], 2
jne 0x401598
mov edx, dword [eax + 0xc]
jmp 0x40159a
xor edx, edx
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
push edx
lea ecx, [esp + 0x2f0]
push ecx
call dword [sym.imp.MSVCRT.dll_strncpy]
add esp, 0xc
mov ebp, dword [ebp + 0x28]
test ebp, ebp
jne 0x4014ea
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx]
push 1
call dword [edx + 4]
lea eax, [esp + 0x1e8]
push eax
lea ecx, [esp + 0x2ec]
push ecx
lea edx, [esp + 0x3f0]
push edx
call dword [sym.imp.ChromeEngine2.dll_InitializeGameScript]
mov eax, dword [esp + 0xff8]
push 1
push eax
lea ecx, [esp + 0x1fc]
push ecx
call dword [sym.imp.ChromeEngine2.dll_CreateGame]
mov ecx, dword [esp + 0x1010]
mov esi, eax
mov edx, dword [esi]
xor eax, eax
mov al, byte [0x40b30c]
add esp, 0x18
push eax
mov eax, dword [esp + 0xff8]
push ecx
push eax
mov ecx, esi
call dword [edx]
test eax, eax
jne 0x401670
mov edi, dword [sym.imp.USER32.dll_PeekMessageA]
mov ebx, dword [sym.imp.USER32.dll_TranslateMessage]
mov ebp, dword [sym.imp.USER32.dll_DispatchMessageA]
push 1
push 0
push 0
push 0
lea ecx, [esp + 0x44]
push ecx
call edi
test eax, eax
je 0x401667
cmp dword [esp + 0x38], 0x12
je 0x401678
lea edx, [esp + 0x34]
push edx
call ebx
lea eax, [esp + 0x34]
push eax
call ebp
jmp 0x40163d
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 8]
jmp 0x40163d
mov dword [esp + 0x38], 0x12
test esi, esi
je 0x401685
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax + 0xc]
push 0
push 0
push 0
call dword [sym.imp.WINMM.dll_PlaySoundA]
call dword [sym.imp.ChromeEngine2.dll_UninitializeGameScript]
mov ecx, dword [esp + 0x3c]
push ecx
call dword [sym.imp.KERNEL32.dll_ExitProcess]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xfd8
ret 0x10