Function at 0x4023e0
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4879d5
mov eax, dword fs:[0]
push eax
sub esp, 0x20
push ebx
push esi
push edi
mov eax, dword [0x4a701c]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x1c], edx
mov eax, ecx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], eax
or ebx, 0xffffffff
cmp eax, ebx
jne 0x4025ed
push edx
push 0x4aaab4
push str.UPDATE___s__SET__online_0_WHERE__account_id__d
push dword [0x4ad1b4]
call fcn.0043d8e0
add esp, 0x10
cmp eax, ebx
jne 0x402460
mov ecx, dword [0x4ad1b4]
test ecx, ecx
jne 0x4025ad
push 0xa6
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu___self_is_NULL_n
call fcn.004427f0
add esp, 0xc
mov edi, dword [ebp - 0x14]
push dword [ebp - 0x1c]
mov edx, 0x4cf760
lea ecx, [ebp - 0x24]
call fcn.0040ff20
add esp, 4
mov dword [ebp - 4], 1
mov esi, dword [ebp - 0x24]
test esi, esi
je 0x4024d8
movzx eax, word [esi + 0x10]
cmp ax, 0xffff
jle 0x4024ab
cwde
lea ecx, [eax*8]
sub ecx, eax
mov eax, dword [ecx*4 + 0x4cf238]
test eax, eax
jle 0x4024ab
dec eax
mov dword [ecx*4 + 0x4cf238], eax
mov ecx, dword [esi + 0xc]
cmp ecx, 0xffffffff
je 0x4024c4
mov edx, 0x40af30
call fcn.0043f050
mov dword [esi + 0xc], 0xffffffff
cmp dword [esi + 4], edi
jne 0x4024d8
mov dword [esi + 4], 0xffffffff
mov word [esi + 0x10], bx
mov byte [esi + 0x12], 0
cmp edi, 0xffffffff
je 0x4024eb
test esi, esi
je 0x4024eb
cmp dword [esi + 8], 0xffffffff
jne 0x402576
mov edi, dword [0x4a7a90]
lea eax, [edi - 1]
cmp eax, 0xffe
ja 0x402576
cmp dword [edi*4 + 0x4b5420], 0
je 0x402576
mov eax, dword [edi*4 + 0x4b5420]
test byte [eax], 1
jne 0x402576
test edi, edi
je 0x402540
mov ecx, eax
mov eax, dword [ecx + 0x1c]
add eax, 6
cmp eax, dword [ecx + 0x14]
jbe 0x402540
push str.chlogif_send_setaccoffline
push 0x10b
push str.D:_ragnarokbr_rathena_srccharchar_logif.cpp
mov edx, 6
mov ecx, edi
call fcn.00440270
add esp, 0xc
mov eax, dword [edi*4 + 0x4b5420]
mov ecx, 0x272c
mov edx, 6
mov esi, dword [eax + 0x1c]
mov eax, dword [eax + 0xc]
mov word [esi + eax], cx
mov eax, dword [edi*4 + 0x4b5420]
mov ecx, dword [ebp - 0x1c]
mov esi, dword [eax + 0x1c]
mov eax, dword [eax + 0xc]
mov dword [esi + eax + 2], ecx
mov ecx, edi
call fcn.004403f0
mov esi, dword [ebp - 0x20]
test esi, esi
je 0x40259b
mov eax, ebx
lock xadd dword [esi + 4], eax
jne 0x40259b
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
lock xadd dword [esi + 8], ebx
dec ebx
jne 0x40259b
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ecx + 4]
mov eax, edx
sub eax, dword [ecx]
test eax, eax
jle 0x4025d9
mov byte [edx], 0
push dword [ecx]
push 0xa6
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu____s_n
call fcn.004427f0
add esp, 0x10
jmp 0x402460
push 0xa6
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu_n
jmp 0x402458
push eax
mov edx, 0x4cf740
lea ecx, [ebp - 0x24]
call fcn.0040ff20
add esp, 4
mov dword [ebp - 4], 0
mov eax, dword [ebp - 0x24]
test eax, eax
setne byte [ebp - 0xd]
test eax, eax
je 0x402617
mov edx, dword [eax + 0x68]
jmp 0x40261a
or edx, 0xffffffff
mov edi, dword [ebp - 0x14]
mov ecx, edi
call fcn.0042d240
cmp byte [ebp - 0xd], 0
je 0x4026f7
mov edx, edi
movzx eax, dl
xor eax, 0x811c9dc5
imul ecx, eax, 0x1000193
movzx eax, dh
xor ecx, eax
movzx eax, byte [ebp - 0x16]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [ebp - 0x15]
imul edx, ecx, 0x1000193
mov ecx, 0x4cf740
xor edx, eax
lea eax, [ebp - 0x18]
imul edi, edx, 0x1000193
push edi
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.00410560
mov esi, dword [eax + 4]
test esi, esi
je 0x4026f4
and edi, dword [0x4cf758]
mov eax, dword [0x4cf74c]
lea ecx, [eax + edi*8]
mov eax, dword [ecx]
cmp dword [ecx + 4], esi
jne 0x4026a8
cmp eax, esi
jne 0x4026a0
mov eax, dword [0x4cf744]
mov dword [ecx], eax
mov dword [ecx + 4], eax
jmp 0x4026b0
mov eax, dword [esi + 4]
mov dword [ecx + 4], eax
jmp 0x4026b0
cmp eax, esi
jne 0x4026b0
mov eax, dword [esi]
mov dword [ecx], eax
mov ecx, dword [esi]
dec dword [0x4cf748]
mov eax, dword [esi + 4]
mov dword [eax], ecx
mov eax, dword [esi + 4]
mov dword [ecx + 4], eax
mov edi, dword [esi + 0x10]
test edi, edi
je 0x4026e9
mov eax, ebx
lock xadd dword [edi + 4], eax
jne 0x4026e9
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
mov eax, ebx
lock xadd dword [edi + 8], eax
jne 0x4026e9
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
push 0x14
push esi
call fcn.0045fa95
add esp, 8
mov edi, dword [ebp - 0x14]
push edi
push 0x4aaab4
push str.UPDATE___s__SET__online_0_WHERE__char_id__d_LIMIT_1
push dword [0x4ad1b4]
call fcn.0043d8e0
add esp, 0x10
cmp eax, 0xffffffff
jne 0x402770
mov ecx, dword [0x4ad1b4]
test ecx, ecx
jne 0x402730
push 0xb1
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu___self_is_NULL_n
jmp 0x402768
mov edx, dword [ecx + 4]
mov eax, edx
sub eax, dword [ecx]
test eax, eax
jle 0x402759
mov byte [edx], 0
push dword [ecx]
push 0xb1
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu____s_n
call fcn.004427f0
add esp, 0x10
jmp 0x402770
push 0xb1
push str.D:_ragnarokbr_rathena_srccharchar.cpp
push str.at__s:_lu_n
call fcn.004427f0
add esp, 0xc
mov esi, dword [ebp - 0x20]
test esi, esi
je 0x402463
mov eax, ebx
lock xadd dword [esi + 4], eax
jne 0x402463
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
mov eax, ebx
lock xadd dword [esi + 8], eax
jne 0x402463
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
jmp 0x402463