Function at 0x420d20
Capabilities:
Get geographical location
Read .ini file

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x51dc0b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x998
mov eax, dword [0x566450]
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push esi
push edi
push str.._server.ini
push 0x40
mov esi, ecx
mov dword [esp + 0x9a4], eax
lea eax, [esi + 4]
push eax
push str.gunzdb
push 0x530538
push 0x530534
call ebx
push str.._server.ini
push 0x40
lea ecx, [esi + 0x44]
push ecx
push str.gunzdb
push str.USERNAME
push 0x530534
call ebx
push str.._server.ini
push 0x40
lea edx, [esi + 0x84]
push edx
push str.gunzdb
push str.PASSWORD
push 0x530534
call ebx
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push str.._server.ini
push 0x5dc
push str.MAXUSER
push str.SERVER
call edi
push str.._server.ini
push 0x5dc
push str.SERVERID
push str.SERVER
mov dword [esi + 0xc4], eax
call edi
push str.._server.ini
push 0x100
mov dword [esi + 0xc8], eax
lea eax, [esi + 0xcc]
push eax
push str.matchserver
push str.SERVERNAME
push str.SERVER
call ebx
push str.._server.ini
push 0x1770
push str.SERVERPORT
push str.SERVER
call edi
push str.._server.ini
push 0x1e61
push str.SERVERUDPPORT
push str.SERVER
mov dword [esi + 0x1cc], eax
call edi
mov dword [esi + 0x1d0], eax
push str.._server.ini
mov byte [esp + 0x11c], 0
xor eax, eax
mov ecx, 0x1f
lea edi, [esp + 0x11d]
rep stosd dword es:[edi], eax
push 0x80
lea ecx, [esp + 0x120]
push ecx
push str.normal
stosw word es:[edi], ax
push str.MODE
push str.SERVER
stosb byte es:[edi], al
call ebx
push str.normal
lea edx, [esp + 0x11c]
push edx
call fcn.004dcb79
add esp, 8
test eax, eax
jne 0x420ea9
mov dword [esi + 0x1d4], eax
jmp 0x420f2f
lea eax, [esp + 0x118]
push str.clan
push eax
call fcn.004dcb79
add esp, 8
test eax, eax
je 0x420f25
lea ecx, [esp + 0x118]
push str.ladder
push ecx
call fcn.004dcb79
add esp, 8
test eax, eax
jne 0x420ee7
mov dword [esi + 0x1d4], 2
jmp 0x420f2f
lea edx, [esp + 0x118]
push str.event
push edx
call fcn.004dcb79
add esp, 8
test eax, eax
jne 0x420f0c
mov dword [esi + 0x1d4], 3
jmp 0x420f2f
lea eax, [esp + 0x118]
push str.test
push eax
call fcn.004dcb79
add esp, 8
test eax, eax
jne 0x420f2f
mov dword [esi + 0x1d4], 1
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push str.._server.ini
push 1
push str.SURVIVALENABLE
push str.SERVER
call edi
push str.._server.ini
push 5
test eax, eax
push str.SURVIVALRANKING_DAILY_REQUEST_HOUR
setne cl
push str.SERVER
mov byte [esi + 0x231], cl
call edi
push str.._server.ini
push 0
push str.SURVIVALRANKING_DAILY_REQUEST_MINUTE
push str.SERVER
mov dword [esi + 0x288], eax
call edi
mov dword [esi + 0x28c], eax
cmp dword [esi + 0x288], 0x18
jb 0x420fa0
push str.._server.ini
push str._ASSERTION_FAILED____s_:_SURVIVALRANKING_DAILY_REQUEST_HOUR_invalid__n
call fcn.004bf8b0
add esp, 8
cmp dword [esi + 0x28c], 0x3c
jb 0x420fbb
push str.._server.ini
push str._ASSERTION_FAILED____s_:_SURVIVALRANKING_DAILY_REQUEST_MINUTE_invalid__n
call fcn.004bf8b0
add esp, 8
push str.._server.ini
push 0x3e8
push str.DUELTOURNAMENT_MATCHMAKING_INTERVAL
push str.SERVER
call edi
push str.._server.ini
push 0xa
push str.DUELTOURNAMENT_MATCHMAKING_ACCEPTABLE_TP_GAP
push str.SERVER
mov dword [esi + 0x290], eax
call edi
push str.._server.ini
push 0x2710
push str.DUELTOURNAMENT_MATCHMAKING_WAIT_LIMIT
push str.SERVER
mov dword [esi + 0x294], eax
call edi
mov dword [esi + 0x298], eax
cmp dword [esi + 0x290], 0x2710
jbe 0x42102a
push str.._server.ini
push str._WARNING___s_:_DUELTOURNAMENT_MATCHMAKING_INTERVAL_is_too_big._n
call fcn.004bf8b0
add esp, 8
cmp dword [esi + 0x294], 0x3e8
jbe 0x421048
push str.._server.ini
push str._WARNING___s_:_DUELTOURNAMENT_MATCHMAKING_ACCEPTABLE_TP_GAP_is_too_big._n
call fcn.004bf8b0
add esp, 8
cmp dword [esi + 0x298], 0xea60
jbe 0x421066
push str.._server.ini
push str._WARNING___s_:_DUELTOURNAMENT_MATCHMAKING_WAIT_LIMIT_is_too_big._n
call fcn.004bf8b0
add esp, 8
push str.._server.ini
push 0
push str.DUELTOURNAMENT_SERVICE_START_TIME
push str.SERVER
call edi
push str.._server.ini
push 0x17
push str.DUELTOURNAMENT_SERVICE_END_TIME
push str.SERVER
mov dword [esi + 0x29c], eax
call edi
mov ecx, dword [esi + 0x29c]
mov dword [esi + 0x2a0], eax
mov eax, 0x17
cmp ecx, eax
jbe 0x4210c4
push str.._server.ini
push str._WARNING___s_:_DUELTOURNAMENT_SERVICE_START_TIME_is_too_big._max_is_23._n
mov dword [esi + 0x29c], eax
call fcn.004bf8b0
add esp, 8
mov eax, 0x17
cmp dword [esi + 0x2a0], eax
jbe 0x4210e4
push str.._server.ini
push str._WARNING___s_:_DUELTOURNAMENT_SERVICE_END_TIME_is_too_big._max_is_23._n
mov dword [esi + 0x2a0], eax
call fcn.004bf8b0
add esp, 8
push str.._server.ini
push 1
push str.SEND_LOGINUSER_TO_DUELTOURNAMENT_CHANNEL
push str.SERVER
call edi
push str.._server.ini
push 1
test eax, eax
push str.DUELTOURNAMENT_ENABLE
setne dl
push str.SERVER
mov byte [esi + 0x2a4], dl
call edi
push str.._server.ini
push 5
test eax, eax
push str.BATTLETIMEREWARD_REFRESH_INTERVAL
setne al
push str.BATTLETIMEREWARD
mov byte [esi + 0x232], al
call edi
imul eax, eax, 0xea60
mov dword [esi + 0x2a8], eax
push str.._server.ini
mov byte [esp + 0x19c], 0
xor eax, eax
mov ecx, 0xff
lea edi, [esp + 0x19d]
rep stosd dword es:[edi], eax
push 0x400
lea ecx, [esp + 0x1a0]
push ecx
push 0x52d8f8
stosw word es:[edi], ax
push str.FREELOGINIP
push str.SERVER
stosb byte es:[edi], al
call ebx
xor eax, eax
mov dword [esp + 0x50], 0x52fd4c
mov dword [esp + 0x54], eax
mov byte [esp + 0x98], al
mov dword [esp + 0x9ac], eax
mov ecx, 0x1f
lea edi, [esp + 0x99]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea edx, [esp + 0x98]
stosb byte es:[edi], al
push edx
lea eax, [esp + 0x19c]
push eax
lea ecx, [esp + 0x58]
call fcn.004c3c70
mov dword [esp + 0x14], eax
mov al, byte [esp + 0x98]
test al, al
je 0x421221
lea ecx, [esp + 0x98]
push ecx
mov ecx, esi
call fcn.004208d0
xor eax, eax
mov byte [esp + 0x98], 0
mov ecx, 0x1f
lea edi, [esp + 0x99]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea edx, [esp + 0x98]
stosb byte es:[edi], al
mov eax, dword [esp + 0x14]
push edx
push eax
lea ecx, [esp + 0x58]
call fcn.004c3c70
mov dword [esp + 0x14], eax
mov al, byte [esp + 0x98]
test al, al
jne 0x4211d2
push str.._server.ini
push 4
lea edx, [esp + 0x54]
push edx
push 0x52fda0
xor ecx, ecx
push str.DEBUG
mov word [esp + 0x61], cx
push str.SERVER
mov byte [esp + 0x64], 0
mov byte [esp + 0x67], cl
call ebx
lea eax, [esp + 0x4c]
push eax
push 0x52fda0
call fcn.004dcb79
add esp, 8
test eax, eax
setne cl
mov byte [esi + 0x2b8], cl
push str.._server.ini
mov byte [esp + 0x59c], 0
xor eax, eax
mov ecx, 0xff
lea edi, [esp + 0x59d]
rep stosd dword es:[edi], eax
push 0x400
lea edx, [esp + 0x5a0]
push edx
push 0x52d8f8
stosw word es:[edi], ax
push str.DEBUGIP
push str.SERVER
stosb byte es:[edi], al
call ebx
xor eax, eax
mov byte [esp + 0x98], 0
mov ecx, 0x1f
lea edi, [esp + 0x99]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x98]
push eax
lea ecx, [esp + 0x59c]
push ecx
lea ecx, [esp + 0x58]
call fcn.004c3c70
mov dword [esp + 0x14], eax
mov al, byte [esp + 0x98]
test al, al
je 0x42133f
lea esp, [esp]
lea edx, [esp + 0x98]
push edx
mov ecx, esi
call fcn.00420980
xor eax, eax
mov byte [esp + 0x98], 0
mov ecx, 0x1f
lea edi, [esp + 0x99]
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x14]
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x98]
push eax
push ecx
lea ecx, [esp + 0x58]
call fcn.004c3c70
mov dword [esp + 0x14], eax
mov al, byte [esp + 0x98]
test al, al
jne 0x4212f0
mov ecx, esi
call fcn.00420110
test al, al
jne 0x421354
push str.server.ini___monitor_ip_not_setting_n
jmp 0x4219b8
mov ecx, esi
call fcn.004202f0
test al, al
jne 0x421369
push str.server.ini___Keeper_ip_not_setting_n
jmp 0x4219b8
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push str.._server.ini
push 0
push str.CheckPremiumIP
push str.SERVER
call edi
test eax, eax
je 0x42138d
mov byte [esi + 0x1f4], 1
xor edx, edx
mov dword [esp + 0x59], edx
mov dword [esp + 0x5d], edx
mov dword [esp + 0x61], edx
push str.._server.ini
mov dword [esp + 0x69], edx
push 0x1f
mov dword [esp + 0x71], edx
lea eax, [esp + 0x60]
push eax
mov dword [esp + 0x79], edx
push 0x52d8f8
mov dword [esp + 0x81], edx
push str.COUNTRY
mov word [esp + 0x89], dx
push str.SERVER
mov byte [esp + 0x70], 0
mov byte [esp + 0x8f], dl
call ebx
lea eax, [esp + 0x58]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4213e6
sub eax, edx
mov dword [esp + 0x14], eax
je 0x4219b3
lea eax, [esp + 0x58]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x421400
sub eax, edx
push eax
lea ecx, [esp + 0x5c]
push ecx
lea ecx, [esi + 0x1f8]
call fcn.0040363a
xor edx, edx
mov dword [esp + 0x79], edx
mov dword [esp + 0x7d], edx
mov dword [esp + 0x81], edx
push str.._server.ini
mov dword [esp + 0x89], edx
push 0x1f
mov dword [esp + 0x91], edx
lea eax, [esp + 0x80]
push eax
mov dword [esp + 0x99], edx
push 0x52d8f8
mov dword [esp + 0xa1], edx
push str.LANGUAGE
mov word [esp + 0xa9], dx
push str.SERVER
mov byte [esp + 0x90], 0
mov byte [esp + 0xaf], dl
call ebx
lea eax, [esp + 0x78]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x421485
sub eax, edx
mov dword [esp + 0x14], eax
je 0x4219ac
lea ecx, [esp + 0x78]
push ecx
lea ecx, [esi + 0x214]
call fcn.00406555
push str.._server.ini
push 2
lea edx, [esp + 0x18]
push edx
push 0x52fda0
push str.USETICKET
push str.SERVER
mov byte [esp + 0x28], 0
mov byte [esp + 0x29], 0
call ebx
lea eax, [esp + 0x10]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4214d6
sub eax, edx
mov dword [esp + 0x14], eax
je 0x4219a5
lea eax, [esp + 0x10]
push eax
call fcn.004dcb2f
add esp, 4
push str.._server.ini
push 2
lea edx, [esp + 0x30]
push edx
push 0x52fd70
test eax, eax
push str.GAMEGUARD
setne cl
push str.SERVER
mov byte [esi + 0x2d8], cl
mov byte [esp + 0x40], 0
mov byte [esp + 0x41], 0
call ebx
lea eax, [esp + 0x28]
push eax
call fcn.004dcb2f
add esp, 4
cmp eax, 1
jne 0x421542
mov byte [esi + 0x2db], al
jmp 0x421556
push str.gameguard_not_running_n
call fcn.004bf8b0
add esp, 4
mov byte [esi + 0x2db], 0
push str.._server.ini
push 2
lea ecx, [esp + 0x34]
push ecx
push 0x52fd70
push str.NHNUSA_AUTH
push str.SERVER
mov byte [esp + 0x44], 0
mov byte [esp + 0x45], 0
call ebx
lea edx, [esp + 0x2c]
push edx
call fcn.004dcb2f
add esp, 4
cmp eax, 1
jne 0x421597
mov byte [esi + 0x2da], al
jmp 0x4215ab
push str.nhn_usa_auth_not_running._n
mov byte [esi + 0x2da], 0
call fcn.004bf8b0
add esp, 4
push str.._server.ini
push 2
lea eax, [esp + 0x14]
push eax
push 0x52c844
push str.NHN_SERVERMODE
push str.SERVER
mov byte [esp + 0x24], 0
mov byte [esp + 0x25], 0
call ebx
lea ecx, [esp + 0xc]
push ecx
push 0x52c844
call fcn.004dcb79
add esp, 8
test eax, eax
jne 0x4215f4
mov dword [esi + 0x2dc], 2
jmp 0x421614
lea edx, [esp + 0xc]
push edx
push 0x530008
call fcn.004dcb79
add esp, 8
test eax, eax
jne 0x421614
mov dword [esi + 0x2dc], 1
push str.._server.ini
push 0x40
lea eax, [esi + 0x233]
push eax
push str.192.168.245.66
push str.DBAgentIP
push str.LOCALE
call ebx
push str.._server.ini
push 0x1d4c
push str.DBAgentPort
push str.LOCALE
call edi
push str.._server.ini
push 0x3f5
push str.GameCode
push str.LOCALE
mov dword [esi + 0x274], eax
call edi
mov ecx, esi
mov dword [esi + 0x278], eax
call fcn.004205f0
push str.._server.ini
push 2
lea ecx, [esp + 0x40]
push ecx
push 0x52fda0
push 0x52ffc8
push str.FILTER
mov byte [esp + 0x50], 0
mov byte [esp + 0x51], 0
call ebx
lea edx, [esp + 0x38]
push edx
call fcn.004dcb2f
add esp, 4
push str.._server.ini
push 2
lea ecx, [esp + 0x2c]
push ecx
push 0x52fd70
test eax, eax
push str.ACCEPT_INVALID_IP
setne al
push str.FILTER
mov byte [esi + 0x27c], al
mov byte [esp + 0x3c], 0
mov byte [esp + 0x3d], 0
call ebx
lea edx, [esp + 0x24]
push edx
call fcn.004dcb2f
add esp, 4
push str.._server.ini
push 2
lea ecx, [esp + 0x48]
push ecx
push 0x52fda0
test eax, eax
push str.USE_HSHIELD
setne al
push str.ENVIRONMENT
mov byte [esi + 0x27d], al
mov byte [esp + 0x58], 0
mov byte [esp + 0x59], 0
call ebx
lea edx, [esp + 0x40]
push edx
push 0x52fd70
call fcn.004dcb79
add esp, 8
test eax, eax
jne 0x421736
mov byte [esi + 0x27e], 1
jmp 0x42173d
mov byte [esi + 0x27e], 0
push str.._server.ini
push 2
lea eax, [esp + 0x50]
push eax
push 0x52fda0
push str.USE_XTRAP
push str.ENVIRONMENT
mov byte [esp + 0x60], 0
mov byte [esp + 0x61], 0
call ebx
lea ecx, [esp + 0x48]
push ecx
push 0x52fd70
call fcn.004dcb79
add esp, 8
test eax, eax
jne 0x421783
mov byte [esi + 0x27f], 1
jmp 0x42178a
mov byte [esi + 0x27f], 0
push str.._server.ini
push 2
lea edx, [esp + 0x44]
push edx
push 0x52fd70
push str.USE_EVENT
push str.ENVIRONMENT
mov byte [esp + 0x54], 0
mov byte [esp + 0x55], 0
call ebx
lea eax, [esp + 0x3c]
push eax
push 0x52fd70
call fcn.004dcb79
add esp, 8
push str.._server.ini
push 2
lea ecx, [esp + 0x3c]
push ecx
neg eax
push 0x52fda0
sbb al, al
push str.USE_FILECRC
inc al
push str.ENVIRONMENT
mov byte [esi + 0x280], al
mov byte [esp + 0x4c], 0
mov byte [esp + 0x4d], 0
call ebx
lea edx, [esp + 0x34]
push edx
push 0x52fd70
call fcn.004dcb79
add esp, 8
neg eax
sbb al, al
push str.._server.ini
inc al
push 2
mov byte [esi + 0x281], al
lea eax, [esp + 0x4c]
push eax
push 0x52fda0
push str.USE_MD5
push str.ENVIRONMENT
mov byte [esp + 0x5c], 0
mov byte [esp + 0x5d], 0
call ebx
lea ecx, [esp + 0x44]
push ecx
push 0x52fd70
call fcn.004dcb79
add esp, 8
push str.._server.ini
push 2
lea edx, [esp + 0x20]
push edx
neg eax
push 0x52fda0
sbb al, al
push str.BLOCK_FLOODING
inc al
push str.ENVIRONMENT
mov byte [esi + 0x282], al
mov byte [esp + 0x30], 0
mov byte [esp + 0x31], 0
call ebx
lea eax, [esp + 0x18]
push eax
push 0x52fd70
call fcn.004dcb79
add esp, 8
neg eax
sbb al, al
inc al
mov byte [esi + 0x283], al
mov al, byte [esi + 0x27e]
test al, al
je 0x4218bc
mov al, byte [esi + 0x27f]
test al, al
je 0x4218bc
push str.server.ini___HackShield_and_XTrap_is_duplicated_n
jmp 0x4219b8
push str.._server.ini
push 2
lea ecx, [esp + 0x38]
push ecx
push 0
push str.USE_BLOCKHACKING
push str.ENVIRONMENT
mov byte [esp + 0x48], 0
mov byte [esp + 0x49], 0
call ebx
lea edx, [esp + 0x30]
push edx
push 0x52fd70
call fcn.004dcb79
add esp, 8
neg eax
sbb al, al
push str.._server.ini
inc al
push 2
mov byte [esi + 0x284], al
lea eax, [esp + 0x24]
push eax
push 0
push str.USE_ITEM_CONSISTENCY
push str.ENVIRONMENT
mov byte [esp + 0x34], 0
mov byte [esp + 0x35], 0
call ebx
lea ecx, [esp + 0x1c]
push ecx
push 0x52fd70
call fcn.004dcb79
add esp, 8
neg eax
sbb al, al
inc al
mov ecx, esi
mov byte [esi + 0x285], al
call fcn.0041fd80
mov ecx, esi
call fcn.0041fcc0
push str.._server.ini
push 2
lea edx, [esp + 0x28]
push edx
push 0x52fda0
push str.USE_RESOURCECRC32CACHECKECK
push str.ENVIRONMENT
mov byte [esp + 0x38], 0
mov byte [esp + 0x39], 0
call ebx
lea eax, [esp + 0x20]
push eax
push 0x52fd70
call fcn.004dcb79
add esp, 8
neg eax
sbb al, al
inc al
mov ecx, esi
mov byte [esi + 0x304], al
call fcn.0041fe90
mov byte [esi + 0x2d9], 1
mov al, 1
jmp 0x4219c2
push str.server.ini___invalid_ticket_setting._n
jmp 0x4219b8
push str.server.ini___Invalid_language_type._n
jmp 0x4219b8
push str.server.ini___Invalid_country_type._n
call fcn.004bf8b0
add esp, 4
xor al, al
mov ecx, dword [esp + 0x9a4]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x99c]
call fcn.004da561
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret