Function at 0x45ce80
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x518870
mov eax, dword fs:[0]
push eax
sub esp, 0xfc
push ebx
push esi
push edi
mov eax, dword [0x56858c]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [0x5684f8]
mov edx, dword [eax + 0xc]
mov ecx, 0x5684f8
call edx
add eax, 0x10
mov dword [ebp - 0x18], eax
mov eax, dword [0x5684f8]
mov edx, dword [eax + 0xc]
xor ebx, ebx
mov ecx, 0x5684f8
mov dword [ebp - 4], ebx
call edx
add eax, 0x10
mov dword [ebp - 0x2c], eax
mov eax, dword [0x5684f8]
mov edx, dword [eax + 0xc]
mov ecx, 0x5684f8
mov byte [ebp - 4], 1
call edx
add eax, 0x10
mov dword [ebp - 0x14], eax
lea ecx, [ebp - 0x108]
mov byte [ebp - 4], 2
call fcn.0044d210
mov ecx, 0x56a4bc
mov byte [ebp - 4], 3
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 6
jbe 0x45cf5b
mov esi, dword [esi + 0x30]
mov eax, dword [esi + 0x48]
cmp eax, ebx
je 0x45cf5b
mov ecx, dword [esi + 0x50]
cmp ecx, ebx
je 0x45cf4f
mov esi, dword [esi + 0x4c]
mov ecx, dword [ecx + 0xc]
imul esi, ecx
add esi, eax
jmp 0x45cf5d
mov esi, dword [esi + 0x4c]
xor ecx, ecx
imul esi, ecx
add esi, eax
jmp 0x45cf5d
xor esi, esi
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x20]
cmp ecx, eax
je 0x45cf8d
mov edx, dword [ebp - 0x10]
push edx
push ecx
push eax
push eax
call fcn.004f59a0
mov ecx, dword [ebp - 0x10]
push ecx
mov edi, eax
mov eax, dword [esi + 0x24]
lea edx, [esi + 0x2c]
push edx
push eax
push edi
call fcn.0048cd80
add esp, 0x20
mov dword [esi + 0x24], edi
mov ecx, 0x56a4bc
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 6
jbe 0x45cfe2
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
cmp ecx, ebx
je 0x45cfe2
mov edx, dword [eax + 0x50]
cmp edx, ebx
je 0x45cfd6
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45cfe4
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45cfe4
xor eax, eax
or edi, 0xffffffff
mov ecx, 0x56a4bc
mov dword [eax + 0x1c], edi
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 6
jbe 0x45d03f
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
cmp ecx, ebx
je 0x45d03f
mov edx, dword [eax + 0x50]
cmp edx, ebx
je 0x45d033
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45d041
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45d041
xor eax, eax
mov ecx, 0x56a4bc
mov dword [eax + 0x18], edi
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x4c], ebx
call fcn.00416ad0
mov ecx, dword [0x5699f4]
mov eax, dword [ecx + 0x50]
cmp eax, ebx
jne 0x45d065
xor ecx, ecx
jmp 0x45d07b
mov edx, dword [ecx + 0x58]
cmp edx, ebx
je 0x45d071
mov edx, dword [edx + 0xc]
jmp 0x45d073
xor edx, edx
mov ecx, dword [ecx + 0x54]
imul ecx, edx
add ecx, eax
push str.save_04d__02d
lea edx, [ebp - 0x44]
push edx
call fcn.0040c0e0
push eax
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 4
call fcn.00409050
mov eax, dword [ebp - 0x44]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edi
dec edi
test edi, edi
jg 0x45d0b6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 4
push str..dat
lea ecx, [ebp - 0x18]
call fcn.00404b10
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x20], ebx
mov edi, edi
push 0x14
call fcn.00503a77
xor ebx, ebx
add esp, 4
cmp eax, ebx
je 0x45d0ed
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
mov esi, eax
jmp 0x45d0ef
xor esi, esi
xor edi, edi
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x38], ebx
cmp esi, ebx
je 0x45d133
mov edi, esi
push 0x18
mov dword [ebp - 0x40], edi
call fcn.00503a77
add esp, 4
cmp eax, ebx
je 0x45d119
mov dword [eax], vtable.yaneuraoGameSDK3rd::YTL::nonarray_ref_object_class_Environment::CSaveFileState::page_.0
mov dword [eax + 0x14], esi
jmp 0x45d11b
xor eax, eax
mov ecx, 1
mov dword [eax + 4], ecx
mov byte [eax + 8], cl
mov dword [eax + 0xc], 0x14
mov dword [ebp - 0x38], eax
mov dword [eax + 0x10], ecx
mov ecx, dword [ebp - 0x48]
inc ecx
mov byte [ebp - 4], 5
mov dword [edi], ebx
mov dword [ebp - 0x44], ecx
push 0x10
call fcn.00503a77
mov esi, eax
add esp, 4
mov dword [ebp - 0x10], esi
xor edi, edi
cmp esi, edi
je 0x45d179
mov dword [esi], edi
mov dword [esi + 4], edi
mov dword [esi + 8], edi
mov edx, dword [0x5684f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5684f8
mov byte [ebp - 4], 7
call eax
add eax, 0x10
mov dword [esi + 0xc], eax
jmp 0x45d17b
xor esi, esi
mov byte [ebp - 4], 5
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x1c], edi
cmp esi, edi
je 0x45d1bf
push 0x18
mov dword [ebp - 0x24], esi
call fcn.00503a77
add esp, 4
cmp eax, edi
je 0x45d1a5
mov dword [eax], vtable.yaneuraoGameSDK3rd::YTL::nonarray_ref_object_class_Environment::CSaveFileState::item_.0
mov dword [eax + 0x14], esi
jmp 0x45d1a7
xor eax, eax
mov ecx, 1
mov dword [eax + 4], ecx
mov byte [eax + 8], cl
mov dword [eax + 0xc], 0x10
mov dword [ebp - 0x1c], eax
mov dword [eax + 0x10], ecx
mov ecx, dword [ebp - 0x44]
mov edx, dword [ebp - 0x18]
lea eax, [ebx + 1]
push eax
push ecx
mov dword [ebp - 0x10], eax
push edx
lea eax, [ebp - 0x2c]
push eax
mov byte [ebp - 4], 8
call fcn.0040c740
mov ecx, dword [ebp - 0x2c]
add esp, 0x10
push 1
push ecx
lea ecx, [ebp - 0x108]
call fcn.004a0460
test al, al
je 0x45d442
push 8
call fcn.00503a77
add esp, 4
cmp eax, edi
je 0x45d218
mov edx, dword [ebp - 0x108]
mov dword [eax], edx
mov ecx, dword [ebp - 0x104]
mov dword [eax + 4], ecx
jmp 0x45d21a
xor eax, eax
mov ecx, dword [ebp - 0x24]
push eax
call fcn.0043f630
lea edx, [ebp - 0x28]
push edx
lea ecx, [ebp - 0x108]
call fcn.004411e0
mov eax, dword [eax]
mov ebx, dword [ebp - 0x14]
lea esi, [eax - 0x10]
lea edi, [ebx - 0x10]
mov byte [ebp - 4], 9
cmp esi, edi
je 0x45d2db
cmp dword [edi + 0xc], 0
jl 0x45d2cb
mov ecx, dword [esi]
cmp ecx, dword [edi]
jne 0x45d2cb
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
call edx
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x45d276
cmp eax, dword [esi]
jne 0x45d276
mov ebx, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x45d2aa
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov ebx, eax
test ebx, ebx
je 0x45db2c
mov eax, dword [esi + 4]
mov dword [ebx + 4], eax
mov eax, dword [esi + 4]
inc eax
push eax
add esi, 0x10
push esi
push eax
lea ecx, [ebx + 0x10]
push ecx
call fcn.00503a02
add esp, 0x10
lea eax, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x45d2c3
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
add ebx, 0x10
mov dword [ebp - 0x14], ebx
jmp 0x45d2db
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x14]
call fcn.004049b0
mov ebx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x28]
add eax, 0xfffffff0
mov byte [ebp - 4], 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45d2fe
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [ebx - 0xc], 0
jne 0x45d392
lea ecx, [ebp - 0x34]
push ecx
lea ecx, [ebp - 0x108]
call fcn.00441190
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea esi, [ebx - 0x10]
mov byte [ebp - 4], 0xa
cmp eax, esi
je 0x45d36f
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x45d35f
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x45d35f
push eax
call fcn.00401650
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x45d357
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [ebp - 0x14], ebx
jmp 0x45d36f
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebp - 0x14]
call fcn.004049b0
mov ebx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x34]
add eax, 0xfffffff0
mov byte [ebp - 4], 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45d392
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x24]
mov edi, dword [eax + 0xc]
add eax, 0xc
lea esi, [ebx - 0x10]
sub edi, 0x10
mov dword [ebp - 0x30], eax
cmp esi, edi
je 0x45d43d
cmp dword [edi + 0xc], 0
jl 0x45d430
mov ecx, dword [esi]
cmp ecx, dword [edi]
jne 0x45d430
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x45d3d9
cmp eax, dword [esi]
jne 0x45d3d9
mov ebx, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x45d40d
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov ebx, eax
test ebx, ebx
je 0x45db2c
mov eax, dword [esi + 4]
mov dword [ebx + 4], eax
mov eax, dword [esi + 4]
inc eax
push eax
add esi, 0x10
push esi
push eax
lea ecx, [ebx + 0x10]
push ecx
call fcn.00503a02
add esp, 0x10
lea eax, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x45d426
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [ebp - 0x30]
add ebx, 0x10
mov dword [eax], ebx
jmp 0x45d43d
mov eax, dword [ebx - 0xc]
mov ecx, dword [ebp - 0x30]
push eax
push ebx
call fcn.004049b0
mov eax, dword [ebp - 0x40]
inc dword [eax]
mov ebx, dword [ebp - 0x40]
mov eax, dword [ebx + 8]
mov esi, dword [ebx + 0xc]
cmp eax, esi
jne 0x45d4ad
mov edi, dword [ebx + 4]
sub eax, edi
mov ecx, eax
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 0x15555554
ja 0x45db31
sub esi, edi
mov eax, 0x2aaaaaab
imul esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
inc ecx
add eax, edx
cmp ecx, eax
jbe 0x45d4ad
mov edx, eax
shr edx, 1
mov esi, 0x15555555
sub esi, edx
cmp esi, eax
jae 0x45d49c
xor eax, eax
jmp 0x45d49e
add eax, edx
cmp eax, ecx
jae 0x45d4a4
mov eax, ecx
push eax
lea ecx, [ebx + 4]
call fcn.0044a500
mov eax, dword [ebx + 8]
mov esi, dword [ebp - 0x1c]
xor edi, edi
cmp eax, edi
je 0x45d4cb
mov ecx, dword [ebp - 0x24]
mov dword [eax], ecx
mov dword [eax + 4], edi
mov dword [eax + 8], esi
cmp esi, edi
je 0x45d4cb
inc dword [esi + 4]
add dword [ebx + 8], 0xc
mov byte [ebp - 4], 5
cmp esi, edi
je 0x45d4fb
dec dword [esi + 4]
jne 0x45d4f5
cmp byte [esi + 8], 0
je 0x45d4ea
mov edx, dword [esi]
mov eax, dword [edx]
mov ecx, esi
call eax
mov edx, dword [esi]
mov eax, dword [edx + 4]
push 1
mov ecx, esi
call eax
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x24], edi
mov ebx, dword [ebp - 0x10]
cmp ebx, 8
jl 0x45d140
mov edx, dword [vtable.CCriticalSection.0]
mov eax, dword [edx]
mov ecx, 0x55925c
mov ebx, vtable.CCriticalLock.0
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x64], ecx
call eax
mov dword [ebp - 0x60], 1
xor edi, edi
mov byte [ebp - 4], 0xb
cmp dword [0x5699f4], edi
jne 0x45d5a7
push 0x68
call fcn.00503a77
mov esi, eax
add esp, 4
mov dword [ebp - 0x10], esi
mov byte [ebp - 4], 0xc
cmp esi, edi
je 0x45d59f
mov edx, dword [0x5684f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5684f8
call eax
add eax, 0x10
mov dword [esi + 0x10], eax
mov edx, dword [0x5684f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5684f8
call eax
add eax, 0x10
mov dword [esi + 0x14], eax
mov dword [esi + 0x30], edi
mov dword [esi + 0x34], edi
mov dword [esi + 0x38], edi
mov dword [esi + 0x40], edi
mov dword [esi + 0x44], edi
mov dword [esi + 0x48], edi
mov dword [esi + 0x50], edi
mov dword [esi + 0x54], edi
mov dword [esi + 0x58], edi
mov dword [esi + 0x5c], edi
mov dword [esi + 0x60], edi
mov dword [esi + 0x64], edi
jmp 0x45d5a1
xor esi, esi
mov dword [0x5699f4], esi
mov edx, dword [vtable.CCriticalSection.0]
mov eax, dword [edx + 4]
mov ecx, 0x55925c
mov byte [ebp - 4], 5
mov dword [ebp - 0x68], ebx
call eax
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 6
jbe 0x45d609
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
cmp ecx, edi
je 0x45d609
mov edx, dword [eax + 0x50]
cmp edx, edi
je 0x45d5fd
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45d60b
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45d60b
xor eax, eax
mov esi, dword [eax + 0x28]
lea ecx, [eax + 0x20]
mov eax, dword [ecx + 4]
mov dword [ebp - 0x30], ecx
cmp eax, esi
jne 0x45d67d
mov edx, ecx
mov ebx, dword [edx]
sub eax, ebx
mov ecx, eax
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 0x15555554
ja 0x45db31
sub esi, ebx
mov eax, 0x2aaaaaab
imul esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
inc ecx
add eax, edx
cmp ecx, eax
jbe 0x45d67a
mov edx, eax
shr edx, 1
mov esi, 0x15555555
sub esi, edx
cmp esi, eax
jae 0x45d669
xor eax, eax
jmp 0x45d66b
add eax, edx
cmp eax, ecx
jae 0x45d671
mov eax, ecx
mov ecx, dword [ebp - 0x30]
push eax
call fcn.0044a500
mov ecx, dword [ebp - 0x30]
mov eax, dword [ecx + 4]
cmp eax, edi
je 0x45d69b
mov edx, dword [ebp - 0x40]
mov dword [eax], edx
mov edx, dword [ebp - 0x38]
mov dword [eax + 4], edi
mov dword [eax + 8], edx
cmp edx, edi
je 0x45d69e
inc dword [edx + 4]
jmp 0x45d69e
mov edx, dword [ebp - 0x38]
add dword [ecx + 4], 0xc
mov ecx, dword [ebp - 0x40]
sub esp, 0xc
mov eax, esp
mov dword [ebp - 0x10], esp
mov dword [eax], ecx
mov dword [eax + 4], edi
mov dword [eax + 8], edx
cmp edx, edi
je 0x45d6bc
inc dword [edx + 4]
call fcn.00444230
mov ebx, eax
add esp, 0xc
cmp ebx, edi
jl 0x45daa3
mov edx, dword [vtable.CCriticalSection.0]
mov eax, dword [edx]
mov ecx, 0x55925c
mov dword [ebp - 0x80], vtable.CCriticalLock.0
mov dword [ebp - 0x7c], ecx
call eax
mov dword [ebp - 0x78], 1
mov byte [ebp - 4], 0xd
cmp dword [0x5699f4], edi
jne 0x45d76b
push 0x68
call fcn.00503a77
mov esi, eax
add esp, 4
mov dword [ebp - 0x10], esi
mov byte [ebp - 4], 0xe
cmp esi, edi
je 0x45d763
mov edx, dword [0x5684f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5684f8
call eax
add eax, 0x10
mov dword [esi + 0x10], eax
mov edx, dword [0x5684f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5684f8
call eax
add eax, 0x10
mov dword [esi + 0x14], eax
mov dword [esi + 0x30], edi
mov dword [esi + 0x34], edi
mov dword [esi + 0x38], edi
mov dword [esi + 0x40], edi
mov dword [esi + 0x44], edi
mov dword [esi + 0x48], edi
mov dword [esi + 0x50], edi
mov dword [esi + 0x54], edi
mov dword [esi + 0x58], edi
mov dword [esi + 0x5c], edi
mov dword [esi + 0x60], edi
mov dword [esi + 0x64], edi
jmp 0x45d765
xor esi, esi
mov dword [0x5699f4], esi
mov edx, dword [vtable.CCriticalSection.0]
mov eax, dword [edx + 4]
mov ecx, 0x55925c
mov byte [ebp - 4], 5
mov dword [ebp - 0x80], vtable.CCriticalLock.0
call eax
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 6
jbe 0x45d7d1
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
cmp ecx, edi
je 0x45d7d1
mov edx, dword [eax + 0x50]
cmp edx, edi
je 0x45d7c5
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45d7d3
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45d7d3
xor eax, eax
cmp dword [eax + 0x18], edi
jl 0x45d83d
mov eax, dword [ebp - 0x40]
mov ecx, dword [eax + 4]
lea edx, [ebx + ebx*2]
lea eax, [ecx + edx*4]
mov ecx, dword [eax]
cmp ecx, edi
jne 0x45d7ee
xor eax, eax
jmp 0x45d804
mov edx, dword [eax + 8]
cmp edx, edi
je 0x45d7fa
mov edx, dword [edx + 0xc]
jmp 0x45d7fc
xor edx, edx
mov eax, dword [eax + 4]
imul eax, edx
add eax, ecx
mov edx, dword [eax]
cmp edx, edi
jne 0x45d80e
xor eax, eax
jmp 0x45d824
mov ecx, dword [eax + 8]
cmp ecx, edi
je 0x45d81a
mov ecx, dword [ecx + 0xc]
jmp 0x45d81c
xor ecx, ecx
mov eax, dword [eax + 4]
imul eax, ecx
add eax, edx
mov edx, dword [ebp - 0x4c]
cmp edx, dword [eax + 4]
jg 0x45daa3
jl 0x45d83d
mov ecx, dword [ebp - 0x50]
cmp ecx, dword [eax]
jae 0x45daa3
mov edx, dword [vtable.CCriticalSection.0]
mov eax, dword [edx]
mov ecx, 0x55925c
mov dword [ebp - 0x5c], vtable.CCriticalLock.0
mov dword [ebp - 0x58], ecx
call eax
mov dword [ebp - 0x54], 1
mov byte [ebp - 4], 0xf
cmp dword [0x5699f4], edi
jne 0x45d8da
push 0x68
call fcn.00503a77
mov esi, eax
add esp, 4
mov dword [ebp - 0x10], esi
mov byte [ebp - 4], 0x10
cmp esi, edi
je 0x45d8d2
mov edx, dword [0x5684f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5684f8
call eax
add eax, 0x10
mov dword [esi + 0x10], eax
mov edx, dword [0x5684f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5684f8
call eax
add eax, 0x10
mov dword [esi + 0x14], eax
mov dword [esi + 0x30], edi
mov dword [esi + 0x34], edi
mov dword [esi + 0x38], edi
mov dword [esi + 0x40], edi
mov dword [esi + 0x44], edi
mov dword [esi + 0x48], edi
mov dword [esi + 0x50], edi
mov dword [esi + 0x54], edi
mov dword [esi + 0x58], edi
mov dword [esi + 0x5c], edi
mov dword [esi + 0x60], edi
mov dword [esi + 0x64], edi
jmp 0x45d8d4
xor esi, esi
mov dword [0x5699f4], esi
mov edx, dword [vtable.CCriticalSection.0]
mov eax, dword [edx + 4]
mov ecx, 0x55925c
mov byte [ebp - 4], 5
mov dword [ebp - 0x5c], vtable.CCriticalLock.0
call eax
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 6
jbe 0x45d940
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
cmp ecx, edi
je 0x45d940
mov edx, dword [eax + 0x50]
cmp edx, edi
je 0x45d934
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45d942
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45d942
xor eax, eax
mov edx, dword [ebp - 0x48]
mov dword [eax + 0x18], edx
mov eax, dword [vtable.CCriticalSection.0]
mov edx, dword [eax]
mov ecx, 0x55925c
mov dword [ebp - 0x74], vtable.CCriticalLock.0
mov dword [ebp - 0x70], ecx
call edx
mov dword [ebp - 0x6c], 1
mov byte [ebp - 4], 0x11
cmp dword [0x5699f4], edi
jne 0x45d9e2
push 0x68
call fcn.00503a77
mov esi, eax
add esp, 4
mov dword [ebp - 0x10], esi
mov byte [ebp - 4], 0x12
cmp esi, edi
je 0x45d9da
mov eax, dword [0x5684f8]
mov edx, dword [eax + 0xc]
mov ecx, 0x5684f8
call edx
add eax, 0x10
mov dword [esi + 0x10], eax
mov eax, dword [0x5684f8]
mov edx, dword [eax + 0xc]
mov ecx, 0x5684f8
call edx
add eax, 0x10
mov dword [esi + 0x14], eax
mov dword [esi + 0x30], edi
mov dword [esi + 0x34], edi
mov dword [esi + 0x38], edi
mov dword [esi + 0x40], edi
mov dword [esi + 0x44], edi
mov dword [esi + 0x48], edi
mov dword [esi + 0x50], edi
mov dword [esi + 0x54], edi
mov dword [esi + 0x58], edi
mov dword [esi + 0x5c], edi
mov dword [esi + 0x60], edi
mov dword [esi + 0x64], edi
jmp 0x45d9dc
xor esi, esi
mov dword [0x5699f4], esi
mov eax, dword [vtable.CCriticalSection.0]
mov edx, dword [eax + 4]
mov ecx, 0x55925c
mov byte [ebp - 4], 5
mov dword [ebp - 0x74], vtable.CCriticalLock.0
call edx
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 6
jbe 0x45da47
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
cmp ecx, edi
je 0x45da47
mov edx, dword [eax + 0x50]
cmp edx, edi
je 0x45da3b
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45da49
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45da49
xor eax, eax
mov edx, dword [ebp - 0x40]
mov dword [eax + 0x1c], ebx
mov eax, dword [edx + 4]
lea ecx, [ebx + ebx*2]
lea eax, [eax + ecx*4]
mov ecx, dword [eax]
cmp ecx, edi
jne 0x45da62
xor eax, eax
jmp 0x45da78
mov edx, dword [eax + 8]
cmp edx, edi
je 0x45da6e
mov edx, dword [edx + 0xc]
jmp 0x45da70
xor edx, edx
mov eax, dword [eax + 4]
imul eax, edx
add eax, ecx
mov edx, dword [eax]
cmp edx, edi
jne 0x45da82
xor eax, eax
jmp 0x45da98
mov ecx, dword [eax + 8]
cmp ecx, edi
je 0x45da8e
mov ecx, dword [ecx + 0xc]
jmp 0x45da90
xor ecx, ecx
mov eax, dword [eax + 4]
imul eax, ecx
add eax, edx
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x4c], edx
mov esi, dword [ebp - 0x38]
mov byte [ebp - 4], 3
cmp esi, edi
je 0x45dad2
dec dword [esi + 4]
jne 0x45dacc
cmp byte [esi + 8], 0
je 0x45dac1
mov eax, dword [esi]
mov edx, dword [eax]
mov ecx, esi
call edx
mov eax, dword [esi]
mov edx, dword [eax + 4]
push 1
mov ecx, esi
call edx
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x40], edi
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x48], eax
cmp eax, 0x32
jl 0x45d0d0
mov ecx, 0x56a4bc
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
xor ebx, ebx
cmp eax, 6
jbe 0x45db47
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
cmp ecx, ebx
je 0x45db47
mov edx, dword [eax + 0x50]
cmp edx, ebx
je 0x45db3b
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45db49
call fcn.004015c0
push str.vector_T__too_long
call fcn.005035ed
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45db49
xor eax, eax
cmp dword [eax + 0x18], ebx
jge 0x45db52
xor edi, edi
jmp 0x45dbac
mov ecx, 0x56a4bc
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 6
jbe 0x45dba7
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
cmp ecx, ebx
je 0x45dba7
mov edx, dword [eax + 0x50]
cmp edx, ebx
je 0x45db9b
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45dba9
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45dba9
xor eax, eax
mov edi, dword [eax + 0x18]
mov ecx, 0x56a4bc
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 6
jbe 0x45dc01
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
cmp ecx, ebx
je 0x45dc01
mov edx, dword [eax + 0x50]
cmp edx, ebx
je 0x45dbf5
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45dc03
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45dc03
xor eax, eax
mov ecx, 0x56a4bc
mov dword [eax + 0x10], edi
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 6
jbe 0x45dc5b
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
cmp ecx, ebx
je 0x45dc5b
mov edx, dword [eax + 0x50]
cmp edx, ebx
je 0x45dc4f
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45dc5d
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45dc5d
xor eax, eax
mov ecx, 0x56a4bc
mov dword [eax + 0xc], edi
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 6
jbe 0x45dcb5
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
cmp ecx, ebx
je 0x45dcb5
mov edx, dword [eax + 0x50]
cmp edx, ebx
je 0x45dca9
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45dcb7
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45dcb7
xor eax, eax
push 0x14
mov dword [eax + 0x14], 1
call fcn.00503a77
add esp, 4
cmp eax, ebx
je 0x45dcd9
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
mov edi, eax
jmp 0x45dcdb
xor edi, edi
mov ecx, 0x56a4bc
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 6
jbe 0x45dd30
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
cmp ecx, ebx
je 0x45dd30
mov edx, dword [eax + 0x50]
cmp edx, ebx
je 0x45dd24
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45dd32
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45dd32
xor eax, eax
push edi
lea ecx, [eax + 0x30]
call fcn.0043f750
mov ecx, 0x56a4bc
call fcn.00416ad0
mov ecx, dword [0x5699f4]
mov eax, dword [ecx + 0x50]
cmp eax, ebx
jne 0x45dd56
xor ecx, ecx
jmp 0x45dd6c
mov edx, dword [ecx + 0x58]
cmp edx, ebx
je 0x45dd62
mov edx, dword [edx + 0xc]
jmp 0x45dd64
xor edx, edx
mov ecx, dword [ecx + 0x54]
imul ecx, edx
add ecx, eax
push str.qsave_02d
lea edx, [ebp - 0x10]
push edx
call fcn.0040c0e0
push eax
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0x13
call fcn.00409050
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45ddaa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 4
push str..dat
lea ecx, [ebp - 0x18]
call fcn.00404b10
xor edi, edi
jmp 0x45ddc0
push 0x10
call fcn.00503a77
mov esi, eax
add esp, 4
mov dword [ebp - 0x28], esi
xor eax, eax
cmp esi, eax
je 0x45ddf9
mov dword [esi], eax
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov edx, dword [0x5684f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5684f8
mov byte [ebp - 4], 0x15
call eax
add eax, 0x10
mov dword [esi + 0xc], eax
jmp 0x45ddfb
xor esi, esi
push 1
push esi
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 3
call fcn.0043f6d0
mov ecx, dword [ebp - 0x18]
inc edi
push edi
push ecx
lea edx, [ebp - 0x2c]
push edx
mov byte [ebp - 4], 0x16
mov dword [ebp - 0x28], edi
call fcn.0040c740
mov eax, dword [ebp - 0x2c]
add esp, 0xc
push 1
push eax
lea ecx, [ebp - 0x108]
call fcn.004a0460
mov edi, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x24]
test al, al
je 0x45dfb2
push 8
call fcn.00503a77
add esp, 4
test eax, eax
je 0x45de63
mov ecx, dword [ebp - 0x108]
mov dword [eax], ecx
mov edx, dword [ebp - 0x104]
mov dword [eax + 4], edx
jmp 0x45de65
xor eax, eax
test ebx, ebx
jne 0x45de6d
xor ecx, ecx
jmp 0x45de80
test edi, edi
je 0x45de76
mov edx, dword [edi + 0xc]
jmp 0x45de78
xor edx, edx
mov ecx, dword [ebp - 0x20]
imul ecx, edx
add ecx, ebx
push eax
call fcn.0043f630
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0x108]
call fcn.004411e0
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0x17
call fcn.00409050
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
mov byte [ebp - 4], 0x16
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45dec5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x14]
cmp dword [ecx - 0xc], 0
jne 0x45df0d
lea edx, [ebp - 0x34]
push edx
lea ecx, [ebp - 0x108]
call fcn.00441190
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0x18
call fcn.00409050
mov eax, dword [ebp - 0x34]
add eax, 0xfffffff0
mov byte [ebp - 4], 0x16
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45df0d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test ebx, ebx
jne 0x45df15
xor eax, eax
jmp 0x45df28
test edi, edi
je 0x45df1e
mov ecx, dword [edi + 0xc]
jmp 0x45df20
xor ecx, ecx
mov eax, dword [ebp - 0x20]
imul eax, ecx
add eax, ebx
lea edx, [ebp - 0x14]
lea ecx, [eax + 0xc]
push edx
call fcn.00409050
mov ecx, 0x56a4bc
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 6
jbe 0x45df89
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
test ecx, ecx
je 0x45df89
mov edx, dword [eax + 0x50]
test edx, edx
je 0x45df7d
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45df8b
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45df8b
xor eax, eax
mov edx, dword [eax + 0x30]
test edx, edx
jne 0x45df96
xor eax, eax
jmp 0x45dfac
mov ecx, dword [eax + 0x38]
test ecx, ecx
je 0x45dfa2
mov ecx, dword [ecx + 0xc]
jmp 0x45dfa4
xor ecx, ecx
mov eax, dword [eax + 0x34]
imul eax, ecx
add eax, edx
mov dword [eax], 1
mov ecx, 0x56a4bc
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 6
jbe 0x45e007
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
test ecx, ecx
je 0x45e007
mov edx, dword [eax + 0x50]
test edx, edx
je 0x45dffb
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45e009
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45e009
xor eax, eax
mov edx, dword [eax + 0x30]
test edx, edx
jne 0x45e014
xor eax, eax
jmp 0x45e02a
mov ecx, dword [eax + 0x38]
test ecx, ecx
je 0x45e020
mov ecx, dword [ecx + 0xc]
jmp 0x45e022
xor ecx, ecx
mov eax, dword [eax + 0x34]
imul eax, ecx
add eax, edx
mov edx, dword [eax + 8]
cmp edx, dword [eax + 0xc]
lea esi, [eax + 4]
jne 0x45e03e
push 1
mov ecx, esi
call fcn.004c32d0
mov eax, dword [esi + 4]
test eax, eax
je 0x45e057
mov ecx, dword [ebp - 0x20]
mov dword [eax], ebx
mov dword [eax + 4], ecx
mov dword [eax + 8], edi
test edi, edi
je 0x45e057
inc dword [edi + 4]
add dword [esi + 4], 0xc
mov byte [ebp - 4], 3
test edi, edi
je 0x45e089
dec dword [edi + 4]
jne 0x45e081
cmp byte [edi + 8], 0
je 0x45e076
mov edx, dword [edi]
mov eax, dword [edx]
mov ecx, edi
call eax
mov edx, dword [edi]
mov eax, dword [edx + 4]
push 1
mov ecx, edi
call eax
xor eax, eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x24], eax
mov edi, dword [ebp - 0x28]
cmp edi, 8
jl 0x45ddc0
mov ecx, 0x56a4bc
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
xor ebx, ebx
cmp ecx, 6
jbe 0x45e0ec
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
cmp ecx, ebx
je 0x45e0ec
mov edx, dword [eax + 0x50]
cmp edx, ebx
je 0x45e0e0
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45e0ee
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45e0ee
xor eax, eax
mov edx, dword [eax + 0x30]
sub esp, 0xc
mov ecx, esp
mov dword [ecx], edx
mov edx, dword [eax + 0x34]
mov dword [ecx + 4], edx
mov eax, dword [eax + 0x38]
mov dword [ebp - 0x10], esp
mov dword [ecx + 8], eax
cmp eax, ebx
je 0x45e10e
inc dword [eax + 4]
call fcn.00444230
add esp, 0xc
mov ecx, 0x56a4bc
mov edi, eax
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 6
jbe 0x45e16d
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
cmp ecx, ebx
je 0x45e16d
mov edx, dword [eax + 0x50]
cmp edx, ebx
je 0x45e161
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45e16f
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45e16f
xor eax, eax
push 0x14
mov dword [eax + 4], edi
call fcn.00503a77
add esp, 4
cmp eax, ebx
je 0x45e18d
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
mov edi, eax
jmp 0x45e18f
xor edi, edi
mov ecx, 0x56a4bc
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 6
jbe 0x45e1e4
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
cmp ecx, ebx
je 0x45e1e4
mov edx, dword [eax + 0x50]
cmp edx, ebx
je 0x45e1d8
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45e1e6
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45e1e6
xor eax, eax
push edi
lea ecx, [eax + 0x3c]
call fcn.0043f750
mov ecx, 0x56a4bc
call fcn.00416ad0
mov ecx, dword [0x5699f4]
mov eax, dword [ecx + 0x50]
cmp eax, ebx
jne 0x45e20a
xor ecx, ecx
jmp 0x45e220
mov edx, dword [ecx + 0x58]
cmp edx, ebx
je 0x45e216
mov edx, dword [edx + 0xc]
jmp 0x45e218
xor edx, edx
mov ecx, dword [ecx + 0x54]
imul ecx, edx
add ecx, eax
push str.asave_02d
lea edx, [ebp - 0x10]
push edx
call fcn.0040c0e0
push eax
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0x19
call fcn.00409050
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45e25e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 4
push str..dat
lea ecx, [ebp - 0x18]
call fcn.00404b10
xor edi, edi
nop
push 0x10
call fcn.00503a77
mov esi, eax
add esp, 4
mov dword [ebp - 0x28], esi
xor eax, eax
cmp esi, eax
je 0x45e2a9
mov dword [esi], eax
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov edx, dword [0x5684f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5684f8
mov byte [ebp - 4], 0x1b
call eax
add eax, 0x10
mov dword [esi + 0xc], eax
jmp 0x45e2ab
xor esi, esi
push 1
push esi
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 3
call fcn.0043f6d0
mov ecx, dword [ebp - 0x18]
inc edi
push edi
push ecx
lea edx, [ebp - 0x2c]
push edx
mov byte [ebp - 4], 0x1c
mov dword [ebp - 0x28], edi
call fcn.0040c740
mov eax, dword [ebp - 0x2c]
add esp, 0xc
push 1
push eax
lea ecx, [ebp - 0x108]
call fcn.004a0460
mov edi, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x24]
test al, al
je 0x45e464
push 8
call fcn.00503a77
add esp, 4
test eax, eax
je 0x45e315
mov ecx, dword [ebp - 0x108]
mov dword [eax], ecx
mov edx, dword [ebp - 0x104]
mov dword [eax + 4], edx
mov ecx, eax
jmp 0x45e317
xor ecx, ecx
test ebx, ebx
jne 0x45e31f
xor eax, eax
jmp 0x45e330
test edi, edi
je 0x45e328
mov eax, dword [edi + 0xc]
jmp 0x45e32a
xor eax, eax
imul eax, dword [ebp - 0x20]
add eax, ebx
push ecx
mov ecx, eax
call fcn.0043f630
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0x108]
call fcn.004411e0
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0x1d
call fcn.00409050
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
mov byte [ebp - 4], 0x1c
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45e377
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x14]
cmp dword [ecx - 0xc], 0
jne 0x45e3bf
lea edx, [ebp - 0x34]
push edx
lea ecx, [ebp - 0x108]
call fcn.00441190
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0x1e
call fcn.00409050
mov eax, dword [ebp - 0x34]
add eax, 0xfffffff0
mov byte [ebp - 4], 0x1c
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45e3bf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test ebx, ebx
jne 0x45e3c7
xor eax, eax
jmp 0x45e3da
test edi, edi
je 0x45e3d0
mov ecx, dword [edi + 0xc]
jmp 0x45e3d2
xor ecx, ecx
mov eax, dword [ebp - 0x20]
imul eax, ecx
add eax, ebx
lea edx, [ebp - 0x14]
lea ecx, [eax + 0xc]
push edx
call fcn.00409050
mov ecx, 0x56a4bc
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 6
jbe 0x45e43b
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
test ecx, ecx
je 0x45e43b
mov edx, dword [eax + 0x50]
test edx, edx
je 0x45e42f
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45e43d
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45e43d
xor eax, eax
mov edx, dword [eax + 0x3c]
test edx, edx
jne 0x45e448
xor eax, eax
jmp 0x45e45e
mov ecx, dword [eax + 0x44]
test ecx, ecx
je 0x45e454
mov ecx, dword [ecx + 0xc]
jmp 0x45e456
xor ecx, ecx
mov eax, dword [eax + 0x40]
imul eax, ecx
add eax, edx
mov dword [eax], 1
mov ecx, 0x56a4bc
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 6
jbe 0x45e4b9
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
test ecx, ecx
je 0x45e4b9
mov edx, dword [eax + 0x50]
test edx, edx
je 0x45e4ad
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45e4bb
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45e4bb
xor eax, eax
mov edx, dword [eax + 0x3c]
test edx, edx
jne 0x45e4c6
xor eax, eax
jmp 0x45e4dc
mov ecx, dword [eax + 0x44]
test ecx, ecx
je 0x45e4d2
mov ecx, dword [ecx + 0xc]
jmp 0x45e4d4
xor ecx, ecx
mov eax, dword [eax + 0x40]
imul eax, ecx
add eax, edx
mov edx, dword [eax + 8]
cmp edx, dword [eax + 0xc]
lea esi, [eax + 4]
jne 0x45e4f0
push 1
mov ecx, esi
call fcn.004c32d0
mov eax, dword [esi + 4]
test eax, eax
je 0x45e509
mov ecx, dword [ebp - 0x20]
mov dword [eax], ebx
mov dword [eax + 4], ecx
mov dword [eax + 8], edi
test edi, edi
je 0x45e509
inc dword [edi + 4]
add dword [esi + 4], 0xc
mov byte [ebp - 4], 3
test edi, edi
je 0x45e53b
dec dword [edi + 4]
jne 0x45e533
cmp byte [edi + 8], 0
je 0x45e528
mov edx, dword [edi]
mov eax, dword [edx]
mov ecx, edi
call eax
mov edx, dword [edi]
mov eax, dword [edx + 4]
push 1
mov ecx, edi
call eax
xor eax, eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x24], eax
mov edi, dword [ebp - 0x28]
cmp edi, 8
jl 0x45e270
mov ecx, 0x56a4bc
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 6
jbe 0x45e59c
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
test ecx, ecx
je 0x45e59c
mov edx, dword [eax + 0x50]
test edx, edx
je 0x45e590
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45e59e
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45e59e
xor eax, eax
mov edx, dword [eax + 0x3c]
sub esp, 0xc
mov ecx, esp
mov dword [ecx], edx
mov edx, dword [eax + 0x40]
mov dword [ecx + 4], edx
mov eax, dword [eax + 0x44]
mov dword [ebp - 0x10], esp
mov dword [ecx + 8], eax
test eax, eax
je 0x45e5be
inc dword [eax + 4]
call fcn.00444230
add esp, 0xc
mov ecx, 0x56a4bc
mov edi, eax
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 6
jbe 0x45e61d
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x48]
test ecx, ecx
je 0x45e61d
mov edx, dword [eax + 0x50]
test edx, edx
je 0x45e611
mov eax, dword [eax + 0x4c]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x45e61f
mov eax, dword [eax + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x45e61f
xor eax, eax
lea ecx, [ebp - 0x108]
mov dword [eax + 8], edi
mov byte [ebp - 4], 2
call fcn.0044c6e0
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45e654
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x2c]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45e677
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x18]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45e69d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret