Function at 0x10002660
Capabilities:
Check if file exists
Create thread
Get file attributes
Link many functions at runtime
Set environment variable

Disassembly:
push ebp
mov ebp, esp
cmp dword [ebp + 0xc], 1
jne 0x10002a1d
push ebx
push esi
mov esi, dword [sym.imp.KERNEL32.dll_LocalAlloc]
push edi
push 0x1000
push 0
call esi
push 0x1000
push 0
mov ebx, eax
call esi
push 0x1000
mov edi, eax
push edi
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea esi, [edi + eax]
cmp esi, edi
jbe 0x100026ae
cmp byte [esi], 0x5c
je 0x100026ad
dec esi
cmp esi, edi
ja 0x100026a1
jmp 0x100026ae
inc esi
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
push eax
push esi
push str._s:_d_
push ebx
call dword [sym.imp.USER32.dll_wsprintfA]
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
add esp, 0x10
mov dword [section..data], ebx
push str.PangyaUS.ini
call esi
cmp eax, 0xffffffff
je 0x100026e1
xor eax, eax
jmp 0x10002703
push str.PangyaJP.ini
call esi
cmp eax, 0xffffffff
je 0x100026f4
mov eax, 1
jmp 0x10002703
push str.PangyaTH.ini
call esi
inc eax
neg eax
sbb eax, eax
and eax, 2
sub eax, 0
je 0x10002741
sub eax, 1
je 0x1000273a
mov edi, dword [sym.imp.USER32.dll_MessageBoxA]
sub eax, 1
jne 0x10002728
push 0
push str.rugburn
push str.No_GameGuard_patch_is_available_for_PangyaTH.
push 0
call edi
push 0
push str.rugburn
push str.It_looks_like_no_patch_exists_for_this_version_of_PangYa._nThe_game_will_likely_exit_a_couple_minutes_after_detecting_GameGuard_is_not_present.
push 0
call edi
jmp 0x10002757
mov eax, 0x10002050
jmp 0x10002746
mov eax, 0x10001d50
push 0
push 0
push 0
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
cmp dword [0x10006008], 0
jne 0x10002a26
push str.ijl15_real
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
je 0x10002a30
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x10004510
push eax
mov dword [0x10006008], eax
call edi
test eax, eax
je 0x10002a46
push 0x10004524
push dword [0x10006008]
mov dword [0x1000601c], eax
call edi
test eax, eax
je 0x10002a5c
push 0x1000452c
push dword [0x10006008]
mov dword [0x10006018], eax
call edi
test eax, eax
je 0x10002a72
push 0x10004534
push dword [0x10006008]
mov dword [0x10006014], eax
call edi
test eax, eax
je 0x10002a88
push 0x1000453c
push dword [0x10006008]
mov dword [0x10006010], eax
call edi
test eax, eax
je 0x10002a9e
push 0x10004548
push dword [0x10006008]
mov dword [0x1000600c], eax
call edi
test eax, eax
je 0x10002ab4
push str.rugburn.json
mov dword [0x10006004], eax
call esi
mov ebx, dword [sym.imp.SHLWAPI.dll_StrDupA]
cmp eax, 0xffffffff
jne 0x10002855
push str.No_rugburn.json_config_file_found._An_example_configuration_will_be_saved.
call fcn.10001180
push 0xd5
mov edx, str._r_n___UrlRewrites_:__r_n_____http:___a_zA_Z0_9:.___.__:__http:__localhost:8080__0__r_n____r_n___PortRewrites_:___r_n_____r_n_______FromPort_:_10103__r_n_______ToPort_:_10101__r_n_______ToAddr_:__localhost__r_n_____r_n____r_n_r_n
mov ecx, str.rugburn.json
call fcn.100010b0
add esp, 8
push str._r_n___UrlRewrites_:__r_n_____http:___a_zA_Z0_9:.___.__:__http:__localhost:8080__0__r_n____r_n___PortRewrites_:___r_n_____r_n_______FromPort_:_10103__r_n_______ToPort_:_10101__r_n_______ToAddr_:__localhost__r_n_____r_n____r_n_r_n
call ebx
jmp 0x1000285f
mov ecx, str.rugburn.json
call section..text
push 0x288
push 0
push 0x10006060
mov dword [ebp + 0xc], eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea ecx, [ebp + 0xc]
mov edx, 0x10001470
call fcn.10001b80
push str.PangyaUS.ini
call esi
cmp eax, 0xffffffff
je 0x10002893
xor eax, eax
jmp 0x100028b5
push str.PangyaJP.ini
call esi
cmp eax, 0xffffffff
je 0x100028a6
mov eax, 1
jmp 0x100028b5
push str.PangyaTH.ini
call esi
inc eax
neg eax
sbb eax, eax
and eax, 2
sub eax, 0
je 0x100028cf
sub eax, 1
je 0x100028c8
sub eax, 1
je 0x100028c8
xor esi, esi
jmp 0x100028d8
push str.E69B65A2_7A7E_4977_85E5_B19516D885CB
jmp 0x100028d4
push str.2D0FA24B_336B_4e99_9D30_3116331EFDA0
call ebx
mov esi, eax
push esi
push str.PANGYA_ARG
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableA]
test eax, eax
je 0x10002aca
push esi
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov esi, dword [sym.imp.KERNEL32.dll_CreateMutexA]
push 0
push 0
push 0
call esi
push 0
push 0
push 0
mov dword [0x10006044], eax
call esi
mov esi, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push str.kernel32
mov dword [0x10006048], eax
call esi
test eax, eax
je 0x10002adb
mov ecx, dword [sym.imp.KERNEL32.dll_CreateProcessA]
mov edx, 0x100033e0
call fcn.10002b90
mov ecx, dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
mov edx, 0x10003470
call fcn.10002b90
mov ecx, dword [sym.imp.USER32.dll_CreateWindowExA]
mov edx, 0x100034d0
mov dword [0x10006020], eax
call fcn.10002b90
push str.wininet
mov dword [0x10006024], eax
call esi
test eax, eax
je 0x10002af1
push str.InternetOpenUrlA
push eax
mov dword [0x10006028], eax
call edi
test eax, eax
je 0x10002b07
mov edx, 0x100034e0
mov ecx, eax
call fcn.10002b90
push str.ws2_32
mov dword [0x1000602c], eax
call esi
test eax, eax
je 0x10002b1d
push str.connect
push eax
mov dword [0x1000603c], eax
call edi
test eax, eax
je 0x10002b33
mov edx, 0x10003550
mov ecx, eax
call fcn.10002b90
push str.htons
push dword [0x1000603c]
mov dword [0x10006040], eax
call edi
test eax, eax
je 0x10002b49
push str.getaddrinfo
push dword [0x1000603c]
mov dword [0x10006030], eax
call edi
test eax, eax
je 0x10002b5f
push str.freeaddrinfo
push dword [0x1000603c]
mov dword [0x10006034], eax
call edi
pop edi
pop esi
pop ebx
test eax, eax
je 0x10002b75
mov dword [0x10006038], eax
mov eax, 1
pop ebp
ret 0xc
push str.Error:_ijl15_is_already_initialized_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.ijl15_real
push str.Could_not_load_module__s___08x_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x10004510
push str.Could_not_load_proc__s___08x_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x10004524
push str.Could_not_load_proc__s___08x_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x1000452c
push str.Could_not_load_proc__s___08x_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x10004534
push str.Could_not_load_proc__s___08x_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x1000453c
push str.Could_not_load_proc__s___08x_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x10004548
push str.Could_not_load_proc__s___08x_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Couldnt_set_PANGYA_ARG___08x_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.kernel32
push str.Could_not_load_module__s___08x_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.wininet
push str.Could_not_load_module__s___08x_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.InternetOpenUrlA
push str.Could_not_load_proc__s___08x_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.ws2_32
push str.Could_not_load_module__s___08x_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.connect
push str.Could_not_load_proc__s___08x_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.htons
push str.Could_not_load_proc__s___08x_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.getaddrinfo
push str.Could_not_load_proc__s___08x_
call fcn.10001130
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.freeaddrinfo
push str.Could_not_load_proc__s___08x_
call fcn.10001130
int3