Function at 0x402a70
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x487a40
mov eax, dword fs:[0]
push eax
sub esp, 0xec
mov eax, dword [0x4a701c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, edx
mov dword [ebp - 0xf0], esi
mov ebx, ecx
mov dword [ebp - 0xe4], ebx
xor eax, eax
mov dword [ebp - 0xc8], eax
cmp ebx, dword [esi]
jne 0x403ef5
push ebx
mov edx, 0x4cf740
lea ecx, [ebp - 0xf8]
call fcn.0040ff20
add esp, 4
mov dword [ebp - 4], 0
mov edi, dword [ebp - 0xf8]
mov dword [ebp - 0xe8], edi
test edi, edi
jne 0x402bd7
push 0x2258
call fcn.0045f6ff
add esp, 4
mov dword [ebp - 0xec], eax
xorps xmm0, xmm0
movq qword [eax], xmm0
lea ecx, [eax + 4]
mov dword [eax + 8], edi
lea edi, [eax + 0x10]
push 0x2248
push 0
push edi
mov dword [ebp - 0xd0], ecx
mov dword [ecx], 1
mov dword [eax + 8], 1
mov dword [eax], vtable.std::_Ref_count_obj2_struct_mmo_charstatus_.0
mov dword [ebp - 0xe8], edi
call fcn.00461440
mov ecx, dword [ebp - 0xf4]
add esp, 0xc
mov eax, dword [ebp - 0xec]
mov dword [ebp - 0xf8], edi
mov dword [ebp - 0xe0], ecx
mov dword [ebp - 0xf4], eax
test ecx, ecx
je 0x402b84
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
jne 0x402b84
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp - 0xe0]
or eax, 0xffffffff
lock xadd dword [ecx + 8], eax
jne 0x402b84
mov eax, dword [ecx]
call dword [eax + 4]
push edi
mov ecx, 0x4cf740
mov dword [edi], ebx
call fcn.0040fa80
mov ecx, dword [ebp - 0xd0]
lock inc dword [ecx]
mov ecx, dword [eax + 4]
mov edx, dword [ebp - 0xec]
mov dword [eax], edi
mov dword [ebp - 0xe0], ecx
mov dword [eax + 4], edx
test ecx, ecx
je 0x402be3
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
jne 0x402be3
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp - 0xe0]
or eax, 0xffffffff
lock xadd dword [ecx + 8], eax
jne 0x402be3
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x402be3
mov eax, dword [ebp - 0xf4]
mov dword [ebp - 0xec], eax
push ecx
push 0x113
mov edx, str.D:_ragnarokbr_rathena_srccharchar.cpp
mov dword [ebp - 0xd4], 0x400
mov ecx, 0x401
call fcn.00444690
push 0x80
mov dword [ebp - 0xdc], eax
lea eax, [ebp - 0x90]
push 0
push eax
call fcn.00461440
mov eax, dword [esi + 0x18]
add esp, 0x14
cmp eax, dword [edi + 0x18]
jne 0x402ffe
mov eax, dword [esi + 0x1c]
cmp eax, dword [edi + 0x1c]
jne 0x402ffe
mov eax, dword [esi + 0xc4]
cmp eax, dword [edi + 0xc4]
jne 0x402ffe
mov eax, dword [esi + 0xc8]
cmp eax, dword [edi + 0xc8]
jne 0x402ffe
mov eax, dword [esi + 0x20]
cmp eax, dword [edi + 0x20]
jne 0x402ffe
mov eax, dword [esi + 0x24]
cmp eax, dword [edi + 0x24]
jne 0x402ffe
mov eax, dword [esi + 0x28]
cmp eax, dword [edi + 0x28]
jne 0x402ffe
push 0x10
lea eax, [edi + 0xee]
push eax
lea eax, [esi + 0xee]
push eax
call fcn.0046a7d0
add esp, 0xc
test eax, eax
jne 0x402ffe
mov ax, word [esi + 0xfe]
cmp ax, word [edi + 0xfe]
jne 0x402ffe
mov ax, word [esi + 0x100]
cmp ax, word [edi + 0x100]
jne 0x402ffe
mov eax, dword [esi + 0x104]
cmp eax, dword [edi + 0x104]
jne 0x402ffe
push 0x10
lea eax, [edi + 0x108]
push eax
lea eax, [esi + 0x108]
push eax
call fcn.0046a7d0
add esp, 0xc
test eax, eax
jne 0x402ffe
mov ax, word [esi + 0x118]
cmp ax, word [edi + 0x118]
jne 0x402ffe
mov ax, word [esi + 0x11a]
cmp ax, word [edi + 0x11a]
jne 0x402ffe
mov eax, dword [esi + 0x40]
cmp eax, dword [edi + 0x40]
jne 0x402ffe
mov eax, dword [esi + 0x3c]
cmp eax, dword [edi + 0x3c]
jne 0x402ffe
mov eax, dword [esi + 0x48]
cmp eax, dword [edi + 0x48]
jne 0x402ffe
mov eax, dword [esi + 0x44]
cmp eax, dword [edi + 0x44]
jne 0x402ffe
mov eax, dword [esi + 0x30]
cmp eax, dword [edi + 0x30]
jne 0x402ffe
mov eax, dword [esi + 0x34]
cmp eax, dword [edi + 0x34]
jne 0x402ffe
mov ax, word [esi + 0xcc]
cmp ax, word [edi + 0xcc]
jne 0x402ffe
mov ax, word [esi + 0xce]
cmp ax, word [edi + 0xce]
jne 0x402ffe
mov ax, word [esi + 0xd0]
cmp ax, word [edi + 0xd0]
jne 0x402ffe
mov ax, word [esi + 0xd2]
cmp ax, word [edi + 0xd2]
jne 0x402ffe
mov ax, word [esi + 0xd4]
cmp ax, word [edi + 0xd4]
jne 0x402ffe
mov ax, word [esi + 0xd6]
cmp ax, word [edi + 0xd6]
jne 0x402ffe
mov eax, dword [esi + 0x54]
cmp eax, dword [edi + 0x54]
jne 0x402ffe
mov eax, dword [esi + 0x64]
cmp eax, dword [edi + 0x64]
jne 0x402ffe
mov eax, dword [esi + 0x68]
cmp eax, dword [edi + 0x68]
jne 0x402ffe
mov eax, dword [esi + 0x6c]
cmp eax, dword [edi + 0x6c]
jne 0x402ffe
mov ax, word [esi + 0x9c]
cmp ax, word [edi + 0x9c]
jne 0x402ffe
mov eax, dword [esi + 0x70]
cmp eax, dword [edi + 0x70]
jne 0x402ffe
mov eax, dword [esi + 0x78]
cmp eax, dword [edi + 0x78]
jne 0x402ffe
mov ax, word [esi + 0x9e]
cmp ax, word [edi + 0x9e]
jne 0x402ffe
mov ax, word [esi + 0xa0]
cmp ax, word [edi + 0xa0]
jne 0x402ffe
mov ax, word [esi + 0xa2]
cmp ax, word [edi + 0xa2]
jne 0x402ffe
mov ax, word [esi + 0xa4]
cmp ax, word [edi + 0xa4]
jne 0x402ffe
mov eax, dword [esi + 0x2220]
cmp eax, dword [edi + 0x2220]
jne 0x402ffe
mov eax, dword [esi + 0x2224]
cmp eax, dword [edi + 0x2224]
jne 0x402ffe
mov ax, word [esi + 0x2218]
cmp ax, word [edi + 0x2218]
jne 0x402ffe
mov ax, word [esi + 0xa6]
cmp ax, word [edi + 0xa6]
jne 0x402ffe
mov eax, dword [esi + 0x2230]
cmp eax, dword [edi + 0x2230]
jne 0x402ffe
mov eax, dword [esi + 0x2228]
cmp eax, dword [edi + 0x2228]
jne 0x402ffe
mov eax, dword [esi + 0x222c]
cmp eax, dword [edi + 0x222c]
jne 0x402ffe
mov al, byte [esi + 0x2234]
cmp al, byte [edi + 0x2234]
jne 0x402ffe
mov eax, dword [esi + 0x2238]
cmp eax, dword [edi + 0x2238]
jne 0x402ffe
mov al, byte [esi + 0x223c]
cmp al, byte [edi + 0x223c]
jne 0x402ffe
mov eax, dword [esi + 0x7c]
cmp eax, dword [edi + 0x7c]
jne 0x402ffe
mov eax, dword [esi + 0x2240]
cmp eax, dword [edi + 0x2240]
jne 0x402ffe
mov al, byte [esi + 0x2214]
cmp al, byte [edi + 0x2214]
jne 0x402ffe
mov al, byte [esi + 0x223d]
cmp al, byte [edi + 0x223d]
jne 0x402ffe
mov eax, dword [esi + 0x50]
cmp eax, dword [edi + 0x50]
jne 0x402ffe
mov eax, dword [esi + 0x4c]
cmp eax, dword [edi + 0x4c]
jne 0x402ffe
mov eax, dword [esi + 0x38]
cmp eax, dword [edi + 0x38]
jne 0x402ffe
mov ax, word [esi + 0xd8]
cmp ax, word [edi + 0xd8]
jne 0x402ffe
mov ax, word [esi + 0xda]
cmp ax, word [edi + 0xda]
jne 0x402ffe
mov ax, word [esi + 0xdc]
cmp ax, word [edi + 0xdc]
jne 0x402ffe
mov ax, word [esi + 0xde]
cmp ax, word [edi + 0xde]
jne 0x402ffe
mov ax, word [esi + 0xe0]
cmp ax, word [edi + 0xe0]
jne 0x402ffe
mov ax, word [esi + 0xe2]
cmp ax, word [edi + 0xe2]
je 0x403219
push dword [esi]
movzx eax, word [esi + 0xe2]
push dword [esi + 4]
push eax
movzx eax, word [esi + 0xe0]
push eax
movzx eax, word [esi + 0xde]
push eax
movzx eax, word [esi + 0xdc]
push eax
movzx eax, word [esi + 0xda]
push eax
movzx eax, word [esi + 0xd8]
push eax
push dword [esi + 0x38]
movzx eax, byte [esi + 0x223d]
push dword [esi + 0x4c]
push dword [esi + 0x50]
push eax
movzx eax, byte [esi + 0x2214]
push eax
push dword [esi + 0x2240]
movzx eax, byte [esi + 0x223c]
push dword [esi + 0x7c]
push eax
push dword [esi + 0x2238]
movzx eax, byte [esi + 0x2234]
push eax
push dword [esi + 0x2230]
movsx eax, word [esi + 0xa6]
push eax
push dword [esi + 0x2220]
movsx eax, word [esi + 0x2218]
push eax
movzx eax, word [esi + 0x11a]
push eax
movzx eax, word [esi + 0x118]
push eax
lea eax, [esi + 0x108]
push eax
push dword [esi + 0x104]
movzx eax, word [esi + 0x100]
push eax
movzx eax, word [esi + 0xfe]
push eax
lea eax, [esi + 0xee]
push eax
movsx eax, word [esi + 0xa4]
push eax
movsx eax, word [esi + 0xa2]
push eax
movsx eax, word [esi + 0xa0]
push eax
movsx eax, word [esi + 0x9e]
push eax
movsx eax, word [esi + 0x9c]
push eax
push dword [esi + 0x78]
movzx eax, word [esi + 0xd6]
push dword [esi + 0x70]
push dword [esi + 0x6c]
push dword [esi + 0x68]
push dword [esi + 0x64]
push dword [esi + 0x54]
push eax
movzx eax, word [esi + 0xd4]
push eax
movzx eax, word [esi + 0xd2]
push eax
movzx eax, word [esi + 0xd0]
push eax
movzx eax, word [esi + 0xce]
push eax
movzx eax, word [esi + 0xcc]
push eax
push dword [esi + 0x34]
push dword [esi + 0x30]
push dword [esi + 0x44]
push dword [esi + 0x48]
push dword [esi + 0x3c]
push dword [esi + 0x40]
push dword [esi + 0x28]
push dword [esi + 0x24]
push dword [esi + 0x20]
push dword [esi + 0x1c]
push dword [esi + 0x18]
push dword [esi + 0xc8]
push dword [esi + 0xc4]
push 0x4aaab4
push str.UPDATE___s__SET__base_level__d___job_level__d__base_exp__llu___job_exp__llu___zeny__d__max_hp__u__hp__u__max_sp__u__sp__u__status_point__d__skill_point__d__str__d__agi__d__vit__d__int__d__dex__d__luk__d__option__d__party_id__d__guild_id__d__pet_id__d__homun_id__d__elemental_id__d__weapon__d__shield__d__head_top__d__head_mid__d__head_bottom__d__last_map__s__last_x__d__last_y__d__last_instanceid__d__save_map__s__save_x__d__save_y__d___rename__d__delete_date__lu__robe__d__moves__d__font__u__uniqueitem_counter__u__hotkey_rowshift__d___clan_id__d___title_id__lu___show_equip__d___hotkey_rowshift2__d__max_ap__u__ap__u__trait_point__d__pow__d__sta__d__wis__d__spl__d__con__d__crt__d_WHERE__account_id__d_AND__char_id____d
push dword [0x4ad1b4]
call fcn.0043d8e0
add esp, 0xf8
cmp eax, 0xffffffff
jne 0x4031f9
mov ecx, dword [0x4ad1b4]
test ecx, ecx
jne 0x4031a3
push 0x14d
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu___self_is_NULL_n
call fcn.004427f0
add esp, 0xc
mov dword [ebp - 0xc8], 1
jmp 0x403219
mov edx, dword [ecx + 4]
mov eax, edx
sub eax, dword [ecx]
test eax, eax
jle 0x4031d6
mov byte [edx], 0
push dword [ecx]
push 0x14d
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu____s_n
call fcn.004427f0
add esp, 0x10
mov dword [ebp - 0xc8], 1
jmp 0x403219
push 0x14d
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu_n
call fcn.004427f0
add esp, 0xc
mov dword [ebp - 0xc8], 1
jmp 0x403219
lea ecx, [ebp - 0x90]
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x403200
mov eax, dword [str._status]
mov dword [ecx], eax
mov eax, dword [0x493944]
mov dword [ecx + 4], eax
movzx eax, word [esi + 0x5c]
mov ecx, eax
cmp ax, word [edi + 0x5c]
jne 0x4032c9
mov ax, word [esi + 0x5e]
cmp ax, word [edi + 0x5e]
jne 0x4032c9
mov ax, word [esi + 0x60]
cmp ax, word [edi + 0x60]
jne 0x4032c9
mov ax, word [esi + 0x62]
cmp ax, word [edi + 0x62]
jne 0x4032c9
mov ax, word [esi + 0x2c]
cmp ax, word [edi + 0x2c]
jne 0x4032c9
mov eax, dword [esi + 8]
cmp eax, dword [edi + 8]
jne 0x4032c9
mov eax, dword [esi + 0xc]
cmp eax, dword [edi + 0xc]
jne 0x4032c9
mov eax, dword [esi + 0x10]
cmp eax, dword [edi + 0x10]
jne 0x4032c9
mov eax, dword [esi + 0x14]
cmp eax, dword [edi + 0x14]
jne 0x4032c9
mov al, byte [esi + 0x5a]
cmp al, byte [edi + 0x5a]
jne 0x4032c9
mov ax, word [esi + 0x58]
cmp ax, word [edi + 0x58]
jne 0x4032c9
mov eax, dword [esi + 0x80]
cmp eax, dword [edi + 0x80]
jne 0x4032c9
mov ax, word [esi + 0x2244]
cmp ax, word [edi + 0x2244]
jne 0x4032c9
mov al, byte [esi + 0xa8]
cmp al, byte [edi + 0xa8]
jne 0x4032c9
mov al, byte [esi + 0x2216]
cmp al, byte [edi + 0x2216]
je 0x4033d6
push dword [esi]
movzx eax, byte [esi + 0x2216]
push dword [esi + 4]
push eax
movzx eax, byte [esi + 0xa8]
push eax
movzx eax, word [esi + 0x2244]
push eax
push dword [esi + 0x80]
movsx eax, word [esi + 0x58]
push eax
movzx eax, byte [esi + 0x5a]
push eax
push dword [esi + 0x14]
movsx eax, word [esi + 0x62]
push dword [esi + 0x10]
push dword [esi + 0xc]
push dword [esi + 8]
push eax
movsx eax, word [esi + 0x60]
push eax
movsx eax, word [esi + 0x5e]
push eax
movsx eax, cx
push eax
movsx eax, word [esi + 0x2c]
push eax
push 0x4aaab4
push str.UPDATE___s__SET__class__d__hair__d___hair_color__d___clothes_color__d___body__d__partner_id__u___father__u___mother__u___child__u__karma__d__manner__d___fame__d___inventory_slots__hu__body_direction__d__disable_call__d_WHERE___account_id__d_AND__char_id____d
push dword [0x4ad1b4]
call fcn.0043d8e0
add esp, 0x50
cmp eax, 0xffffffff
jne 0x4033ae
mov ecx, dword [0x4ad1b4]
test ecx, ecx
jne 0x403360
push 0x16b
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu___self_is_NULL_n
call fcn.004427f0
add esp, 0xc
inc dword [ebp - 0xc8]
jmp 0x4033d6
mov edx, dword [ecx + 4]
mov eax, edx
sub eax, dword [ecx]
test eax, eax
jle 0x40338f
mov byte [edx], 0
push dword [ecx]
push 0x16b
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu____s_n
call fcn.004427f0
add esp, 0x10
inc dword [ebp - 0xc8]
jmp 0x4033d6
push 0x16b
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu_n
call fcn.004427f0
add esp, 0xc
inc dword [ebp - 0xc8]
jmp 0x4033d6
lea ecx, [ebp - 0x90]
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x4033b5
mov eax, dword [str._status2]
mov dword [ecx], eax
mov eax, dword [0x493a84]
mov dword [ecx + 4], eax
mov al, byte [0x493a88]
mov byte [ecx + 8], al
mov ecx, dword [esi + 0x74]
cmp ecx, dword [edi + 0x74]
jne 0x403436
mov eax, dword [esi + 0x88]
cmp eax, dword [edi + 0x88]
jne 0x403436
mov eax, dword [esi + 0x84]
cmp eax, dword [edi + 0x84]
jne 0x403436
mov eax, dword [esi + 0x90]
cmp eax, dword [edi + 0x90]
jne 0x403436
mov eax, dword [esi + 0x8c]
cmp eax, dword [edi + 0x8c]
jne 0x403436
mov eax, dword [esi + 0x98]
cmp eax, dword [edi + 0x98]
jne 0x403436
mov eax, dword [esi + 0x94]
cmp eax, dword [edi + 0x94]
je 0x40351b
push dword [esi + 0x94]
push dword [esi + 0x98]
push dword [esi + 0x8c]
push dword [esi + 0x90]
push dword [esi + 0x84]
push dword [esi + 0x88]
push ecx
push ebx
push 0x4ac7b4
push str.REPLACE_INTO___s____char_id____merc_id____arch_calls____arch_faith____spear_calls____spear_faith____sword_calls____sword_faith___VALUES___d___d___d___d___d___d___d___d_
push dword [0x4ad1b4]
call fcn.0043d8e0
add esp, 0x2c
cmp eax, 0xffffffff
jne 0x4034e7
mov ecx, dword [0x4ad1b4]
test ecx, ecx
jne 0x40349f
push 0x33
push str.D:_ragnarokbr_rathena_srccharint_mercenary.cpp
push str.at__s:_lu___self_is_NULL_n
call fcn.004427f0
add esp, 0xc
inc dword [ebp - 0xc8]
jmp 0x40351b
mov edx, dword [ecx + 4]
mov eax, edx
sub eax, dword [ecx]
test eax, eax
jle 0x4034cb
mov byte [edx], 0
push dword [ecx]
push 0x33
push str.D:_ragnarokbr_rathena_srccharint_mercenary.cpp
push str.at__s:_lu____s_n
call fcn.004427f0
add esp, 0x10
inc dword [ebp - 0xc8]
jmp 0x40351b
push 0x33
push str.D:_ragnarokbr_rathena_srccharint_mercenary.cpp
push str.at__s:_lu_n
call fcn.004427f0
add esp, 0xc
inc dword [ebp - 0xc8]
jmp 0x40351b
lea ecx, [ebp - 0x90]
dec ecx
nop
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x4034f0
mov eax, dword [str._mercenary]
mov dword [ecx], eax
mov eax, dword [0x493a90]
mov dword [ecx + 4], eax
mov ax, word [0x493a94]
mov word [ecx + 8], ax
mov al, byte [0x493a96]
mov byte [ecx + 0xa], al
lea ebx, [esi + 0x11c]
mov dword [ebp - 0xcc], 0x38
lea edx, [edi + 0x11c]
mov ecx, ebx
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x40354c
add ecx, 4
add edx, 4
sub dword [ebp - 0xcc], 4
jae 0x403533
xor eax, eax
jmp 0x403573
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x40356e
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x40356e
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x40356e
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x40356e
xor eax, eax
jmp 0x403573
sbb eax, eax
or eax, 1
test eax, eax
je 0x4037fb
push dword [esi]
push 0x4ab3b4
push str.DELETE_FROM___s__WHERE__char_id__d
push dword [0x4ad1b4]
call fcn.0043d8e0
add esp, 0x10
cmp eax, 0xffffffff
jne 0x4035fb
mov ecx, dword [0x4ad1b4]
test ecx, ecx
jne 0x4035b5
push 0x185
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu___self_is_NULL_n
jmp 0x4035ed
mov edx, dword [ecx + 4]
mov eax, edx
sub eax, dword [ecx]
test eax, eax
jle 0x4035de
mov byte [edx], 0
push dword [ecx]
push 0x185
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu____s_n
call fcn.004427f0
add esp, 0x10
jmp 0x4035f5
push 0x185
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu_n
call fcn.004427f0
add esp, 0xc
inc dword [ebp - 0xc8]
mov edx, dword [ebp - 0xdc]
lea eax, [ebp - 0xdc]
push 0x4ab3b4
push str.INSERT_INTO___s___char_id___map___x___y___VALUES
push eax
push str.char_mmo_char_tosql
push 0x18b
push str.D:_ragnarokbr_rathena_srccharchar.cpp
mov dword [ebp - 0xd8], edx
call fcn.00443060
mov edi, dword [ebp - 0xe4]
add esp, 0x18
mov dword [ebp - 0xcc], 0
mov esi, 3
mov ecx, ebx
mov eax, 0x4933b9
nop dword [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x403670
test dl, dl
je 0x40366c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x403670
add eax, 2
add ecx, 2
test dl, dl
jne 0x403650
xor eax, eax
jmp 0x403675
sbb eax, eax
or eax, 1
test eax, eax
je 0x403730
cmp dword [ebp - 0xcc], 0
je 0x4036a9
push 0x493af4
lea eax, [ebp - 0xdc]
mov edx, 0x190
push eax
push str.char_mmo_char_tosql
mov ecx, str.D:_ragnarokbr_rathena_srccharchar.cpp
call fcn.00443180
add esp, 0xc
mov edx, dword [0x4ad1b4]
mov ecx, ebx
lea eax, [ecx + 1]
mov dword [ebp - 0xe0], eax
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4036c0
sub ecx, dword [ebp - 0xe0]
lea eax, [ebp - 0xc4]
push ecx
push ebx
push eax
test edx, edx
je 0x4036e6
lea eax, [edx + 0x10]
push eax
call dword [sym.imp.libmysql.dll_mysql_real_escape_string]
jmp 0x4036ec
call dword [sym.imp.libmysql.dll_mysql_escape_string]
movzx eax, word [ebx + 0x12]
push eax
movzx eax, word [ebx + 0x10]
push eax
lea eax, [ebp - 0xc4]
push eax
push edi
push str.__d___s___d___d_
lea eax, [ebp - 0xdc]
push eax
push str.char_mmo_char_tosql
push 0x192
push str.D:_ragnarokbr_rathena_srccharchar.cpp
call fcn.00443060
mov edx, dword [ebp - 0xcc]
add esp, 0x24
inc edx
mov dword [ebp - 0xcc], edx
jmp 0x403736
mov edx, dword [ebp - 0xcc]
add ebx, 0x14
sub esi, 1
jne 0x403644
mov esi, dword [ebp - 0xf0]
mov edi, dword [ebp - 0xe8]
test edx, edx
je 0x4037d6
mov eax, dword [ebp - 0xd8]
mov edx, dword [ebp - 0xdc]
mov byte [eax], 0
mov ecx, dword [0x4ad1b4]
call fcn.0043da00
cmp eax, 0xffffffff
jne 0x4037d6
mov ecx, dword [0x4ad1b4]
test ecx, ecx
jne 0x403790
push 0x19a
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu___self_is_NULL_n
jmp 0x4037c8
mov edx, dword [ecx + 4]
mov eax, edx
sub eax, dword [ecx]
test eax, eax
jle 0x4037b9
mov byte [edx], 0
push dword [ecx]
push 0x19a
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu____s_n
call fcn.004427f0
add esp, 0x10
jmp 0x4037d0
push 0x19a
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu_n
call fcn.004427f0
add esp, 0xc
inc dword [ebp - 0xc8]
lea ecx, [ebp - 0x90]
dec ecx
nop dword [eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x4037e0
mov eax, dword [str._memo]
mov dword [ecx], eax
mov ax, word [0x493b18]
mov word [ecx + 4], ax
lea edx, [edi + 0x158]
mov ebx, 0x1958
lea ecx, [esi + 0x158]
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x403826
add ecx, 4
add edx, 4
sub ebx, 4
jae 0x403810
jmp 0x403a7b
push dword [esi]
push 0x4ab2b4
push str.DELETE_FROM___s__WHERE__char_id__d
push dword [0x4ad1b4]
call fcn.0043d8e0
add esp, 0x10
cmp eax, 0xffffffff
jne 0x4038a6
mov ecx, dword [0x4ad1b4]
test ecx, ecx
jne 0x403860
push 0x1a7
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu___self_is_NULL_n
jmp 0x403898
mov edx, dword [ecx + 4]
mov eax, edx
sub eax, dword [ecx]
test eax, eax
jle 0x403889
mov byte [edx], 0
push dword [ecx]
push 0x1a7
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu____s_n
call fcn.004427f0
add esp, 0x10
jmp 0x4038a0
push 0x1a7
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu_n
call fcn.004427f0
add esp, 0xc
inc dword [ebp - 0xc8]
mov eax, dword [ebp - 0xdc]
push 0x4ab2b4
push str.INSERT_INTO___s___char_id___id___lv___flag___VALUES
mov dword [ebp - 0xd8], eax
lea eax, [ebp - 0xdc]
push eax
push str.char_mmo_char_tosql
push 0x1ac
push str.D:_ragnarokbr_rathena_srccharchar.cpp
call fcn.00443060
mov edi, dword [ebp - 0xe4]
lea ebx, [esi + 0x15b]
add esp, 0x18
mov edx, 0x657
xor ecx, ecx
mov dword [ebp - 0xd0], edx
mov dword [ebp - 0xcc], ecx
nop dword [eax]
cmp word [ebx - 3], 0
je 0x4039bb
mov al, byte [ebx]
cmp al, 1
je 0x4039bb
cmp byte [ebx - 1], 0
jne 0x40392b
cmp al, 3
je 0x4039bb
test al, al
je 0x4039bb
test al, al
je 0x40393b
cmp al, 3
je 0x40393b
cmp al, 0xa
je 0x4039bb
test ecx, ecx
je 0x403962
push 0x493af4
lea eax, [ebp - 0xdc]
mov edx, 0x1b6
push eax
push str.char_mmo_char_tosql
mov ecx, str.D:_ragnarokbr_rathena_srccharchar.cpp
call fcn.00443180
add esp, 0xc
mov cl, byte [ebx]
movzx eax, cl
cmp cl, 3
je 0x403979
mov edx, eax
xor eax, eax
test cl, cl
je 0x403979
lea ecx, [edx - 0xa]
jmp 0x40397d
movzx ecx, byte [ebx - 1]
push eax
movzx eax, word [ebx - 3]
push ecx
push eax
push edi
push str.__d__d__d__d_
lea eax, [ebp - 0xdc]
push eax
push str.char_mmo_char_tosql
push 0x1b9
push str.D:_ragnarokbr_rathena_srccharchar.cpp
call fcn.00443060
mov ecx, dword [ebp - 0xcc]
add esp, 0x24
mov edx, dword [ebp - 0xd0]
inc ecx
mov dword [ebp - 0xcc], ecx
add ebx, 4
sub edx, 1
mov dword [ebp - 0xd0], edx
jne 0x403900
mov edi, dword [ebp - 0xe8]
test ecx, ecx
je 0x403a5b
mov eax, dword [ebp - 0xd8]
mov edx, dword [ebp - 0xdc]
mov byte [eax], 0
mov ecx, dword [0x4ad1b4]
call fcn.0043da00
cmp eax, 0xffffffff
jne 0x403a5b
mov ecx, dword [0x4ad1b4]
test ecx, ecx
jne 0x403a15
push 0x1c1
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu___self_is_NULL_n
jmp 0x403a4d
mov edx, dword [ecx + 4]
mov eax, edx
sub eax, dword [ecx]
test eax, eax
jle 0x403a3e
mov byte [edx], 0
push dword [ecx]
push 0x1c1
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu____s_n
call fcn.004427f0
add esp, 0x10
jmp 0x403a55
push 0x1c1
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu_n
call fcn.004427f0
add esp, 0xc
inc dword [ebp - 0xc8]
lea ecx, [ebp - 0x90]
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x403a62
mov eax, dword [str._skills]
mov dword [ecx], eax
mov eax, dword [0x493b70]
mov dword [ecx + 4], eax
lea edx, [edi + 0x1ab4]
mov dword [ebp - 0xd0], 0
lea ebx, [esi + 0x1ab8]
sub edi, esi
mov ecx, ebx
mov dword [ebp - 0xcc], edi
nop dword [eax + eax]
mov eax, dword [ecx]
cmp eax, dword [edi + ecx]
jne 0x403ad1
mov eax, dword [ecx - 4]
cmp eax, dword [edx]
jne 0x403ad1
mov eax, dword [ebp - 0xd0]
add edx, 0x20
inc eax
add ecx, 0x20
mov dword [ebp - 0xd0], eax
cmp eax, 0x28
jl 0x403aa0
mov edi, dword [ebp - 0xe4]
jmp 0x403cc3
mov edi, dword [ebp - 0xe4]
push edi
push 0x4ac1b4
push str.DELETE_FROM___s__WHERE__char_id__d
push dword [0x4ad1b4]
call fcn.0043d8e0
add esp, 0x10
cmp eax, 0xffffffff
jne 0x403b56
mov ecx, dword [0x4ad1b4]
test ecx, ecx
jne 0x403b10
push 0x1d6
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu___self_is_NULL_n
jmp 0x403b48
mov edx, dword [ecx + 4]
mov eax, edx
sub eax, dword [ecx]
test eax, eax
jle 0x403b39
mov byte [edx], 0
push dword [ecx]
push 0x1d6
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu____s_n
call fcn.004427f0
add esp, 0x10
jmp 0x403b50
push 0x1d6
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu_n
call fcn.004427f0
add esp, 0xc
inc dword [ebp - 0xc8]
mov eax, dword [ebp - 0xdc]
push 0x4ac1b4
push str.INSERT_INTO___s____char_id____friend_id___VALUES
mov dword [ebp - 0xd8], eax
lea eax, [ebp - 0xdc]
push eax
push str.char_mmo_char_tosql
push 0x1db
push str.D:_ragnarokbr_rathena_srccharchar.cpp
call fcn.00443060
add esp, 0x18
mov ecx, 0x28
xor eax, eax
mov dword [ebp - 0xe0], ecx
mov dword [ebp - 0xd0], eax
nop dword [eax]
cmp dword [ebx], 0
jbe 0x403c05
test eax, eax
je 0x403bcc
push 0x493af4
lea eax, [ebp - 0xdc]
mov edx, 0x1e1
push eax
push str.char_mmo_char_tosql
mov ecx, str.D:_ragnarokbr_rathena_srccharchar.cpp
call fcn.00443180
add esp, 0xc
push dword [ebx]
lea eax, [ebp - 0xdc]
push edi
push str.__d__d_
push eax
push str.char_mmo_char_tosql
push 0x1e2
push str.D:_ragnarokbr_rathena_srccharchar.cpp
call fcn.00443060
mov eax, dword [ebp - 0xd0]
add esp, 0x1c
mov ecx, dword [ebp - 0xe0]
inc eax
mov dword [ebp - 0xd0], eax
add ebx, 0x20
sub ecx, 1
mov dword [ebp - 0xe0], ecx
jne 0x403ba0
test eax, eax
je 0x403c9b
mov eax, dword [ebp - 0xd8]
mov edx, dword [ebp - 0xdc]
mov byte [eax], 0
mov ecx, dword [0x4ad1b4]
call fcn.0043da00
cmp eax, 0xffffffff
jne 0x403c9b
mov ecx, dword [0x4ad1b4]
test ecx, ecx
jne 0x403c55
push 0x1ea
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu___self_is_NULL_n
jmp 0x403c8d
mov edx, dword [ecx + 4]
mov eax, edx
sub eax, dword [ecx]
test eax, eax
jle 0x403c7e
mov byte [edx], 0
push dword [ecx]
push 0x1ea
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu____s_n
call fcn.004427f0
add esp, 0x10
jmp 0x403c95
push 0x1ea
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu_n
call fcn.004427f0
add esp, 0xc
inc dword [ebp - 0xc8]
lea ecx, [ebp - 0x90]
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x403ca2
mov eax, dword [str._friends]
mov dword [ecx], eax
mov eax, dword [0x493bb8]
mov dword [ecx + 4], eax
mov al, byte [0x493bbc]
mov byte [ecx + 8], al
mov eax, dword [ebp - 0xdc]
push 0x4ac2b4
push str.REPLACE_INTO___s____char_id____hotkey____type____itemskill_id____skill_lvl___VALUES
mov dword [ebp - 0xd8], eax
lea eax, [ebp - 0xdc]
push eax
push str.char_mmo_char_tosql
push 0x1f4
push str.D:_ragnarokbr_rathena_srccharchar.cpp
call fcn.00443060
mov edx, dword [ebp - 0xcc]
lea ebx, [esi + 0x1fb4]
add esp, 0x18
xor ecx, ecx
xor esi, esi
mov eax, dword [ebx]
cmp eax, dword [ebx + edx]
jne 0x403d17
mov eax, dword [ebx + 4]
cmp eax, dword [ebx + edx + 4]
je 0x403d7a
test ecx, ecx
je 0x403d3e
push 0x493af4
lea eax, [ebp - 0xdc]
mov edx, 0x1fa
push eax
push str.char_mmo_char_tosql
mov ecx, str.D:_ragnarokbr_rathena_srccharchar.cpp
call fcn.00443180
add esp, 0xc
movzx eax, word [ebx + 4]
push eax
push dword [ebx]
movzx eax, byte [ebx + 6]
push eax
push esi
push edi
push str.__d__u__u__u__u_
lea eax, [ebp - 0xdc]
push eax
push str.char_mmo_char_tosql
push 0x1fb
push str.D:_ragnarokbr_rathena_srccharchar.cpp
call fcn.00443060
mov edx, dword [ebp - 0xcc]
add esp, 0x28
mov ecx, 1
inc esi
add ebx, 8
cmp esi, 0x4c
jb 0x403d07
mov esi, dword [ebp - 0xf0]
mov edi, dword [ebp - 0xe8]
test ecx, ecx
je 0x403e61
mov eax, dword [ebp - 0xd8]
mov edx, dword [ebp - 0xdc]
mov byte [eax], 0
mov ecx, dword [0x4ad1b4]
call fcn.0043da00
cmp eax, 0xffffffff
jne 0x403e33
mov ecx, dword [0x4ad1b4]
test ecx, ecx
jne 0x403de3
push 0x202
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu___self_is_NULL_n
call fcn.004427f0
mov ebx, dword [ebp - 0xc8]
add esp, 0xc
inc ebx
jmp 0x403e67
mov edx, dword [ecx + 4]
mov eax, edx
sub eax, dword [ecx]
test eax, eax
jle 0x403e13
mov byte [edx], 0
push dword [ecx]
push 0x202
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu____s_n
call fcn.004427f0
mov ebx, dword [ebp - 0xc8]
add esp, 0x10
inc ebx
jmp 0x403e67
push 0x202
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu_n
call fcn.004427f0
mov ebx, dword [ebp - 0xc8]
add esp, 0xc
inc ebx
jmp 0x403e67
lea edx, [ebp - 0x90]
dec edx
nop word [eax + eax]
mov al, byte [edx + 1]
lea edx, [edx + 1]
test al, al
jne 0x403e40
mov eax, dword [str._hotkeys]
mov dword [edx], eax
mov eax, dword [0x493c38]
mov dword [edx + 4], eax
mov al, byte [0x493c3c]
mov byte [edx + 8], al
mov ebx, dword [ebp - 0xc8]
mov ecx, dword [ebp - 0xdc]
mov edx, str.D:_ragnarokbr_rathena_srccommon_strlib.cpp
push str.StringBuf_Destroy
push 0x42a
call fcn.004449e0
add esp, 8
cmp byte [ebp - 0x90], 0
je 0x403eb7
cmp dword [0x4a9e18], 0
je 0x403eb7
lea eax, [ebp - 0x90]
push eax
lea eax, [esi + 0xa9]
push eax
push dword [ebp - 0xe4]
push str.Saved_char__d____s:_s._n
call fcn.00442790
add esp, 0x10
test ebx, ebx
jne 0x403eca
push 0x2248
push esi
push edi
call fcn.00460ec0
add esp, 0xc
mov ebx, dword [ebp - 0xec]
test ebx, ebx
je 0x403ef5
or esi, 0xffffffff
mov eax, esi
lock xadd dword [ebx + 4], eax
jne 0x403ef5
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
lock xadd dword [ebx + 8], esi
dec esi
jne 0x403ef5
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0045f6f1
mov esp, ebp
pop ebp
ret