Function at 0x403940
Capabilities:
Create process on windows
Delete file
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x415c8e
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
mov eax, 0x188bc
call fcn.0040c6f0
mov eax, dword [0x41b0e0]
push ebx
push esi
mov dword [esp + 0xc], ecx
push edi
lea ecx, [esp + 0x210]
mov dword [esp + 0x188c4], eax
call fcn.0040ad70
xor ebx, ebx
push str.Mozilla_4.0___
lea ecx, [esp + 0x214]
mov dword [esp + 0x188d8], ebx
call fcn.0040ad90
xor eax, eax
mov byte [esp + 0x108], bl
mov ecx, 0x40
lea edi, [esp + 0x109]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x108]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
push 0x20
mov edi, 0xf
push str.http:__patch.tcon.kr_version.ini
lea ecx, [esp + 0x78]
mov dword [esp + 0x90], edi
mov dword [esp + 0x8c], ebx
mov byte [esp + 0x7c], bl
call fcn.00402370
lea eax, [esp + 0x108]
mov byte [esp + 0x188d4], 1
mov dword [esp + 0x4c], edi
mov dword [esp + 0x48], ebx
mov byte [esp + 0x38], bl
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x403a11
sub eax, edx
push eax
lea ecx, [esp + 0x10c]
push ecx
lea ecx, [esp + 0x3c]
call fcn.00402370
push 0x13
push str._server_version.ini
lea ecx, [esp + 0x3c]
mov byte [esp + 0x188dc], 2
call fcn.00402260
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x38]
mov esi, 0x10
cmp eax, esi
jae 0x403a59
lea ecx, [esp + 0x38]
cmp dword [esp + 0x88], esi
mov eax, dword [esp + 0x74]
jae 0x403a6a
lea eax, [esp + 0x74]
push ecx
push eax
push ebx
lea ecx, [esp + 0x21c]
call fcn.0040add0
xor edx, edx
mov dword [esp + 0xa9], edx
mov dword [esp + 0xad], edx
mov dword [esp + 0xb1], edx
mov dword [esp + 0xb5], edx
mov dword [esp + 0xb9], edx
mov dword [esp + 0xbd], edx
mov dword [esp + 0xc1], edx
mov word [esp + 0xc5], dx
lea ecx, [esp + 0xe8]
mov byte [esp + 0xa8], bl
mov byte [esp + 0xc7], dl
call fcn.0040afd0
push 0x12
push str.server_version.ini
lea ecx, [esp + 0x58]
mov byte [esp + 0x188dc], 3
mov dword [esp + 0x70], edi
mov dword [esp + 0x6c], ebx
mov byte [esp + 0x5c], bl
call fcn.00402370
lea eax, [esp + 0x108]
mov byte [esp + 0x188d4], 4
mov dword [esp + 0x30], edi
mov dword [esp + 0x2c], ebx
mov byte [esp + 0x1c], bl
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x403b10
sub eax, edx
push eax
lea eax, [esp + 0x10c]
push eax
lea ecx, [esp + 0x20]
call fcn.00402370
lea ecx, [esp + 0x50]
push ecx
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0xf0]
mov byte [esp + 0x188dc], 5
call fcn.0040b040
cmp dword [esp + 0x30], esi
jb 0x403b5c
mov eax, dword [esp + 0x1c]
push eax
call fcn.0040c1b1
add esp, 4
cmp dword [esp + 0x68], esi
mov dword [esp + 0x30], edi
mov dword [esp + 0x2c], ebx
mov byte [esp + 0x1c], bl
mov byte [esp + 0x188d4], 3
jb 0x403b83
mov ecx, dword [esp + 0x54]
push ecx
call fcn.0040c1b1
add esp, 4
push 0x20
lea edx, [esp + 0xac]
push edx
push str.Version
push str.Info
lea ecx, [esp + 0xf8]
call fcn.0040af70
lea eax, [esp + 0xa8]
push eax
call fcn.0040c6e8
add esp, 4
lea ecx, [esp + 0xc8]
mov dword [esp + 0x14], eax
call fcn.0040afd0
push 0x11
push str.local_version.ini
lea ecx, [esp + 0x58]
mov byte [esp + 0x188dc], 6
mov dword [esp + 0x70], edi
mov dword [esp + 0x6c], ebx
mov byte [esp + 0x5c], bl
call fcn.00402370
mov edx, dword [esp + 0x10]
cmp dword [edx + 0x1950], esi
mov byte [esp + 0x188d4], 7
jb 0x403c03
mov edx, dword [edx + 0x193c]
jmp 0x403c09
add edx, 0x193c
mov eax, edx
mov dword [esp + 0x30], edi
mov dword [esp + 0x2c], ebx
mov byte [esp + 0x1c], bl
lea edi, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x403c20
sub eax, edi
push eax
push edx
lea ecx, [esp + 0x20]
call fcn.00402370
lea ecx, [esp + 0x50]
push ecx
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0xd0]
mov byte [esp + 0x188dc], 8
call fcn.0040b040
cmp dword [esp + 0x30], esi
jb 0x403c65
mov eax, dword [esp + 0x1c]
push eax
call fcn.0040c1b1
add esp, 4
cmp dword [esp + 0x68], esi
mov dword [esp + 0x30], 0xf
mov dword [esp + 0x2c], ebx
mov byte [esp + 0x1c], bl
mov byte [esp + 0x188d4], 6
jb 0x403c90
mov ecx, dword [esp + 0x54]
push ecx
call fcn.0040c1b1
add esp, 4
push 0x20
lea edx, [esp + 0xac]
push edx
push str.Version
push str.Info
lea ecx, [esp + 0xd8]
call fcn.0040af70
lea eax, [esp + 0xa8]
push eax
call fcn.0040c6e8
mov ecx, dword [esp + 0x18]
add esp, 4
cmp ecx, eax
jle 0x403df6
push 0x28
push str.http:__patch.tcon.kr_download_update.exe
lea ecx, [esp + 0x78]
call fcn.00402370
lea eax, [esp + 0x108]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x403ce6
sub eax, edx
push eax
lea ecx, [esp + 0x10c]
push ecx
lea ecx, [esp + 0x3c]
call fcn.00402370
push 0xb
push str.update.exe
lea ecx, [esp + 0x3c]
call fcn.00402260
cmp dword [esp + 0x4c], esi
mov ecx, dword [esp + 0x38]
jae 0x403d1f
lea ecx, [esp + 0x38]
cmp dword [esp + 0x88], esi
mov eax, dword [esp + 0x74]
jae 0x403d30
lea eax, [esp + 0x74]
push ecx
push eax
push ebx
lea ecx, [esp + 0x21c]
call fcn.0040add0
mov edi, dword [esp + 0x10]
cmp dword [edi + 0x1950], esi
jb 0x403d53
mov eax, dword [edi + 0x193c]
jmp 0x403d59
lea eax, [edi + 0x193c]
cmp dword [esp + 0x4c], esi
mov ecx, dword [esp + 0x38]
jae 0x403d67
lea ecx, [esp + 0x38]
push 5
push eax
push str._VerySilent
push ecx
push str.open
push ebx
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
mov eax, dword [esp + 0x14]
xor edx, edx
mov dword [esp + 0x51], edx
mov dword [esp + 0x55], edx
mov dword [esp + 0x59], edx
mov dword [esp + 0x5d], edx
mov dword [esp + 0x61], edx
mov dword [esp + 0x65], edx
push eax
mov dword [esp + 0x6d], edx
lea ecx, [esp + 0x54]
mov word [esp + 0x71], dx
push 0x417314
push ecx
mov byte [esp + 0x5c], bl
mov byte [esp + 0x7b], dl
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push pe_nt_image_headers32
lea edx, [esp + 0x54]
push edx
push str.Version
push str.Info
lea ecx, [esp + 0xd8]
call fcn.0040afb0
cmp dword [esp + 0x4c], esi
mov eax, dword [esp + 0x38]
jae 0x403ded
lea eax, [esp + 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
jmp 0x403dfa
mov edi, dword [esp + 0x10]
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [esp + 0xa4], 0xf
mov dword [esp + 0xa0], ebx
mov byte [esp + 0x90], bl
cmp dword [edi + 0x1950], esi
mov byte [esp + 0x188d4], 9
jb 0x403e36
mov edx, dword [edi + 0x193c]
jmp 0x403e3c
lea edx, [edi + 0x193c]
mov eax, edx
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x403e41
sub eax, edi
push eax
push edx
lea ecx, [esp + 0x94]
call fcn.00402370
push 0xa
push str.patch.exe
lea ecx, [esp + 0x94]
call fcn.00402260
cmp dword [esp + 0xa4], esi
mov eax, dword [esp + 0x90]
jae 0x403e82
lea eax, [esp + 0x90]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov ecx, dword [esp + 0x10]
call fcn.004029b0
cmp dword [esp + 0xa4], esi
jb 0x403eab
mov eax, dword [esp + 0x90]
push eax
call fcn.0040c1b1
add esp, 4
mov edi, 0xf
lea ecx, [esp + 0xc8]
mov dword [esp + 0xa4], edi
mov dword [esp + 0xa0], ebx
mov byte [esp + 0x90], bl
mov byte [esp + 0x188d4], 3
call fcn.0040aff0
lea ecx, [esp + 0xe8]
mov byte [esp + 0x188d4], 2
call fcn.0040aff0
cmp dword [esp + 0x4c], esi
jb 0x403f00
mov ecx, dword [esp + 0x38]
push ecx
call fcn.0040c1b1
add esp, 4
cmp dword [esp + 0x88], esi
mov dword [esp + 0x4c], edi
mov dword [esp + 0x48], ebx
mov byte [esp + 0x38], bl
jb 0x403f22
mov edx, dword [esp + 0x74]
push edx
call fcn.0040c1b1
add esp, 4
lea ecx, [esp + 0x210]
mov dword [esp + 0x88], edi
mov dword [esp + 0x84], ebx
mov byte [esp + 0x74], bl
mov dword [esp + 0x188d4], 0xffffffff
call fcn.0040ad80
mov ecx, dword [esp + 0x188cc]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x188c4]
call fcn.0040c0d7
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret