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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x561f4a
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x7d8
push ebx
push esi
push edi
mov ebx, vtable.Xenesis2::Foundation::Memory::xEncryptData_int_.0
push 1
mov dword [esp + 0x48], ebx
call fcn.004c7160
mov ecx, eax
call fcn.0040ae20
push 1
lea ecx, [esp + 0x1c]
push ecx
xor edi, edi
push eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x24], edi
call fcn.004c7160
mov esi, eax
call fcn.0040ad80
mov dword [esp + 0x7ec], edi
push 1
mov dword [esp + 0x8c], ebx
call fcn.004c7160
mov ecx, eax
call fcn.0040ae20
push 1
lea edx, [esp + 0x1c]
push edx
push eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x24], edi
call fcn.004c7160
mov esi, eax
call fcn.0040ad80
mov byte [esp + 0x7ec], 1
push 1
mov dword [esp + 0x68], ebx
call fcn.004c7160
mov ecx, eax
call fcn.0040ae20
push 1
lea ecx, [esp + 0x1c]
push ecx
push eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x24], edi
call fcn.004c7160
mov esi, eax
call fcn.0040ad80
mov byte [esp + 0x7ec], 2
push 1
mov dword [esp + 0x58], ebx
call fcn.004c7160
mov ecx, eax
call fcn.0040ae20
push 1
lea edx, [esp + 0x1c]
push edx
push eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x24], edi
call fcn.004c7160
mov esi, eax
call fcn.0040ad80
mov byte [esp + 0x7ec], 3
push 1
mov dword [esp + 0x50], ebx
call fcn.004c7160
mov ecx, eax
call fcn.0040ae20
push 1
lea ecx, [esp + 0x1c]
push ecx
push eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x24], edi
call fcn.004c7160
mov esi, eax
call fcn.0040ad80
mov byte [esp + 0x7ec], 4
mov ebx, dword [0x87b40c]
mov eax, dword [ebx + 0x771f0]
cmp eax, edi
mov dword [esp + 0xc], edi
je 0x40ef22
push eax
push 1
lea edx, [esp + 0x18]
push 1
push edx
mov byte [esp + 0x20], 0
call fcn.0054ae73
mov eax, dword [0x87b40c]
mov ecx, dword [eax + 0x771f0]
mov edx, dword [0x87b3ac]
push ecx
push 4
add edx, 4
push 1
push edx
call fcn.0054ae73
mov eax, dword [0x87b40c]
mov ecx, dword [eax + 0x771f0]
push ecx
push 4
lea edx, [ebp + 8]
push 1
push edx
call fcn.0054ae73
mov eax, dword [0x87b40c]
mov ecx, dword [eax + 0x771f0]
push ecx
push 2
lea edx, [ebp + 0xc]
push 1
push edx
call fcn.0054ae73
mov eax, dword [0x87b40c]
mov ecx, dword [eax + 0x771f0]
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 0x10]
add esp, 0x40
push ecx
push edx
push 1
push eax
call fcn.0054ae73
mov ebx, dword [0x87b40c]
add esp, 0x10
mov esi, dword [ebp + 0x10]
xor eax, eax
mov ecx, 0x41
lea edi, [esp + 0x6d8]
rep stosd dword es:[edi], eax
movzx eax, word [ebp + 0xc]
cmp eax, 0x200e
jg 0x410184
je 0x41002c
cmp eax, 0x1050
jg 0x40f899
je case.0x40ef70.4116
sub eax, 0x1013
cmp eax, 0x2d
ja case.0x40ef70.4116
movzx ecx, byte [eax + 0x411f88]
jmp dword [ecx*4 + 0x411f6c]
mov dx, word [esi]
add esi, 2
test dx, dx
mov word [ebx + 0x1a548], dx
mov dword [esp + 0x30], 0
jbe 0x40f006
mov dword [esp + 0x14], 0x1a2c8
lea esp, [esp]
mov eax, dword [esp + 0x14]
lea edi, [eax + ebx - 0xa0]
mov eax, dword [esi]
call fcn.00416ce0
mov ecx, dword [0x87b40c]
mov ebx, dword [esp + 0x14]
mov eax, dword [esi + 4]
add esi, 4
lea edi, [ebx + ecx]
call fcn.00416ce0
mov edx, dword [0x87b40c]
mov eax, dword [esi + 4]
add esi, 4
lea edi, [ebx + edx + 0xa0]
call fcn.00416ce0
mov eax, dword [esp + 0x30]
add ebx, 8
mov dword [esp + 0x14], ebx
mov ebx, dword [0x87b40c]
movzx ecx, word [ebx + 0x1a548]
add esi, 4
inc eax
cmp eax, ecx
mov dword [esp + 0x30], eax
jl 0x40efa0
mov dx, word [esi]
add esi, 2
test dx, dx
mov word [ebx + 0x1a54a], dx
mov dword [esp + 0x14], esi
mov dword [esp + 0x30], 0
jbe case.0x40ef70.4116
mov dword [esp + 0xc], 0x19f08
mov eax, dword [esp + 0x14]
mov edi, dword [eax]
cmp edi, 0x13
jle 0x40f040
mov edi, 0x13
mov edx, dword [esp + 0xc]
mov eax, dword [edx + ebx + 4]
push 1
lea ecx, [esp + 0x1c]
push ecx
push eax
mov dword [esp + 0x24], edi
call fcn.004c7160
mov esi, eax
call fcn.0040ad80
mov ebx, dword [esp + 0x14]
mov eax, dword [ebx + 4]
mov edx, dword [0x87b40c]
add ebx, 4
push 1
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], eax
mov eax, dword [edx + edi*8 + 0x19fac]
push ecx
push eax
call fcn.004c7160
mov esi, eax
call fcn.0040ad80
mov eax, dword [ebx + 4]
mov edx, dword [0x87b40c]
add ebx, 4
push 1
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], eax
mov eax, dword [edx + edi*8 + 0x1a04c]
push ecx
push eax
call fcn.004c7160
mov esi, eax
call fcn.0040ad80
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0xc]
add ebx, 4
mov dword [esp + 0x14], ebx
mov ebx, dword [0x87b40c]
movzx ecx, word [ebx + 0x1a54a]
inc eax
add esi, 8
cmp eax, ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0xc], esi
jl 0x40f030
jmp case.0x40ef70.4116
mov edx, dword [ebp + 0x10]
mov esi, dword [edx]
push esi
mov dword [ebx + 0x77818], 1
call fcn.00541f50
push esi
push str.Send_Auth__d__n
call fcn.0046c4c0
add esp, 0xc
jmp case.0x40ef70.4116
mov ax, word [esi]
test ax, ax
je 0x40f243
movzx eax, ax
add esi, 2
test eax, eax
mov dword [esp + 0x14], esi
jle 0x40f2df
mov dword [esp + 0xc], eax
lea esp, [esp]
mov eax, dword [esp + 0x14]
mov ecx, eax
mov edx, dword [ecx]
mov dword [esp + 0x18], edx
mov edx, dword [ecx + 4]
mov dword [esp + 0x1c], edx
mov edx, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x20], edx
add eax, 0x10
mov dword [esp + 0x24], ecx
mov edx, eax
mov ecx, dword [edx]
mov dword [esp + 0x6c], ecx
mov ecx, dword [edx + 4]
mov edx, dword [edx + 8]
add eax, 0xc
push str.GET_ID_in_eve__
mov byte [esp + 0x2c], 0
mov dword [esp + 0x74], ecx
mov dword [esp + 0x78], edx
mov byte [esp + 0x7c], 0
mov dword [esp + 0x18], eax
call fcn.0046c4c0
add esp, 4
lea esi, [esp + 0x18]
lea edi, [esp + 0x6c]
mov eax, ebx
call fcn.0042b230
mov ecx, dword [0x87b40c]
mov eax, edi
push eax
add ecx, 0x7722c
push ecx
call fcn.0054fe36
add esp, 8
test eax, eax
jne 0x40f1e7
mov eax, dword [0x87b798]
mov edx, esi
push edx
mov edx, 0x10
call fcn.004477e0
push eax
call fcn.00447820
mov eax, dword [0x87b40c]
mov byte [eax + 0x7722c], 0
mov edx, dword [0x87b40c]
lea ecx, [esp + 0x6c]
push ecx
add edx, 0x77424
push edx
call fcn.0054fe36
add esp, 8
test eax, eax
jne 0x40f22e
lea eax, [esp + 0x18]
push eax
mov eax, dword [0x87b798]
mov edx, 0x10
call fcn.004477e0
push eax
call fcn.00447820
mov ebx, dword [0x87b40c]
mov byte [ebx + 0x77424], 0
jmp 0x40f234
mov ebx, dword [0x87b40c]
dec dword [esp + 0xc]
jne 0x40f140
jmp 0x40f2df
mov eax, dword [ebp + 0x10]
movzx eax, word [eax + 0xe]
mov ecx, dword [0x87b77c]
mov ecx, dword [ecx*4 + 0x87b380]
mov edx, dword [ecx]
push eax
mov eax, dword [0x87b798]
movzx eax, word [eax + 0x40a0]
push eax
call dword [edx + 0x10]
mov esi, dword [0x87b40c]
add esi, 0x7781c
push 0x36
xor cl, cl
call fcn.00413d90
mov eax, dword [0x87b77c]
add esp, 4
cmp eax, 4
jne 0x40f2df
mov bl, 1
mov edi, 0x2a
mov eax, 0x8ff808
call fcn.004c90a0
mov edi, 0x29
mov eax, 0x8ff808
call fcn.004c90a0
push 0
push 0x5d99b0
push 0x5d80f8
push 0
call fcn.004c75b0
mov ebx, 0x2d
mov edi, eax
call fcn.00403290
push eax
call fcn.0054a821
add esp, 0x14
test eax, eax
je 0x40f2df
mov esi, eax
call fcn.00500250
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
push ecx
push 0x8f6f90
call fcn.00404ea0
jmp case.0x40ef70.4116
mov ebx, dword [esi]
mov eax, dword [0x87b77c]
add esi, 4
cmp eax, 0xb
mov dword [esp + 0xc], ebx
mov dword [esp + 0x14], esi
jne 0x40f31d
test ebx, ebx
jg case.0x40ef70.4116
cmp ebx, 0xfffffffd
je case.0x40ef70.4116
xor eax, eax
mov byte [esp + 0x2d8], 0
mov ecx, 0xff
lea edi, [esp + 0x2d9]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
push 0x1770
push 0x87e094
stosb byte es:[edi], al
call fcn.004454c0
mov edx, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f350
lea edi, [esp + 0x2d8]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f361
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
lea eax, [ebx + 4]
cmp eax, 4
rep movsb byte es:[edi], byte [esi]
ja case.default.0x40f385
jmp dword [eax*4 + 0x411fb8]
push 0x1772
push 0x87e094
call fcn.004454c0
mov edx, eax
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f3a0
lea edi, [esp + 0x2d8]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f3b1
jmp 0x40f4a9
push 0x1773
push 0x87e094
call fcn.004454c0
mov edx, eax
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f3d0
lea edi, [esp + 0x2d8]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f3e1
jmp 0x40f4a9
push 0x1774
push 0x87e094
call fcn.004454c0
mov edx, eax
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f400
lea edi, [esp + 0x2d8]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f411
jmp 0x40f4a9
push 0x1775
push 0x87e094
call fcn.004454c0
mov edx, eax
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f430
lea edi, [esp + 0x2d8]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f441
jmp 0x40f4a9
push 0x1776
push 0x87e094
call fcn.004454c0
mov edx, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f460
lea edi, [esp + 0x2d8]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f471
jmp 0x40f4a9
push 0x1771
push 0x87e094
call fcn.004454c0
mov edx, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f490
lea edi, [esp + 0x2d8]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f4a1
mov ebx, dword [esp + 0x14]
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov al, byte [ebx]
and ecx, 3
cmp al, 0x20
rep movsb byte es:[edi], byte [esi]
je 0x40f5de
push 0x1777
push 0x87e094
call fcn.004454c0
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f4d8
lea edi, [esp + 0x2d8]
sub eax, edx
dec edi
lea esp, [esp]
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f4f0
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov al, byte [ebx]
and ecx, 3
cmp al, 0x54
rep movsb byte es:[edi], byte [esi]
jne 0x40f54e
cmp byte [ebx + 1], 0x48
jne 0x40f54e
push 0x177a
push 0x87e094
call fcn.004454c0
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f525
lea edi, [esp + 0x2d8]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f536
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp byte [ebx], 0x46
jne 0x40f5de
cmp byte [ebx + 1], 0x4d
jne 0x40f599
push 0x1778
push 0x87e094
call fcn.004454c0
mov edx, eax
mov edi, edi
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f570
lea edi, [esp + 0x2d8]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f581
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp byte [ebx], 0x46
jne 0x40f5de
cmp byte [ebx + 1], 0x44
jne 0x40f5de
push 0x1779
push 0x87e094
call fcn.004454c0
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f5b5
lea edi, [esp + 0x2d8]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f5c6
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov al, byte [ebx + 2]
add ebx, 2
test al, al
mov dword [esp + 0x14], ebx
je 0x40f736
push 0x177b
push 0x87e094
call fcn.004454c0
mov esi, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f601
lea edi, [esp + 0x2d8]
sub eax, esi
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f612
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ebx, dword [esp + 0x14]
mov edx, dword [ebx]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor eax, eax
mov ecx, 0x3f
lea edi, [esp + 0xd9]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0xd8]
push eax
mov dword [esp + 0xdc], edx
call fcn.0054aafe
mov cx, word [ebx + 4]
lea edx, [esp + 0xdc]
push edx
mov esi, eax
mov byte [esp + 0xe2], 0
mov word [esp + 0xe0], cx
call fcn.0054aafe
mov edi, eax
mov ax, word [ebx + 6]
lea ecx, [esp + 0xe0]
push ecx
mov word [esp + 0xe4], ax
call fcn.0054aafe
mov edx, dword [esp + 0x20]
mov ebx, eax
mov ax, word [edx + 8]
lea ecx, [esp + 0xe4]
push ecx
mov word [esp + 0xe8], ax
call fcn.0054aafe
mov edx, dword [esp + 0x24]
mov dword [esp + 0x28], eax
mov ax, word [edx + 0xa]
lea ecx, [esp + 0xe8]
push ecx
mov word [esp + 0xec], ax
call fcn.0054aafe
mov edx, dword [esp + 0x2c]
add esp, 0x14
push eax
push edx
push ebx
push edi
push esi
push 0x177c
push 0x87e094
call fcn.004454c0
push eax
lea eax, [esp + 0xf0]
push eax
call fcn.00548ff0
lea eax, [esp + 0xf4]
add esp, 0x1c
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40f708
lea edi, [esp + 0x2d8]
sub eax, ecx
mov esi, ecx
dec edi
jmp 0x40f720
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f720
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x14]
mov ebx, dword [ecx + 0xc]
test ebx, ebx
je 0x40f7f9
push 0x177e
push 0x87e094
call fcn.004454c0
mov esi, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40f756
lea edi, [esp + 0x2d8]
sub eax, esi
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f767
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor edx, edx
mov ecx, 0xe10
mov eax, ebx
div ecx
mov edi, 0x3c
mov esi, eax
mov ecx, edx
xor edx, edx
mov eax, ebx
div edi
mov eax, 0x88888889
push edx
mul ecx
shr edx, 5
push edx
push esi
push 0x177f
push 0x87e094
call fcn.004454c0
push eax
lea edx, [esp + 0xe8]
push edx
call fcn.00548ff0
lea eax, [esp + 0xec]
add esp, 0x14
mov ecx, eax
lea ecx, [ecx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40f7d0
lea edi, [esp + 0x2d8]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x40f7e3
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0xc]
test eax, eax
jg 0x40f81d
cmp eax, 0xfffffffd
je 0x40f81d
mov al, 1
lea esi, [esp + 0x2d8]
push eax
call fcn.00413e60
add esp, 4
jmp case.0x40ef70.4116
xor al, al
lea esi, [esp + 0x2d8]
push eax
call fcn.00413e60
add esp, 4
jmp case.0x40ef70.4116
mov esi, dword [esi]
test esi, esi
lea edi, [ebx + 0x774cc]
je 0x40f865
mov al, 1
call fcn.00416f20
mov eax, dword [0x5d81dc]
mov edi, dword [0x87b40c]
imul eax, esi
add edi, 0x774d4
call fcn.00416ce0
jmp case.0x40ef70.4116
xor al, al
call fcn.00416f20
mov edi, dword [0x87b40c]
add edi, 0x774d4
xor eax, eax
call fcn.00416ce0
jmp case.0x40ef70.4116
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
lea edi, [ebx + 0x1a574]
call fcn.00416ce0
jmp case.0x40ef70.4116
cmp eax, 0x1ff8
jg 0x40fd62
je 0x40fd51
sub eax, 0x1060
je 0x40fcef
sub eax, 0x19
je 0x40fcd4
sub eax, 0x18
jne case.0x40ef70.4116
cmp byte [esi], 0
jne 0x40fca2
mov eax, dword [0x87b77c]
cmp eax, 9
jne 0x40f930
mov esi, dword [0x87b798]
push 0x3200
call fcn.00446700
mov eax, dword [0x87b798]
mov esi, dword [eax + 0x4098]
mov ecx, dword [0x87b40c]
mov dl, byte [ecx + 0x24328]
mov byte [esi + eax + 0x98], dl
mov esi, dword [eax + 0x4098]
inc esi
mov dword [eax + 0x4098], esi
mov cl, byte [ecx + 0x24329]
mov edx, esi
mov byte [edx + eax + 0x98], cl
inc dword [eax + 0x4098]
push eax
jmp 0x411d24
cmp eax, 0xd
jne 0x40f9a1
mov esi, dword [0x87b798]
push 0x3200
call fcn.00446700
mov eax, dword [0x87b798]
mov esi, dword [eax + 0x4098]
mov ecx, dword [0x87b40c]
mov dl, byte [ecx + 0x24328]
mov byte [esi + eax + 0x98], dl
mov edi, dword [eax + 0x4098]
inc edi
mov dword [eax + 0x4098], edi
mov cl, byte [ecx + 0x24329]
mov edx, edi
mov byte [edx + eax + 0x98], cl
mov esi, dword [eax + 0x4098]
inc esi
push eax
mov dword [eax + 0x4098], esi
call fcn.00446890
push 3
call fcn.00413940
add esp, 4
jmp case.0x40ef70.4116
mov al, byte [esi + 2]
add esi, 2
cmp al, 0xfe
je 0x40f9af
cmp al, 0x10
jbe 0x40f9f5
cmp al, 0xff
je 0x40f9f5
mov word [ebx + 0x24328], 0xffff
xor esi, esi
jmp 0x40f9d0
mov ebx, dword [0x87b40c]
jmp 0x40f9d0
lea edi, [esi + ebx + 0x1a58c]
xor eax, eax
call fcn.00416ce0
add esi, 8
cmp esi, 0x30
jl 0x40f9c0
push 0xd
call fcn.00413940
add esp, 4
jmp case.0x40ef70.4116
inc esi
mov byte [ebx + 0x24328], al
mov al, byte [esi]
cmp al, 0xfe
je 0x40fa06
cmp al, 0x10
jbe 0x40fa45
cmp al, 0xff
je 0x40fa45
mov word [ebx + 0x24328], 0xffff
xor esi, esi
jmp 0x40fa20
mov ebx, dword [0x87b40c]
lea ecx, [ecx]
lea edi, [esi + ebx + 0x1a58c]
xor eax, eax
call fcn.00416ce0
add esi, 8
cmp esi, 0x30
jl 0x40fa17
push 0xd
call fcn.00413940
add esp, 4
jmp case.0x40ef70.4116
mov byte [ebx + 0x24329], al
mov al, 7
inc esi
mov byte [esp + 0x38], 1
mov byte [esp + 0x39], 2
mov byte [esp + 0x3a], 6
mov byte [esp + 0x3b], al
mov byte [esp + 0x3c], 0xa
mov byte [esp + 0x3d], 0xb
mov byte [esp + 0x18], 0
mov byte [esp + 0x19], 1
mov byte [esp + 0x1a], 2
mov byte [esp + 0x1b], 3
mov byte [esp + 0x1c], al
mov byte [esp + 0x1d], 0xf
mov dword [esp + 0x14], 0
mov dword [esp + 0x30], 0x1a58c
jmp 0x40faa0
mov ebx, dword [0x87b40c]
mov ecx, dword [esp + 0x14]
movzx eax, byte [esi]
lea edi, [ebx + ecx*8 + 0x1a58c]
call fcn.00416ce0
mov edx, dword [0x87b40c]
mov eax, dword [esp + 0x14]
lea ecx, [edx + eax*8 + 0x1a58c]
inc esi
call fcn.0042c6d0
cmp eax, 0xff
mov ebx, dword [esp + 0x30]
jne 0x40fb27
mov ecx, dword [esp + 0x14]
mov edx, dword [0x87b40c]
movzx eax, byte [esi]
inc ecx
add ebx, 8
lea edi, [edx + ecx*8 + 0x1a58c]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x30], ebx
call fcn.00416ce0
inc esi
xor edi, edi
lea ecx, [ecx]
mov eax, dword [0x87b40c]
lea ecx, [ebx + eax]
call fcn.0042c6d0
movzx ecx, byte [esp + edi + 0x38]
cmp eax, ecx
je 0x40fb1c
inc edi
cmp edi, 6
jl 0x40fb00
cmp edi, 6
je 0x40fb6e
mov ebx, dword [esp + 0x30]
jmp 0x40fb52
xor edi, edi
lea esp, [esp]
mov edx, dword [0x87b40c]
lea ecx, [ebx + edx]
call fcn.0042c6d0
movzx ecx, byte [esp + edi + 0x18]
cmp eax, ecx
je 0x40fb4d
inc edi
cmp edi, 6
jl 0x40fb30
cmp edi, 6
je 0x40fb6e
mov edx, dword [esp + 0x14]
add ebx, 8
inc edx
cmp ebx, 0x1a5bc
mov dword [esp + 0x14], edx
mov dword [esp + 0x30], ebx
jl 0x40fa9a
cmp dword [esp + 0x14], 6
je 0x40fbf3
push 0xd
call fcn.00413940
add esp, 4
lea ecx, [esp + 0x4c]
mov byte [esp + 0x7ec], 3
call fcn.00416c70
lea ecx, [esp + 0x54]
mov byte [esp + 0x7ec], 2
call fcn.00416c70
lea ecx, [esp + 0x64]
mov byte [esp + 0x7ec], 1
call fcn.00416c70
lea ecx, [esp + 0x88]
mov byte [esp + 0x7ec], 0
call fcn.00416c70
lea ecx, [esp + 0x44]
mov dword [esp + 0x7ec], 0xffffffff
call fcn.00416c70
mov ecx, dword [esp + 0x7e4]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor esi, esi
jmp 0x40fc00
mov eax, dword [0x87b40c]
lea ecx, [esi + eax + 0x1a58c]
lea edi, [esi + eax + 0x1a5bc]
call fcn.00416c90
add esi, 8
cmp esi, 0x30
jl 0x40fc00
mov eax, dword [0x87b77c]
cmp eax, 2
je 0x40fc2f
cmp eax, 0xd
jne 0x40fc43
push 3
mov dword [0x5d81f8], 0xffffffff
call fcn.00413940
add esp, 4
mov esi, dword [0x87b798]
push 0x3200
call fcn.00446700
mov eax, dword [0x87b798]
mov esi, dword [eax + 0x4098]
mov ecx, dword [0x87b40c]
mov dl, byte [ecx + 0x24328]
mov byte [esi + eax + 0x98], dl
mov esi, dword [eax + 0x4098]
inc esi
mov dword [eax + 0x4098], esi
mov cl, byte [ecx + 0x24329]
mov edx, esi
mov byte [edx + eax + 0x98], cl
mov edx, dword [eax + 0x4098]
inc edx
push eax
mov dword [eax + 0x4098], edx
call fcn.00446890
jmp 0x40fcbd
push 0
push 0xc3502
push 0x87e094
call fcn.004454c0
mov esi, eax
call fcn.00413e60
add esp, 4
mov edi, dword [0x87b77c]
xor bl, bl
mov eax, 0x8ff808
call fcn.004c90a0
jmp case.0x40ef70.4116
cmp word [esi], 0
jne case.0x40ef70.4116
push 0x47
xor cl, cl
call fcn.00413c30
add esp, 4
jmp case.0x40ef70.4116
mov edx, dword [ebp + 0x10]
mov eax, dword [edx]
lea edi, [ebx + 0x23f88]
call fcn.00416ce0
mov ecx, dword [0x87b40c]
add ecx, 0x23f88
call fcn.0042c6d0
cmp eax, 1
jne 0x40fd26
push 0x46
xor cl, cl
call fcn.00413c30
add esp, 4
jmp case.0x40ef70.4116
mov ecx, dword [0x87b40c]
add ecx, 0x23f88
call fcn.0042c6d0
cmp eax, 3
jne case.0x40ef70.4116
push 0x52
xor cl, cl
call fcn.00413c30
add esp, 4
jmp case.0x40ef70.4116
push 0x45
mov cl, 1
call fcn.00413c30
add esp, 4
jmp case.0x40ef70.4116
sub eax, 0x1ffa
je 0x40fff4
sub eax, 7
jne case.0x40ef70.4116
cmp word [esi], 0
jne case.0x40ef70.4116
push str.Recv_JoinChannel__n
call fcn.0046c4c0
add esp, 4
mov edx, ebx
mov dword [ebx + 0x24044], 0xffffffff
call fcn.00420dc0
call fcn.00420580
mov eax, 0x8fdbb0
call fcn.0044dd10
mov ebx, dword [ebp + 0x10]
movzx eax, word [ebx + 2]
mov esi, dword [0x87b40c]
add ebx, 2
add ebx, 3
mov dword [esi + 0x1fed0], eax
mov cl, byte [ebx]
mov al, cl
inc ebx
test al, al
mov byte [esi + 0x1fed4], cl
mov dword [esp + 0xc], 0
jbe 0x40fecc
mov al, byte [ebx]
movzx eax, al
mov edx, eax
imul edx, edx, 0xd
mov byte [eax + esi + 0x1fed5], 1
lea ecx, [edx + esi]
inc ebx
mov dword [esp + 0x18], ecx
add ecx, 0x1ffd5
mov edx, ebx
mov edi, dword [edx]
mov dword [ecx], edi
mov edi, dword [edx + 4]
mov dword [ecx + 4], edi
mov edx, dword [edx + 8]
mov dword [ecx + 8], edx
mov ecx, dword [esp + 0x18]
add ebx, 0xc
mov byte [ecx + 0x1ffe1], 0
mov dl, byte [ebx]
xor ecx, ecx
test dl, dl
sete cl
inc ebx
lea edx, [esi + eax*8]
add ebx, 8
mov dword [esi + eax*4 + 0x21cd8], ecx
lea ecx, [eax + edx]
mov edx, dword [ebx - 8]
mov dword [ecx + 0x224d8], edx
mov edx, dword [ebx - 4]
mov dword [ecx + 0x224dc], edx
mov dl, byte [ecx + 0x224df]
test dl, dl
jns 0x40fe68
mov dl, byte [ecx + 0x224de]
test dl, dl
js 0x40fe68
mov byte [ecx + 0x224df], 0
mov byte [ecx + 0x224e0], 0
mov cx, word [ebx]
add cx, 5
mov word [esi + eax*2 + 0x22dd8], cx
mov dx, word [ebx + 2]
add ebx, 2
add dx, 5
add ebx, 2
mov word [esi + eax*2 + 0x22fd8], dx
mov cx, word [ebx]
add cx, 5
add ebx, 2
mov word [esi + eax*2 + 0x235d8], cx
mov dx, word [ebx]
mov word [esi + eax*2 + 0x237d8], dx
mov eax, dword [esp + 0xc]
movzx ecx, byte [esi + 0x1fed4]
add ebx, 2
inc eax
cmp eax, ecx
mov dword [esp + 0xc], eax
jl 0x40fde1
movzx edx, byte [esi + 0x1fed4]
imul edx, edx, 0x1a
mov eax, 0xfffffffa
sub eax, edx
mov edx, dword [ebp + 8]
add edx, eax
xor eax, eax
mov byte [esp + 0xd8], 0
mov ecx, 0x7f
lea edi, [esp + 0xd9]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov dword [ebp + 8], edx
mov ecx, dword [ebp + 8]
stosb byte es:[edi], al
xor edx, edx
xor eax, eax
test ecx, ecx
mov dword [esp + 0xc], edx
jle 0x40ff6d
nop
mov cl, byte [edx + ebx]
cmp cl, 0xa
jne 0x40ff59
lea eax, [esp + 0xd8]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40ff22
push 0
push 0
lea ecx, [esp + 0xe0]
push ecx
push 0
push 0
push 2
sub eax, edx
push esi
call fcn.00420660
mov edx, dword [esp + 0xc]
mov ecx, 0x80
xor eax, eax
lea edi, [esp + 0xd8]
rep stosd dword es:[edi], eax
jmp 0x40ff61
mov byte [esp + eax + 0xd8], cl
inc eax
mov ecx, dword [ebp + 8]
inc edx
cmp edx, ecx
mov dword [esp + 0xc], edx
jl 0x40ff10
lea eax, [esp + 0xd8]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40ff77
push 0
push 0
sub eax, edx
lea edx, [esp + 0xe0]
push edx
push 0
push 0
push 2
push esi
call fcn.00420660
cmp dword [0x87b77c], 3
jne case.0x40ef70.4116
push 0
push 0x5d99f0
push 0x5d80f8
push 0
call fcn.004c75b0
mov ebx, 0x1f
mov edi, eax
call fcn.00403290
push eax
call fcn.0054a821
mov edi, eax
add esp, 0x14
test edi, edi
je case.0x40ef70.4116
call fcn.004fe7c0
mov eax, dword [0x87b40c]
mov esi, dword [eax + 0x1fed0]
add esi, 0x78
call fcn.004fe860
jmp case.0x40ef70.4116
mov ecx, dword [ebp + 0x10]
mov eax, 0x88888889
mul dword [ecx]
shr edx, 5
push edx
lea edx, [esp + 0x6dc]
push str._:__dMinute
push edx
call fcn.00548ff0
push 0x5b
lea esi, [esp + 0x6e8]
xor cl, cl
call fcn.00413d90
add esp, 0x10
jmp case.0x40ef70.4116
mov eax, dword [0x87b77c]
cmp eax, 3
jne 0x410044
cmp dword [0x87b374], 3
je 0x41005a
jmp case.0x40ef70.4116
cmp eax, 7
jne case.0x40ef70.4116
cmp dword [0x87b374], 4
jne case.0x40ef70.4116
push str.Recv_Channel_Insert_n
call fcn.0046c4c0
mov cl, byte [esi]
movzx edi, cl
mov ecx, edi
imul ecx, ecx, 0xd
mov byte [edi + ebx + 0x1fed5], 1
add ecx, ebx
lea eax, [esi + 1]
mov dword [esp + 0x1c], ecx
add ecx, 0x1ffd5
mov edx, eax
mov esi, dword [edx]
mov dword [ecx], esi
mov esi, dword [edx + 4]
mov dword [ecx + 4], esi
mov edx, dword [edx + 8]
mov dword [ecx + 8], edx
mov ecx, dword [esp + 0x1c]
add eax, 0xc
mov byte [ecx + 0x1ffe1], 0
mov dl, byte [eax]
xor ecx, ecx
add esp, 4
test dl, dl
sete cl
inc eax
lea edx, [ebx + edi*8]
add eax, 8
mov dword [ebx + edi*4 + 0x21cd8], ecx
lea ecx, [edi + edx]
mov edx, dword [eax - 8]
mov dword [ecx + 0x224d8], edx
mov edx, dword [eax - 4]
mov dword [ecx + 0x224dc], edx
mov dl, byte [ecx + 0x224df]
test dl, dl
jns 0x4100ef
mov dl, byte [ecx + 0x224de]
test dl, dl
js 0x4100ef
mov byte [ecx + 0x224df], 0
mov byte [ecx + 0x224e0], 0
mov cx, word [eax]
add cx, 5
mov word [ebx + edi*2 + 0x22dd8], cx
mov dx, word [eax + 2]
add eax, 2
add dx, 5
mov word [ebx + edi*2 + 0x22fd8], dx
mov cx, word [eax + 2]
add eax, 2
add cx, 5
mov word [ebx + edi*2 + 0x235d8], cx
mov dx, word [eax + 2]
add eax, 2
push 0
mov word [ebx + edi*2 + 0x237d8], dx
mov dl, byte [ebx + 0x1fed4]
push 0x5d99cc
inc dl
push 0x5d80f8
push 0
mov byte [ebx + 0x1fed4], dl
call fcn.004c75b0
mov ebx, 0x24
mov edi, eax
call fcn.00403290
push eax
call fcn.0054a821
add esp, 0x14
test eax, eax
je case.0x40ef70.4116
mov ecx, eax
call fcn.004fb6c0
jmp case.0x40ef70.4116
cmp eax, 0x5001
jg 0x41135f
je 0x4112e6
cmp eax, 0x3400
jg 0x410a3c
je 0x4109e7
sub eax, 0x200f
je 0x4109a3
sub eax, 0x1001
je 0x410604
sub eax, 0x10
jne case.0x40ef70.4116
mov esi, dword [ebp + 0x10]
movzx eax, byte [esi]
lea ecx, [ebx + 0x25e9c]
call fcn.00419320
movzx edi, byte [esi]
mov al, byte [edi + ebx + 0x25e34]
test al, al
je 0x410204
mov byte [edi + ebx + 0x25e34], 0
mov eax, dword [ebx + edi*4 + 0x7767c]
push eax
mov ecx, 0x75220c
call fcn.0052bc20
mov ebx, dword [0x87b40c]
mov al, byte [edi + ebx + 0x25e2c]
test al, al
je 0x41022f
mov byte [edi + ebx + 0x25e2c], 0
mov ecx, dword [ebx + edi*4 + 0x7765c]
push ecx
mov ecx, 0x75220c
call fcn.0052bc20
mov ebx, dword [0x87b40c]
mov eax, dword [0x87b77c]
cmp eax, 3
jne 0x410427
mov cl, byte [ebx + 0x240ed]
mov al, byte [0x87b7d2]
dec cl
cmp al, 1
mov byte [ebx + 0x240ed], cl
movzx edx, byte [esi]
mov byte [edx + ebx + 0x24342], 0
jne 0x410271
movzx eax, byte [esi]
lea edi, [ebx + eax*8 + 0x28eb4]
or eax, 0xffffffff
call fcn.00416ce0
mov ebx, dword [0x87b77c]
movzx edx, byte [esi]
cmp ebx, 0xb
sete cl
mov eax, 0x8fdbb0
push ecx
push edx
call fcn.0044de50
mov ebx, dword [0x87b40c]
mov eax, dword [ebx + 0x768c4]
test eax, eax
je 0x410411
mov dword [esp + 0x30], 0
jle 0x410411
mov edi, edi
mov eax, dword [esp + 0x30]
lea ecx, [ebx + 0x768c0]
call fcn.00419010
mov edi, dword [eax]
mov esi, dword [0x87b40c]
mov edx, edi
mov dword [esp + 0x18], edi
call fcn.00420d20
test al, al
je 0x4103f4
mov ecx, edi
call fcn.0042b920
mov ebx, 0xc303
mov esi, 0x8fdbb0
call fcn.0044d740
mov eax, dword [0x8fe724]
mov esi, dword [0x87b3ac]
mov edx, edi
mov byte [eax + 0x8fe524], dl
mov eax, dword [0x8fe724]
inc eax
mov dword [0x8fe724], eax
add esi, 0x12b8
mov ecx, 0x10
lea edi, [eax + 0x8fe524]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [0x8fe724]
add ecx, 0x40
cmp edx, 0xe
mov dword [0x8fe724], ecx
jne 0x4103a7
mov ecx, dword [0x87b40c]
mov ecx, dword [ecx + 0x26e44]
add ecx, 0x2a4
call fcn.00523700
test al, al
jne 0x41036d
mov edx, dword [0x87b40c]
mov edi, dword [edx + 0x26e44]
add edi, 0x2a4
mov al, 1
call fcn.00416f20
mov eax, dword [0x87b40c]
mov edi, dword [eax + 0x26e44]
push 0
call fcn.004652d0
mov ecx, dword [0x8fe724]
mov word [ecx + 0x8fe524], ax
mov ecx, dword [0x8fe724]
mov eax, dword [0x87b40c]
add ecx, 2
push 0
mov dword [0x8fe724], ecx
call fcn.004235f0
push 0x8fdbb0
or ecx, 0xffffffff
call fcn.0044d920
mov edi, dword [0x87b40c]
mov esi, dword [esp + 0x30]
add edi, 0x768c0
mov ebx, 1
mov edx, esi
call fcn.00417cb0
mov ebx, dword [0x87b40c]
mov eax, dword [ebx + 0x768c4]
dec esi
test eax, eax
mov dword [esp + 0x30], esi
jne 0x4103fa
push 0xc302
mov esi, 0x8fdbb0
call fcn.0044e010
mov ebx, dword [0x87b40c]
mov eax, dword [esp + 0x30]
mov ecx, dword [ebx + 0x768c4]
inc eax
cmp eax, ecx
mov dword [esp + 0x30], eax
jl 0x4102b0
mov eax, dword [0x87b77c]
cmp eax, 3
jne 0x410427
cmp dword [0x87b374], eax
je case.0x40ef70.4116
mov dl, byte [ebx + 0x240ed]
mov esi, dword [ebp + 0x10]
dec dl
cmp eax, 9
mov byte [ebx + 0x240ed], dl
movzx edx, byte [esi]
mov byte [edx + ebx + 0x24342], 0
jne 0x410463
cmp byte [0x87b7d2], 1
jne 0x410463
movzx eax, byte [esi]
lea edi, [ebx + eax*8 + 0x28eb4]
or eax, 0xffffffff
call fcn.00416ce0
mov ebx, dword [0x87b77c]
movzx edx, byte [esi]
cmp ebx, 0xb
sete cl
mov eax, 0x8fdbb0
push ecx
push edx
call fcn.0044de50
mov ecx, dword [0x87b40c]
mov eax, dword [ecx + 0x768c4]
test eax, eax
je case.0x40ef70.4116
xor edx, edx
test eax, eax
mov dword [esp + 0x30], edx
jle case.0x40ef70.4116
add ecx, 0x768c0
mov eax, edx
call fcn.00419010
mov edi, dword [eax]
mov esi, dword [0x87b40c]
mov edx, edi
mov dword [esp + 0x18], edi
call fcn.00420d20
test al, al
je 0x4105e2
mov ecx, edi
call fcn.0042b920
mov ebx, 0xc303
mov esi, 0x8fdbb0
call fcn.0044d740
mov eax, dword [0x8fe724]
mov esi, dword [0x87b3ac]
mov edx, edi
mov byte [eax + 0x8fe524], dl
mov eax, dword [0x8fe724]
inc eax
mov dword [0x8fe724], eax
add esi, 0x12b8
mov ecx, 0x10
lea edi, [eax + 0x8fe524]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [0x8fe724]
add ecx, 0x40
cmp edx, 0xe
mov dword [0x8fe724], ecx
jne 0x410595
mov ecx, dword [0x87b40c]
mov ecx, dword [ecx + 0x26e44]
add ecx, 0x2a4
call fcn.00523700
test al, al
jne 0x41055b
mov edx, dword [0x87b40c]
mov edi, dword [edx + 0x26e44]
add edi, 0x2a4
mov al, 1
call fcn.00416f20
mov eax, dword [0x87b40c]
mov edi, dword [eax + 0x26e44]
push 0
call fcn.004652d0
mov ecx, dword [0x8fe724]
mov word [ecx + 0x8fe524], ax
mov ecx, dword [0x8fe724]
mov eax, dword [0x87b40c]
add ecx, 2
push 0
mov dword [0x8fe724], ecx
call fcn.004235f0
push 0x8fdbb0
or ecx, 0xffffffff
call fcn.0044d920
mov edi, dword [0x87b40c]
mov esi, dword [esp + 0x30]
add edi, 0x768c0
mov ebx, 1
mov edx, esi
call fcn.00417cb0
mov edx, dword [0x87b40c]
mov eax, dword [edx + 0x768c4]
dec esi
test eax, eax
mov dword [esp + 0x30], esi
jne 0x4105e2
push 0xc302
mov esi, 0x8fdbb0
call fcn.0044e010
mov edx, dword [esp + 0x30]
mov ecx, dword [0x87b40c]
mov eax, dword [ecx + 0x768c4]
inc edx
cmp edx, eax
mov dword [esp + 0x30], edx
jl 0x4104a0
jmp case.0x40ef70.4116
mov eax, dword [0x87b77c]
cmp eax, 3
je 0x41063c
cmp eax, 9
jne 0x41061c
cmp dword [0x87b374], 9
jmp 0x410628
cmp eax, 0xb
jne 0x41062a
cmp dword [0x87b374], 0xb
je 0x41063c
push str._n_n_n_n
call fcn.0046c4c0
add esp, 4
jmp case.0x40ef70.4116
mov eax, 0x8fdbb0
call fcn.0044dd60
push str.Recv_Room_Insert_n
call fcn.0046c4c0
mov esi, dword [ebp + 0x10]
mov al, byte [esi]
mov edi, dword [0x87b40c]
movzx ebx, al
add esp, 4
lea ecx, [edi + 0x25e9c]
mov eax, ebx
inc esi
call fcn.00419300
mov ecx, esi
mov edx, dword [ecx]
lea eax, [ebx + ebx*4]
shl eax, 2
mov dword [esp + 0x18], eax
lea eax, [eax + edi + 0x24165]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov ecx, dword [ecx + 8]
mov edx, dword [esp + 0x18]
mov dword [eax + 8], ecx
mov byte [edx + edi + 0x24171], 0
mov cl, byte [esi + 0xc]
add esi, 0xc
xor eax, eax
test cl, cl
mov ecx, dword [esi + 1]
sete al
inc esi
mov dword [edi + ebx*4 + 0x24208], ecx
mov dx, word [esi + 4]
add esi, 4
mov word [edi + ebx*2 + 0x24248], dx
add esi, 2
add esi, 4
mov dword [esp + 0x30], eax
mov eax, dword [esi - 4]
mov dword [edi + ebx*4 + 0x24228], eax
mov cx, word [esi]
mov word [edi + ebx*2 + 0x24258], cx
mov dl, byte [esi + 2]
add esi, 2
mov byte [edi + ebx*2 + 0x2432a], dl
mov al, byte [esi + 1]
inc esi
mov byte [edi + ebx*2 + 0x2432b], al
mov cl, byte [esi + 1]
inc esi
mov byte [ebx + edi + 0x2433a], cl
mov byte [ebx + edi + 0x24342], 1
mov ecx, dword [esi + 1]
inc esi
lea edx, [edi + ebx*8]
lea eax, [ebx + edx]
mov dword [eax + 0x2411d], ecx
mov edx, dword [esi + 4]
mov cl, byte [eax + 0x224df]
test cl, cl
mov dword [eax + 0x24121], edx
mov byte [eax + 0x24125], 0
jns 0x41074a
mov cl, byte [eax + 0x224de]
test cl, cl
js 0x41074a
mov byte [eax + 0x224df], 0
mov ax, word [esi + 8]
add esi, 8
add esi, 2
add ax, 5
mov word [edi + ebx*2 + 0x2434a], ax
mov cx, word [esi]
add cx, 5
add esi, 2
mov word [edi + ebx*2 + 0x2435a], cx
mov dx, word [esi]
add esi, 2
add dx, 5
mov word [edi + ebx*2 + 0x2437a], dx
mov ax, word [esi]
mov word [edi + ebx*2 + 0x2436a], ax
mov cl, byte [edi + 0x240ed]
add esi, 2
inc cl
mov byte [edi + 0x240ed], cl
movzx ecx, word [esi]
add esi, 2
mov dword [esp + 0x18], ecx
xor eax, eax
lea esp, [esp]
cmp eax, 3
jne 0x4107c5
lea ecx, [ebx*4 + 0x12134]
mov word [edi + ecx*2 + 6], 0x8000
jmp 0x4107de
mov edx, dword [esp + 0x30]
neg edx
sbb edx, edx
and edx, 0x8000
lea ecx, [eax + ebx*4 + 0x12134]
mov word [edi + ecx*2], dx
lea edx, [eax + ebx*4 + 0x90aa]
inc eax
cmp eax, 4
mov dword [edi + edx*4], 0
jl 0x4107b0
mov eax, dword [esp + 0x18]
test eax, eax
jle 0x41092f
mov dword [esp + 0x14], eax
mov ecx, dword [esi]
cmp ecx, 0x31999
mov dword [esp + 0xc], ecx
jle 0x4108d8
cmp ecx, 0x34000
jge 0x4108d8
lea ecx, [esp + 0x2d8]
call fcn.004123c0
mov byte [esp + 0x7ec], 8
mov eax, dword [esp + 0xc]
mov ecx, dword [0x87b40c]
push eax
push ecx
mov al, 1
lea edi, [esp + 0x2e0]
call fcn.00428360
movzx eax, byte [esp + 0x2e1]
dec eax
je 0x41088f
dec eax
jne 0x4108bc
mov eax, dword [0x87b40c]
mov ecx, dword [esp + 0xc]
lea edx, [ebx + 0x242b]
shl edx, 4
mov dword [edx + eax], ecx
cmp dword [0x87b77c], 3
mov byte [ebx + eax + 0x25e34], 1
je 0x4108bc
push ebx
push eax
call fcn.0042c280
jmp 0x4108bc
mov eax, dword [0x87b40c]
mov ecx, dword [esp + 0xc]
mov edx, ebx
shl edx, 4
mov dword [edx + eax + 0x242ac], ecx
cmp dword [0x87b77c], 3
mov byte [ebx + eax + 0x25e2c], 1
je 0x4108bc
push ebx
push eax
call fcn.0042c160
lea ecx, [esp + 0x2d8]
mov byte [esp + 0x7ec], 4
call fcn.004128f0
mov edi, dword [0x87b40c]
jmp 0x41091d
mov eax, ecx
sar eax, 0x10
and al, 0xf
and ecx, 0x7fff
cmp al, 3
jne 0x4108fd
or ecx, 0x8000
lea eax, [ebx*4 + 0x12134]
mov word [edi + eax*2 + 6], cx
jmp 0x41091d
mov edx, dword [esp + 0x30]
neg edx
sbb edx, edx
and edx, 0x8000
or edx, ecx
movzx ecx, al
lea eax, [ebx*4 + 0x12134]
add ecx, eax
mov word [edi + ecx*2], dx
mov eax, dword [esp + 0x14]
add esi, 4
dec eax
mov dword [esp + 0x14], eax
jne 0x410802
movzx eax, byte [esi]
mov ecx, dword [edi + ebx*8 + 0x25df0]
test eax, eax
push 1
lea eax, [esp + 0x14]
push eax
setne dl
push ecx
mov byte [esp + 0x1c], dl
call fcn.004c7160
mov esi, eax
call fcn.0040ad80
call fcn.0054ad4a
cdq
mov ecx, 6
idiv ecx
mov ecx, dword [0x87b40c]
mov eax, dword [ecx + ebx*4 + 0x24228]
mov esi, ebx
mov dword [ecx + ebx*4 + 0x25e3c], edx
xor edx, edx
mov dx, word [ecx + ebx*2 + 0x24258]
push edx
push eax
mov ax, word [ecx + ebx*2 + 0x24248]
mov ecx, dword [ecx + ebx*4 + 0x24208]
mov edx, 0x8fdbb0
call fcn.0044ddd0
jmp case.0x40ef70.4116
mov eax, dword [0x87b77c]
cmp eax, 3
jne 0x4109bb
cmp dword [0x87b374], 3
je 0x4109d1
jmp case.0x40ef70.4116
cmp eax, 4
jne case.0x40ef70.4116
cmp dword [0x87b374], 4
jne case.0x40ef70.4116
movzx ecx, byte [esi]
mov byte [ecx + ebx + 0x1fed5], 0
dec byte [ebx + 0x1fed4]
jmp case.0x40ef70.4116
mov edx, dword [ebp + 0x10]
movzx eax, byte [edx]
lea edi, [ebx + 0x1a640]
call fcn.00416ce0
mov ecx, dword [0x87b40c]
add ecx, 0x1a640
call fcn.0042c6d0
mov ecx, eax
mov eax, dword [0x87b40c]
cmp byte [ecx + eax + 0x24342], 3
jne case.0x40ef70.4116
lea ecx, [eax + 0x1a640]
call fcn.0042c6d0
mov edx, dword [0x87b40c]
mov byte [eax + edx + 0x24342], 1
jmp case.0x40ef70.4116
cmp eax, 0x4410
je 0x410a66
cmp eax, 0x4501
jne case.0x40ef70.4116
mov eax, dword [ebp + 0x10]
lea ecx, [eax + 1]
mov al, byte [eax]
push ecx
push 0x8fdbb0
call fcn.0044e160
jmp case.0x40ef70.4116
lea ecx, [ebx + 0x26da8]
call fcn.00523700
test al, al
jne 0x4112bd
mov edi, dword [0x87b40c]
add edi, 0x26da8
mov al, 1
call fcn.00416f20
mov edx, dword [ebp + 0x10]
mov al, byte [edx]
mov ecx, dword [0x87b40c]
mov byte [ecx + 0x26db8], al
test al, al
setne al
mov byte [ecx + 0x26db9], al
lea ecx, [esp + 0x18]
call fcn.00416bd0
lea ecx, [esp + 0x38]
mov byte [esp + 0x7ec], 9
call fcn.00416bd0
mov eax, 0xeeaeaec0
lea ecx, [esp + 0x18]
mov byte [esp + 0x7ec], 0xa
call fcn.00416e90
mov eax, 0xeeaeaec0
lea ecx, [esp + 0x38]
call fcn.00416e90
mov ecx, dword [0x87b40c]
add ecx, 0x24100
call fcn.0042c6d0
cmp eax, 3
jne 0x410b30
mov eax, dword [0x87b40c]
mov cl, byte [eax + 0x26db8]
test cl, cl
lea ecx, [eax + 0x4ee80]
je 0x410b17
lea ecx, [eax + 0x4ee88]
call fcn.0042c6d0
mov ecx, 0x5d96e4
mov esi, eax
call fcn.0042c6d0
cmp esi, eax
jl 0x410bc2
mov ecx, dword [0x87b40c]
add ecx, 0x25ec0
call fcn.0042c6d0
dec eax
cmp eax, 7
ja case.default.0x410b4b
jmp dword [eax*4 + 0x411fcc]
mov eax, 0xeeaeaea4
lea ecx, [esp + 0x18]
call fcn.00416e90
mov eax, 0xeeaeaec3
jmp 0x410bb9
mov eax, 0xeeaeae56
lea ecx, [esp + 0x18]
call fcn.00416e90
mov eax, 0xeeaeaec6
jmp 0x410bb9
mov eax, 0xeeaeae08
lea ecx, [esp + 0x18]
call fcn.00416e90
mov eax, 0xeeaeaec9
jmp 0x410bb9
mov eax, 0xeeaeafec
lea ecx, [esp + 0x18]
call fcn.00416e90
mov eax, 0xeeaeaecc
jmp 0x410bb9
mov eax, 0xeeaeaec0
lea ecx, [esp + 0x18]
call fcn.00416e90
mov eax, 0xeeaeaec0
lea ecx, [esp + 0x38]
call fcn.00416e90
mov eax, dword [0x87b40c]
xor edi, edi
mov dword [esp + 0xc], edi
xor ebx, ebx
mov esi, 0x26c40
jmp 0x410be0
mov cl, byte [edi + eax + 0x26135]
test cl, cl
je 0x410c69
mov cl, byte [edi + eax + 0x2614e]
cmp cl, byte [eax + 0x26db8]
jne 0x410c69
lea ecx, [ebx + eax + 0x262a0]
call fcn.0042c6d0
mov ecx, 0x5d96e4
mov edi, eax
call fcn.0042c6d0
lea ecx, [esp + 0x18]
add edi, eax
call fcn.0042c6d0
imul edi, eax
mov ecx, 0x5d96e4
call fcn.0042c6d0
mov ecx, eax
mov eax, edi
cdq
idiv ecx
mov edx, dword [0x87b40c]
lea edi, [esi + edx - 0x40]
push eax
call fcn.00416df0
lea ecx, [esp + 0x38]
call fcn.0042c6d0
push eax
mov eax, dword [0x87b40c]
lea edi, [esi + eax]
call fcn.00416df0
mov eax, dword [0x87b40c]
mov edi, dword [esp + 0xc]
inc edi
add esi, 8
add ebx, 0x40
cmp esi, 0x26c80
mov dword [esp + 0xc], edi
jl 0x410be0
mov byte [esp + 0x7ec], 9
mov ecx, dword [esp + 0x3c]
push 1
push ecx
call fcn.004c7160
mov edi, eax
call fcn.0040ae80
mov byte [esp + 0x7ec], 4
mov edx, dword [esp + 0x1c]
push 1
push edx
call fcn.004c7160
mov edi, eax
call fcn.0040ae80
mov ecx, dword [0x87b40c]
add ecx, 0x774ac
lea edi, [esp + 0x30]
call fcn.00416c10
mov byte [esp + 0x7ec], 0xb
mov ecx, dword [0x87b40c]
add ecx, 0x774b4
lea edi, [esp + 0x38]
call fcn.00416c10
mov byte [esp + 0x7ec], 0xc
mov eax, dword [0x87b40c]
movzx ebx, byte [eax + 0x24108]
cmp ebx, 0xffff
je 0x410d39
mov edi, 0x8ff134
call fcn.0040b170
push eax
lea edi, [esp + 0x34]
call fcn.00416df0
mov ecx, dword [0x87b40c]
movzx ebx, byte [ecx + 0x24108]
mov edi, 0x8ff134
call fcn.0040b1d0
push eax
lea edi, [esp + 0x3c]
call fcn.00416df0
mov dword [esp + 0xc], 0
mov ebx, 0x26c40
jmp 0x410d50
mov edx, dword [esp + 0xc]
mov eax, dword [0x87b40c]
mov cl, byte [edx + eax + 0x26135]
test cl, cl
je 0x411105
mov eax, dword [ebx + eax - 0x3c]
mov dword [esp + 0x18], eax
call fcn.004c7160
mov edi, eax
lea esi, [edi + 0x30]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov al, byte [edi + 0x2c]
test al, al
push esi
je 0x410d91
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x410db8
mov eax, dword [esp + 0x1c]
mov edx, dword [edi + 0x24]
mov edi, dword [edi + 0x1c]
mov ecx, eax
shr ecx, 3
mov dword [esp + 0x1c], edi
mov edi, dword [edx + ecx*4]
mov ecx, dword [esp + 0x1c]
xor edi, dword [ecx + eax*4]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test edi, edi
jle 0x410df6
mov edx, dword [0x87b40c]
lea ecx, [ebx + edx - 0x40]
call fcn.0042c6d0
lea ecx, [esp + 0x38]
mov edi, eax
call fcn.0042c6d0
imul edi, eax
mov ecx, dword [0x87b40c]
mov eax, 0x51eb851f
imul edi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
lea edi, [ebx + ecx - 0x40]
call fcn.00416df0
mov edx, dword [0x87b40c]
mov eax, dword [ebx + edx + 4]
mov dword [esp + 0x18], eax
call fcn.004c7160
mov edi, eax
lea esi, [edi + 0x30]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov al, byte [edi + 0x2c]
test al, al
push esi
je 0x410e25
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x410e4c
mov eax, dword [esp + 0x1c]
mov edx, dword [edi + 0x24]
mov edi, dword [edi + 0x1c]
mov ecx, eax
shr ecx, 3
mov dword [esp + 0x1c], edi
mov edi, dword [edx + ecx*4]
mov ecx, dword [esp + 0x1c]
xor edi, dword [ecx + eax*4]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test edi, edi
jle 0x410e88
mov edx, dword [0x87b40c]
lea ecx, [ebx + edx]
call fcn.0042c6d0
lea ecx, [esp + 0x30]
mov edi, eax
call fcn.0042c6d0
imul edi, eax
mov ecx, dword [0x87b40c]
mov eax, 0x51eb851f
imul edi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
lea edi, [ebx + ecx]
call fcn.00416df0
mov edx, dword [0x87b40c]
mov eax, dword [ebx + edx - 0x3c]
mov dword [esp + 0x18], eax
call fcn.004c7160
mov edi, eax
lea esi, [edi + 0x30]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov al, byte [edi + 0x2c]
test al, al
push esi
je 0x410eb7
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x410ee2
mov eax, dword [esp + 0x1c]
mov edx, dword [edi + 0x24]
mov edi, dword [edi + 0x1c]
mov ecx, eax
shr ecx, 3
mov dword [esp + 0x1c], edi
mov edi, dword [edx + ecx*4]
mov ecx, dword [esp + 0x1c]
xor edi, dword [ecx + eax*4]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test edi, edi
jle 0x410f3a
mov edx, dword [0x87b40c]
lea ecx, [ebx + edx - 0x40]
call fcn.0042c6d0
mov ecx, dword [0x87b40c]
add ecx, 0x1fec4
mov esi, eax
call fcn.0042c6d0
imul esi, eax
mov ecx, dword [0x87b40c]
mov eax, 0x51eb851f
imul esi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebx + ecx - 0x3c]
mov dword [esp + 0x18], eax
push 1
lea eax, [esp + 0x1c]
push eax
push edx
call fcn.004c7160
mov esi, eax
call fcn.0040ad80
mov eax, dword [0x87b40c]
mov ecx, dword [ebx + eax + 4]
mov dword [esp + 0x18], ecx
call fcn.004c7160
mov edi, eax
lea esi, [edi + 0x30]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov al, byte [edi + 0x2c]
test al, al
push esi
je 0x410f68
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x410f93
mov eax, dword [esp + 0x1c]
mov ecx, dword [edi + 0x24]
mov edi, dword [edi + 0x1c]
mov edx, eax
shr edx, 3
mov dword [esp + 0x1c], edi
mov edi, dword [ecx + edx*4]
mov edx, dword [esp + 0x1c]
xor edi, dword [edx + eax*4]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test edi, edi
jle 0x410fe9
mov eax, dword [0x87b40c]
lea ecx, [ebx + eax]
call fcn.0042c6d0
mov ecx, dword [0x87b40c]
add ecx, 0x1febc
mov esi, eax
call fcn.0042c6d0
imul esi, eax
mov eax, 0x51eb851f
imul esi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [0x87b40c]
push 1
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + edx + 4]
push ecx
push eax
call fcn.004c7160
mov esi, eax
call fcn.0040ad80
mov ecx, dword [0x87b40c]
mov edx, dword [ebx + ecx - 0xb48]
mov dword [esp + 0x18], edx
call fcn.004c7160
mov edi, eax
lea esi, [edi + 0x30]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov al, byte [edi + 0x2c]
test al, al
push esi
je 0x41101b
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x411045
mov ecx, dword [esp + 0x1c]
mov edx, dword [edi + 0x24]
mov edi, dword [edi + 0x1c]
mov eax, ecx
shr eax, 3
mov eax, dword [edx + eax*4]
xor eax, dword [edi + ecx*4]
mov dword [esp + 0x1c], eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp byte [esp + 0x18], 1
jne 0x411105
mov eax, dword [0x87b40c]
lea ecx, [ebx + eax - 0x40]
call fcn.0042c6d0
lea ecx, [eax + eax*4]
shl ecx, 1
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [0x87b40c]
push ecx
lea edi, [ebx + edx - 0x40]
call fcn.00416df0
mov eax, dword [0x87b40c]
lea ecx, [ebx + eax]
call fcn.0042c6d0
lea ecx, [eax + eax*4]
shl ecx, 2
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [0x87b40c]
push ecx
lea edi, [ebx + edx]
call fcn.00416df0
mov ecx, dword [0x87b40c]
lea eax, [esp + 0x18]
xor esi, esi
push eax
lea ecx, [ebx + ecx - 0x40]
mov dword [esp + 0x1c], esi
call fcn.00408670
test al, al
je 0x4110db
mov edx, dword [0x87b40c]
lea edi, [ebx + edx - 0x40]
xor eax, eax
call fcn.00416ce0
mov ecx, dword [0x87b40c]
lea eax, [esp + 0x18]
push eax
add ecx, ebx
mov dword [esp + 0x1c], esi
call fcn.00408670
test al, al
je 0x411105
mov edx, dword [0x87b40c]
lea edi, [ebx + edx]
xor eax, eax
call fcn.00416ce0
mov edx, dword [esp + 0xc]
inc edx
add ebx, 8
cmp ebx, 0x26c80
mov dword [esp + 0xc], edx
jl 0x410d50
mov eax, dword [0x87b40c]
mov edi, dword [eax + 0x1a638]
call fcn.004c7160
mov esi, eax
lea ebx, [esi + 0x30]
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov al, byte [esi + 0x2c]
test al, al
push ebx
je 0x41114b
mov dword [esp + 0x1c], 1
jmp 0x411160
mov edx, dword [esi + 0x24]
mov esi, dword [esi + 0x1c]
mov ecx, edi
shr ecx, 3
mov eax, dword [edx + ecx*4]
xor eax, dword [esi + edi*4]
mov dword [esp + 0x1c], eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [0x87b40c]
mov edi, dword [eax + 0x1a644]
call fcn.004c7160
mov esi, eax
lea ebx, [esi + 0x30]
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov al, byte [esi + 0x2c]
test al, al
push ebx
je 0x411191
mov esi, 1
jmp 0x4111a2
mov edx, dword [esi + 0x24]
mov eax, dword [esi + 0x1c]
mov ecx, edi
shr ecx, 3
mov esi, dword [edx + ecx*4]
xor esi, dword [eax + edi*4]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp dword [esp + 0x18], esi
jne 0x411287
mov ecx, dword [0x87b40c]
mov ebx, dword [ecx + 0x24104]
call fcn.004c7160
mov esi, eax
lea edi, [esi + 0x30]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov al, byte [esi + 0x2c]
test al, al
push edi
je 0x4111df
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x4111fb
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x1c]
mov edx, ebx
shr edx, 3
mov esi, dword [eax + edx*4]
xor esi, dword [ecx + ebx*4]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp esi, 3
je 0x411214
mov ecx, dword [0x87b40c]
add ecx, 0x26da0
call fcn.00523700
cmp al, 1
jne 0x411287
mov edx, dword [0x87b40c]
mov eax, dword [edx + 0x26db4]
mov dword [esp + 0x18], eax
call fcn.004c7160
mov esi, eax
lea edi, [esi + 0x30]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov al, byte [esi + 0x2c]
test al, al
push edi
je 0x411245
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x411287
mov eax, dword [esp + 0x1c]
mov edx, dword [esi + 0x24]
mov esi, dword [esi + 0x1c]
mov ecx, eax
shr ecx, 3
mov ebx, dword [edx + ecx*4]
xor ebx, dword [esi + eax*4]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test bl, bl
jne 0x411287
cmp dword [0x87b77c], 0xb
jne 0x411282
mov ecx, dword [0x87b3ac]
add ecx, 0x11c4
call fcn.00523700
cmp al, 1
je 0x411287
call fcn.00415000
mov byte [esp + 0x7ec], 0xb
mov eax, dword [esp + 0x3c]
push 1
push eax
call fcn.004c7160
mov edi, eax
call fcn.0040ae80
mov byte [esp + 0x7ec], 4
mov ecx, dword [esp + 0x34]
push 1
push ecx
call fcn.004c7160
mov edi, eax
call fcn.0040ae80
mov eax, dword [0x87b40c]
mov ecx, dword [eax + 0x26d9c]
push 1
lea edx, [esp + 0x14]
push edx
push ecx
mov byte [esp + 0x1c], 1
call fcn.004c7160
mov esi, eax
call fcn.0040ad80
jmp case.0x40ef70.4116
cmp word [esi], 0
jne case.0x40ef70.4116
mov edx, dword [0x87b77c]
mov eax, dword [edx*4 + 0x87b380]
mov esi, dword [eax]
push 6
push 3
push 0x1004
push 0x87e094
call fcn.004454c0
mov ecx, dword [0x87b77c]
mov ecx, dword [ecx*4 + 0x87b380]
push eax
call dword [esi + 0x2c]
push 0
push 0x5d9994
push 0x5d80f8
push 0
call fcn.004c75b0
mov ebx, 0xc7
mov edi, eax
call fcn.00403290
push eax
call fcn.0054a821
add esp, 0x14
test eax, eax
je case.0x40ef70.4116
mov esi, eax
call fcn.00505b60
jmp case.0x40ef70.4116
cmp eax, 0x6032
jg 0x411ca2
je 0x411c23
sub eax, 0x5101
je 0x411b7b
sub eax, 0xf00
je 0x4114bb
sub eax, 4
jne case.0x40ef70.4116
push str.Get_Gift_message_in_root_n
call fcn.0046c4c0
add esp, 4
lea edi, [ebx + 0x19e9c]
mov al, 1
call fcn.00416f20
xor eax, eax
mov ecx, 0x28
lea edi, [esp + 0xd8]
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x10]
mov edx, dword [eax]
lea esi, [eax + 4]
mov eax, dword [esi]
mov cl, byte [esi + 4]
add esi, 4
mov dword [esp + 0xf0], edx
inc esi
mov edx, esi
mov dword [esp + 0xd8], eax
mov eax, dword [edx]
mov byte [esp + 0xf4], cl
mov ecx, dword [edx + 4]
mov edx, dword [edx + 8]
mov dword [esp + 0xe0], ecx
add esi, 0xc
mov dword [esp + 0xdc], eax
mov eax, dword [esi]
lea ecx, [esp + 0x18]
push ecx
mov dword [esp + 0xe8], edx
mov dword [esp + 0x1c], eax
add esi, 4
call fcn.00549347
mov dx, word [eax + 0x14]
mov cl, byte [eax + 0x10]
add dx, 0x76c
add esp, 4
inc cl
mov byte [esp + 0xec], cl
movzx ecx, byte [esi]
mov word [esp + 0xea], dx
mov dl, byte [eax + 0xc]
mov eax, ecx
shr ecx, 2
inc esi
mov byte [esp + 0xed], dl
lea edi, [esp + 0xf5]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [0x87b40c]
mov edx, dword [esi + 0x23f94]
xor ecx, ecx
test edx, edx
jle 0x411491
mov ebx, dword [esp + 0xd8]
xor edi, edi
cmp ecx, dword [esi + 0x23f94]
jae 0x4114b1
mov eax, dword [esi + 0x23f90]
add eax, edi
cmp dword [eax], ebx
je 0x4114a5
inc ecx
add edi, 0xa0
cmp ecx, edx
jl 0x411472
lea ecx, [esp + 0xd8]
push ecx
add esi, 0x23f90
push esi
call fcn.00417b10
mov byte [0x87b772], 1
jmp case.0x40ef70.4116
push 0x80070057
call fcn.004010c0
cmp word [esi], 0
jne case.0x40ef70.4116
mov esi, dword [ebp + 0x10]
movzx eax, word [esi + 2]
add esi, 2
lea edi, [ebx + 0x4cd8c]
call fcn.00416ce0
mov ecx, eax
call fcn.0042c6d0
add esi, 2
test eax, eax
jle 0x411b3b
mov dword [esp + 0x18], eax
mov edx, dword [esi]
mov eax, dword [esi + 4]
add esi, 4
lea edi, [esp + 0x44]
or bl, 0xff
mov dword [esp + 0x30], edx
call fcn.00416ce0
mov ecx, eax
call fcn.0042c6d0
mov al, byte [esi + 4]
add esi, 4
test al, al
mov al, byte [esi + 1]
setne byte [esp + 0x2f]
inc esi
inc esi
mov byte [esp + 0x42], al
cmp byte [esi], 0
setne al
inc esi
test al, al
mov byte [esp + 0x43], al
je 0x411593
mov ecx, dword [esi]
add esi, 4
cmp ecx, 0x151bc
lea edi, [esp + 0x4c]
jle 0x411579
mov eax, 0x184178b9
imul ecx
sar edx, 0xd
mov eax, edx
shr eax, 0x1f
add eax, edx
call fcn.00416ce0
lea ecx, [esp + 0x5c]
push ecx
mov edx, edi
push edx
call fcn.00416d10
lea ecx, [esp + 0x5c]
call fcn.00416c70
mov bl, 3
jmp 0x411593
mov eax, 0x91a2b3c5
imul ecx
add edx, ecx
sar edx, 0xb
mov eax, edx
shr eax, 0x1f
add eax, edx
call fcn.00416ce0
mov bl, 4
cmp byte [esi], 0
setne al
inc esi
test al, al
je 0x4115b3
mov eax, dword [esi]
lea edi, [esp + 0x64]
call fcn.00416ce0
mov ecx, eax
call fcn.0042c6d0
add esi, 4
cmp byte [esi], 0
setne al
inc esi
test al, al
je 0x4115d3
mov eax, dword [esi]
lea edi, [esp + 0x54]
call fcn.00416ce0
mov ecx, eax
call fcn.0042c6d0
add esi, 4
cmp byte [esi], 0
setne byte [esp + 0x10]
inc esi
lea ecx, [esp + 0x44]
mov dword [esp + 0x14], esi
call fcn.0042c6d0
cmp eax, 0x31999
jle 0x4118c5
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x48]
mov dword [esp + 0x3c], 0x34000
call fcn.00408670
test al, al
je 0x4118c5
lea ecx, [esp + 0xd8]
push ecx
call fcn.00411ff0
lea ecx, [esp + 0x2d8]
mov byte [esp + 0x7ec], 5
call fcn.004123c0
lea ecx, [esp + 0x44]
mov byte [esp + 0x7ec], 6
call fcn.0042c6d0
mov edx, dword [0x87b40c]
push eax
push edx
mov al, 1
lea edi, [esp + 0x2e0]
call fcn.00428360
mov eax, dword [esp + 0x30]
lea edi, [esp + 0xe4]
call fcn.00416ce0
lea ecx, [esp + 0x44]
lea edi, [esp + 0xec]
call fcn.00416c90
mov al, byte [esp + 0x42]
lea ecx, [esp + 0x64]
lea edi, [esp + 0x10c]
mov byte [esp + 0x108], al
call fcn.00416c90
lea ecx, [esp + 0x54]
lea edi, [esp + 0x11c]
call fcn.00416c90
mov al, byte [esp + 0x2f]
lea edi, [esp + 0x100]
call fcn.00416f20
lea ecx, [esp + 0x4c]
lea edi, [esp + 0x134]
mov byte [esp + 0x13c], bl
call fcn.00416c90
mov al, byte [esp + 0x43]
lea edi, [esp + 0x12c]
call fcn.00416f20
mov al, byte [esp + 0x10]
lea edi, [esp + 0x124]
call fcn.00416f20
mov edx, dword [0x87b40c]
mov cl, byte [esp + 0x2e1]
add edx, 0x23fec
push edx
lea ebx, [esp + 0xdc]
mov byte [esp + 0xf8], cl
call fcn.00417c30
mov eax, dword [0x87b40c]
add eax, 0x2400c
push eax
call fcn.00417c30
mov al, byte [esp + 0x2f]
test al, al
je 0x411893
lea ecx, [esp + 0x44]
call fcn.0042c6d0
cmp eax, 0x32001
je 0x411893
mov eax, dword [0x87b40c]
mov ecx, dword [eax + 0x778c0]
test ecx, ecx
mov cl, byte [esp + 0x2e1]
je 0x411821
movzx edx, cl
cmp dword [eax + edx*4 + 0x778ac], 0xffffffff
je 0x411821
mov esi, dword [0x87b798]
push 0x600e
call fcn.00446700
mov eax, dword [0x87b798]
mov ecx, dword [eax + 0x4098]
mov esi, dword [0x87b40c]
mov word [ecx + eax + 0x98], 1
mov ebx, dword [eax + 0x4098]
add ebx, 2
mov dword [eax + 0x4098], ebx
movzx edx, byte [esp + 0x2e1]
mov edx, dword [esi + edx*4 + 0x778ac]
mov ecx, ebx
mov dword [ecx + eax + 0x98], edx
mov edi, dword [eax + 0x4098]
mov ebx, 4
add edi, ebx
mov dword [eax + 0x4098], edi
mov ecx, edi
mov byte [ecx + eax + 0x98], 0
mov esi, dword [eax + 0x4098]
inc esi
push eax
mov dword [eax + 0x4098], esi
call fcn.00446890
lea ecx, [esp + 0x2d8]
mov byte [esp + 0x7ec], 5
call fcn.004128f0
lea eax, [esp + 0xd8]
push eax
mov byte [esp + 0x7f0], bl
call fcn.00412260
mov esi, dword [esp + 0x14]
jmp 0x411b31
movzx ecx, cl
lea edi, [eax + ecx*8 + 0x1a60c]
lea ecx, [esp + 0x44]
call fcn.00416c90
movzx edx, byte [esp + 0x2e1]
mov eax, dword [0x87b40c]
mov ecx, dword [esp + 0x30]
mov dword [eax + edx*4 + 0x778ac], ecx
movzx edx, byte [esp + 0x2e1]
lea edi, [eax + edx*8 + 0x4cdb4]
mov eax, dword [esp + 0xc]
call fcn.00416ce0
movzx eax, byte [esp + 0x2e1]
dec eax
je 0x411883
dec eax
jne 0x411893
mov eax, dword [0x87b40c]
mov dword [eax + 0x77658], 1
jmp 0x411893
mov ecx, dword [0x87b40c]
mov dword [ecx + 0x77654], 1
inc dword [esp + 0xc]
lea ecx, [esp + 0x2d8]
mov byte [esp + 0x7ec], 5
call fcn.004128f0
lea edx, [esp + 0xd8]
push edx
mov byte [esp + 0x7f0], 4
call fcn.00412260
jmp 0x411b12
lea eax, [esp + 0x90]
push eax
call fcn.00412c10
mov byte [esp + 0x7ec], 7
mov eax, dword [esp + 0x30]
lea edi, [esp + 0x98]
call fcn.00416ce0
lea ecx, [esp + 0x44]
lea edi, [esp + 0xa0]
call fcn.00416c90
mov cl, byte [esp + 0x42]
mov al, byte [esp + 0x2f]
lea edi, [esp + 0xa8]
mov dword [esp + 0x94], 0
mov byte [esp + 0x90], cl
call fcn.00416f20
lea ecx, [esp + 0x54]
lea edi, [esp + 0xb0]
call fcn.00416c90
lea ecx, [esp + 0x4c]
lea edi, [esp + 0xc8]
mov byte [esp + 0xd0], bl
call fcn.00416c90
mov al, byte [esp + 0x43]
lea edi, [esp + 0xc0]
call fcn.00416f20
mov al, byte [esp + 0x10]
lea edi, [esp + 0xb8]
call fcn.00416f20
mov edx, dword [0x87b40c]
add edx, 0x23fbc
push edx
lea ebx, [esp + 0x94]
call fcn.00417bb0
mov eax, dword [0x87b40c]
add eax, 0x23ffc
push eax
call fcn.00417bb0
mov ecx, dword [0x87b40c]
add ecx, 0x23fcc
push ecx
call fcn.00417bb0
mov al, byte [esp + 0x2f]
test al, al
je 0x411afd
lea ecx, [esp + 0x44]
call fcn.0042c6d0
cmp eax, 0x32001
je 0x411afd
lea ecx, [esp + 0x44]
call fcn.0042c6d0
mov ebx, eax
sar ebx, 0x10
lea ecx, [esp + 0x44]
and bl, 0xf
call fcn.0042c6d0
mov ecx, dword [0x87b40c]
mov edi, eax
mov eax, dword [ecx + 0x778c0]
and edi, 0x7fff
test eax, eax
je 0x411aa7
movzx eax, bl
lea eax, [eax*4 + 0x7789c]
cmp dword [eax + ecx], 0xffffffff
mov dword [esp + 0x38], eax
je 0x411aa7
mov esi, dword [0x87b798]
push 0x600e
call fcn.00446700
mov eax, dword [0x87b798]
mov edx, dword [eax + 0x4098]
mov esi, dword [esp + 0x38]
mov word [edx + eax + 0x98], 1
mov ebx, dword [eax + 0x4098]
mov edx, dword [0x87b40c]
add ebx, 2
mov dword [eax + 0x4098], ebx
mov edx, dword [esi + edx]
mov ecx, ebx
mov dword [ecx + eax + 0x98], edx
mov edi, dword [eax + 0x4098]
mov ebx, 4
add edi, ebx
mov dword [eax + 0x4098], edi
mov ecx, edi
mov byte [ecx + eax + 0x98], 0
mov esi, dword [eax + 0x4098]
inc esi
push eax
mov dword [eax + 0x4098], esi
call fcn.00446890
lea eax, [esp + 0x90]
push eax
mov byte [esp + 0x7f0], bl
call fcn.00412db0
mov esi, dword [esp + 0x14]
jmp 0x411b31
cmp bl, 3
jne 0x411abc
movzx eax, di
or eax, 0x8000
lea edi, [ecx + 0x1a604]
jmp 0x411ae5
add ecx, 0x1a62c
call fcn.00523700
neg al
movzx ecx, di
movzx edx, bl
sbb eax, eax
and eax, 0x8000
or eax, ecx
mov ecx, dword [0x87b40c]
lea edi, [ecx + edx*8 + 0x1a5ec]
call fcn.00416ce0
mov eax, dword [0x87b40c]
mov ecx, dword [esp + 0x30]
movzx edx, bl
mov dword [eax + edx*4 + 0x7789c], ecx
lea edx, [esp + 0x90]
push edx
mov byte [esp + 0x7f0], 4
call fcn.00412db0
lea ecx, [esp + 0x44]
call fcn.0042c6d0
cmp eax, 0x32001
jne 0x411b31
mov eax, dword [0x87b40c]
mov dword [eax + 0x77524], 1
dec dword [esp + 0x18]
jne 0x4114f0
mov ecx, dword [0x87b40c]
push ecx
xor ecx, ecx
call fcn.0042bdb0
mov eax, dword [0x87b40c]
mov esi, dword [0x87b798]
push 0x6100
mov byte [eax + 0x23fb1], 1
mov dword [eax + 0x778c0], 0
call fcn.00446700
mov edx, dword [0x87b798]
push edx
jmp 0x411d24
xor eax, eax
mov byte [esp + 0xd8], 0
mov ecx, 0x7f
lea edi, [esp + 0xd9]
rep stosd dword es:[edi], eax
mov ecx, dword [ebp + 8]
stosw word es:[edi], ax
xor edx, edx
xor ebx, ebx
test ecx, ecx
stosb byte es:[edi], al
mov eax, 6
jle 0x411c01
lea ebx, [ebx]
mov cl, byte [ebx + esi]
cmp cl, 0xd
je 0x411bf9
cmp cl, 0xa
jne 0x411bf1
mov ecx, dword [0x87b77c]
mov ecx, dword [ecx*4 + 0x87b380]
mov edx, dword [ecx]
push eax
push 2
lea eax, [esp + 0xe0]
push eax
call dword [edx + 0x2c]
mov esi, dword [ebp + 0x10]
xor eax, eax
mov ecx, 0x80
lea edi, [esp + 0xd8]
rep stosd dword es:[edi], eax
xor edx, edx
jmp 0x411bf9
mov byte [esp + edx + 0xd8], cl
inc edx
mov ecx, dword [ebp + 8]
inc ebx
cmp ebx, ecx
jl 0x411bb0
mov ecx, dword [0x87b77c]
mov ecx, dword [ecx*4 + 0x87b380]
mov edx, dword [ecx]
push eax
push 2
lea eax, [esp + 0xe0]
push eax
call dword [edx + 0x2c]
jmp case.0x40ef70.4116
mov eax, dword [ebp + 0x10]
xor ecx, ecx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], ecx
mov dword [esp + 0x78], ecx
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x80], ecx
mov dword [esp + 0x84], ecx
mov edx, eax
mov ecx, dword [edx]
mov dword [esp + 0x6c], ecx
mov ecx, dword [edx + 4]
mov edx, dword [edx + 8]
add eax, 0xc
mov dword [esp + 0x70], ecx
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x74], edx
mov dl, byte [eax]
movzx eax, byte [eax + 1]
mov dword [esp + 0x7c], ecx
lea ecx, [esp + 0x6c]
push ecx
add ebx, 0x23fa0
mov byte [esp + 0x84], dl
mov dword [esp + 0x88], eax
call fcn.00417b60
mov edx, dword [0x87b40c]
mov byte [edx + 0x23fb0], 1
jmp case.0x40ef70.4116
sub eax, 0x6101
je 0x411cfc
sub eax, 4
jne case.0x40ef70.4116
push 0x579f2c
call fcn.0046c4c0
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 2]
add esp, 4
lea edi, [ebx + 0x1a56c]
call fcn.00416ce0
mov ecx, dword [0x87b40c]
mov eax, dword [ecx + 0x18854]
test eax, eax
je case.0x40ef70.4116
push 4
call fcn.00413940
mov edx, dword [0x87b40c]
add esp, 4
mov dword [edx + 0x18854], 0
jmp case.0x40ef70.4116
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 2]
lea edi, [ebx + 0x1a574]
call fcn.00416ce0
mov esi, dword [0x87b798]
push 0x6104
call fcn.00446700
mov ecx, dword [0x87b798]
push ecx
call fcn.00446890
mov edx, dword [0x87b77c]
mov ecx, dword [edx*4 + 0x87b380]
mov edx, dword [ebp + 0x10]
mov eax, dword [ecx]
push edx
mov edx, dword [ebp + 0xc]
push edx
mov edx, dword [ebp + 8]
push edx
call dword [eax + 4]
mov byte [esp + 0x7ec], 3
call fcn.004c7160
mov ebx, eax
lea esi, [ebx + 0x30]
push esi
mov dword [esp + 0x34], esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov byte [esp + 0x7ec], 0xd
mov edi, dword [esp + 0x50]
lea eax, [edi + 1]
cmp edi, eax
mov dword [esp + 0xc], eax
jge 0x411da1
add ebx, 0x10
mov dword [esp + 0x18], ebx
lea eax, [esp + 0x5c]
push eax
mov eax, dword [esp + 0x1c]
lea ebx, [esp + 0x3c]
mov dword [esp + 0x3c], edi
call fcn.00416b10
mov eax, dword [esp + 0xc]
inc edi
cmp edi, eax
jl 0x411d82
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov byte [esp + 0x7ec], 2
mov esi, dword [esp + 0x58]
mov dword [esp + 0x54], vtable.Xenesis2::Foundation::Memory::xEncryptData_int_.0
call fcn.004c7160
mov ebx, eax
lea edi, [ebx + 0x30]
push edi
mov dword [esp + 0x34], edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea eax, [esi + 1]
cmp esi, eax
mov byte [esp + 0x7ec], 0xe
mov dword [esp + 0xc], eax
jge 0x411e0f
add ebx, 0x10
mov dword [esp + 0x18], ebx
jmp 0x411df0
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x5c]
push ecx
lea ebx, [esp + 0x3c]
mov dword [esp + 0x3c], esi
call fcn.00416b10
mov eax, dword [esp + 0xc]
inc esi
cmp esi, eax
jl 0x411df0
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov byte [esp + 0x7ec], 1
mov esi, dword [esp + 0x68]
mov dword [esp + 0x64], vtable.Xenesis2::Foundation::Memory::xEncryptData_int_.0
call fcn.004c7160
mov ebx, eax
lea edi, [ebx + 0x30]
push edi
mov dword [esp + 0x34], edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea eax, [esi + 1]
cmp esi, eax
mov byte [esp + 0x7ec], 0xf
mov dword [esp + 0xc], eax
jge 0x411e7f
add ebx, 0x10
mov dword [esp + 0x18], ebx
lea esp, [esp]
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x5c]
push edx
lea ebx, [esp + 0x3c]
mov dword [esp + 0x3c], esi
call fcn.00416b10
mov eax, dword [esp + 0xc]
inc esi
cmp esi, eax
jl 0x411e60
mov esi, dword [esp + 0x8c]
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov byte [esp + 0x7ec], 0
call fcn.004c7160
mov ebx, eax
lea edi, [ebx + 0x30]
push edi
mov dword [esp + 0x34], edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea eax, [esi + 1]
cmp esi, eax
mov byte [esp + 0x7ec], 0x10
mov dword [esp + 0xc], eax
jge 0x411ee3
add ebx, 0x10
mov dword [esp + 0x18], ebx
lea eax, [esp + 0x5c]
push eax
mov eax, dword [esp + 0x1c]
lea ebx, [esp + 0x3c]
mov dword [esp + 0x3c], esi
call fcn.00416b10
mov eax, dword [esp + 0xc]
inc esi
cmp esi, eax
jl 0x411ec4
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov dword [esp + 0x7ec], 0xffffffff
mov esi, dword [esp + 0x48]
mov dword [esp + 0x44], vtable.Xenesis2::Foundation::Memory::xEncryptData_int_.0
call fcn.004c7160
mov ebx, eax
lea eax, [ebx + 0x30]
push eax
mov dword [esp + 0x10], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea edi, [esi + 1]
cmp esi, edi
mov dword [esp + 0x7ec], 0x11
jge 0x411f4b
add ebx, 0x10
mov dword [esp + 0x18], ebx
nop
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x5c]
push ecx
lea ebx, [esp + 0x3c]
mov dword [esp + 0x3c], esi
call fcn.00416b10
inc esi
cmp esi, edi
jl 0x411f30
mov edx, dword [esp + 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [esp + 0x7e4]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret