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

Disassembly:
push 0xffffffffffffffff
push 0x51cb6d
mov eax, dword fs:[0]
push eax
sub esp, 0x104
push ebx
push ebp
push esi
push edi
mov eax, dword [0x56a260]
xor eax, esp
push eax
lea eax, [esp + 0x118]
mov dword fs:[0], eax
mov ebp, ecx
mov dword [esp + 0xa4], ebp
mov eax, dword [esp + 0x128]
xor ebx, ebx
mov edi, 1
add dword [ebp + 0x14], edi
cmp dword [ebp + 0x164], edi
mov dword [eax], ebx
mov dword [eax + 4], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
jne 0x4cf0bf
mov eax, dword [esp + 0x12c]
push eax
lea ecx, [esp + 0x28]
push ecx
mov ecx, ebp
call fcn.004c9700
mov esi, dword [eax]
mov edi, dword [eax + 4]
lea ecx, [esp + 0xd8]
call fcn.004caa30
mov dword [esp + 0x120], ebx
mov dword [esp + 0xc0], ebx
mov dword [esp + 0xbc], ebx
mov dword [esp + 0xd0], ebx
mov dword [esp + 0xcc], ebx
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xc4], ebx
mov dword [esp + 0xd4], ebx
mov dword [esp + 0x94], ebx
mov dword [esp + 0x98], ebx
mov dword [esp + 0x9c], ebx
cmp esi, ebx
mov byte [esp + 0x120], 1
jle 0x4cefdb
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
mov edi, edi
lea edx, [esp + 0xbc]
push edx
lea ecx, [esp + 0x94]
call fcn.004c8c50
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0xec]
call fcn.004c8af0
lea ecx, [esp + 0x34]
push ecx
lea ecx, [esp + 0x10c]
call fcn.004c8af0
sub esi, 1
jne 0x4cefa0
cmp edi, ebx
jle 0x4cf06a
mov dword [esp + 0x30], ebx
mov dword [esp + 0xa0], edi
mov edi, edi
lea edx, [esp + 0x90]
push edx
lea ecx, [esp + 0xdc]
call fcn.004cd4a0
mov esi, dword [esp + 0xfc]
cmp esi, ebx
mov edx, dword [esp + 0x100]
je 0x4cf03b
mov ecx, dword [esp + 0x104]
mov eax, edx
sub eax, esi
sub ecx, esi
sar eax, 2
sar ecx, 2
cmp eax, ecx
jae 0x4cf03b
mov dword [edx], ebx
add edx, 4
mov dword [esp + 0x100], edx
jmp 0x4cf060
cmp esi, edx
mov edi, edx
jbe 0x4cf046
call fcn.004f2608
lea ecx, [esp + 0x30]
push ecx
lea eax, [esp + 0xfc]
push edi
push eax
lea edx, [esp + 0x30]
push edx
mov ecx, eax
call fcn.004c6570
sub dword [esp + 0xa0], 1
jne 0x4ceff0
lea eax, [esp + 0xd8]
push eax
lea ecx, [ebp + 4]
call fcn.004cee20
mov eax, dword [esp + 0x94]
cmp eax, ebx
je 0x4cf08e
push eax
call fcn.004d37ab
add esp, 4
lea ecx, [esp + 0xd8]
mov dword [esp + 0x94], ebx
mov dword [esp + 0x98], ebx
mov dword [esp + 0x9c], ebx
mov dword [esp + 0x120], 0xffffffff
call fcn.004caa90
mov edi, 1
mov ecx, dword [ebp + 8]
cmp ecx, ebx
mov esi, dword [ebp + 0x14]
mov dword [esp + 0xb4], esi
je 0x4cf0dc
mov eax, dword [ebp + 0xc]
sub eax, ecx
sar eax, 6
cmp esi, eax
jb 0x4cf0e1
call fcn.004f2608
mov ecx, dword [ebp + 8]
mov eax, esi
shl eax, 6
add ecx, eax
push ecx
lea ecx, [esp + 0x54]
mov dword [esp + 0xbc], eax
call fcn.004cab20
mov ecx, dword [esp + 0x64]
cmp ecx, ebx
mov dword [esp + 0x120], 2
jne 0x4cf115
mov dword [esp + 0x24], ebx
jmp 0x4cf122
mov eax, dword [esp + 0x68]
sub eax, ecx
sar eax, 2
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x74]
cmp eax, ebx
jne 0x4cf130
mov dword [esp + 0x28], ebx
jmp 0x4cf13d
mov ecx, dword [esp + 0x78]
sub ecx, eax
sar ecx, 2
mov dword [esp + 0x28], ecx
push 5
lea esi, [ebp + 0x3c]
push str.table
mov ecx, esi
call fcn.0041af30
push esi
lea ecx, [ebp + 0x260]
call fcn.004ca600
mov eax, dword [esi]
push esi
push eax
mov ecx, ebp
call fcn.004c4260
push ecx
mov ecx, esp
mov dword [esp + 0xb0], esp
push eax
call fcn.0041abb0
mov ecx, ebp
call fcn.004c7c40
mov dword [esp + 0x30], ebx
call fcn.004daeb7
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x4cf19a
push 0x80004005
call fcn.00402980
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x12c]
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0xa4]
push edx
push eax
lea ecx, [esp + 0x40]
push ecx
mov ecx, ebp
mov byte [esp + 0x130], 4
call fcn.004c8270
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4cf1f6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xa0]
push ecx
lea edx, [esp + 0xb4]
push edx
mov ecx, ebp
call fcn.004c4f20
push edi
push esi
lea eax, [esp + 0xb8]
push eax
lea ecx, [esp + 0xb4]
push ecx
mov ecx, ebp
mov byte [esp + 0x130], 5
call fcn.004c8440
mov ecx, ebp
call fcn.004be9f0
cmp dword [ebp + 0x164], edi
mov edi, dword [esp + 0x64]
je 0x4cf4bd
test edi, edi
mov eax, dword [esp + 0x130]
mov ebx, dword [eax + 4]
mov edx, dword [eax]
mov dword [esp + 0x38], edx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x3c], ebx
jne 0x4cf265
xor eax, eax
jmp 0x4cf26e
mov eax, dword [esp + 0x68]
sub eax, edi
sar eax, 2
mov ecx, dword [ebp + 0xa8]
lea edx, [ecx + eax - 1]
lea ecx, [esp + 0x60]
mov dword [esp + 0x14], edx
xor esi, esi
call fcn.004be480
test eax, eax
jbe 0x4cf2cd
mov ebx, dword [esp + 0x14]
nop
test edi, edi
je 0x4cf2a1
mov eax, dword [esp + 0x68]
sub eax, edi
sar eax, 2
cmp esi, eax
jb 0x4cf2aa
call fcn.004f2608
mov edi, dword [esp + 0x64]
mov eax, dword [edi + esi*4]
add eax, dword [ebp + 0xa8]
lea ecx, [esp + 0x60]
add ebx, eax
add esi, 1
call fcn.004be480
cmp esi, eax
jb 0x4cf290
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x44]
mov esi, dword [esp + 0x74]
test esi, esi
jne 0x4cf2d9
xor eax, eax
jmp 0x4cf2e2
mov eax, dword [esp + 0x78]
sub eax, esi
sar eax, 2
mov ecx, dword [ebp + 0xa8]
add ecx, eax
lea edx, [ebx + ecx - 1]
lea ecx, [esp + 0x70]
mov dword [esp + 0x44], edx
xor ebx, ebx
call fcn.004be480
test eax, eax
jbe 0x4cf33c
test esi, esi
je 0x4cf312
mov eax, dword [esp + 0x78]
sub eax, esi
sar eax, 2
cmp ebx, eax
jb 0x4cf31b
call fcn.004f2608
mov esi, dword [esp + 0x74]
mov eax, dword [esi + ebx*4]
add eax, dword [ebp + 0xa8]
lea ecx, [esp + 0x70]
add dword [esp + 0x44], eax
add ebx, 1
call fcn.004be480
cmp ebx, eax
jb 0x4cf301
mov edi, dword [esp + 0x64]
mov eax, 6
cmp dword [ebp + 0x88], eax
je 0x4cf351
mov eax, dword [ebp + 0x8c]
add eax, eax
add dword [esp + 0x14], eax
add dword [esp + 0x44], eax
mov ecx, dword [esp + 0x130]
mov eax, dword [ecx + 8]
sub eax, dword [ecx]
cmp dword [esp + 0x14], eax
mov dword [esp + 0x2c], eax
jge 0x4cf4ab
sub eax, dword [esp + 0x14]
xor ebx, ebx
lea ecx, [esp + 0x80]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], ebx
xor esi, esi
call fcn.004be480
test eax, eax
jbe 0x4cf3e4
mov edi, dword [esp + 0x84]
lea ebx, [ebx]
test edi, edi
je 0x4cf3b4
mov eax, dword [esp + 0x88]
sub eax, edi
sar eax, 2
cmp esi, eax
jb 0x4cf3c0
call fcn.004f2608
mov edi, dword [esp + 0x84]
cmp dword [edi + esi*4], 0
jne 0x4cf3c9
add ebx, 1
lea ecx, [esp + 0x80]
add esi, 1
call fcn.004be480
cmp esi, eax
jb 0x4cf3a0
mov edi, dword [esp + 0x64]
mov dword [esp + 0x18], ebx
mov ecx, dword [esp + 0x84]
xor ebx, ebx
lea ecx, [ecx]
test ecx, ecx
je 0x4cf46a
mov eax, dword [esp + 0x88]
sub eax, ecx
sar eax, 2
cmp ebx, eax
jae 0x4cf46a
cmp dword [esp + 0x18], 0
jle 0x4cf46a
cmp ebx, eax
jb 0x4cf41f
call fcn.004f2608
mov ecx, dword [esp + 0x84]
mov edi, dword [esp + 0x64]
cmp dword [ecx + ebx*4], 0
jne 0x4cf465
mov eax, dword [esp + 0x1c]
cdq
idiv dword [esp + 0x18]
test edi, edi
mov esi, eax
je 0x4cf441
mov eax, dword [esp + 0x68]
sub eax, edi
sar eax, 2
cmp ebx, eax
jb 0x4cf44a
call fcn.004f2608
mov edi, dword [esp + 0x64]
add dword [edi + ebx*4], esi
sub dword [esp + 0x1c], esi
sub dword [esp + 0x18], 1
add dword [esp + 0x14], esi
mov edi, dword [esp + 0x64]
mov ecx, dword [esp + 0x84]
add ebx, 1
jmp 0x4cf3f0
mov ecx, dword [esp + 0x2c]
cmp dword [esp + 0x14], ecx
jge 0x4cf4a7
mov eax, dword [ebp + 0x80]
sub eax, 1
je 0x4cf498
sub eax, 1
jne 0x4cf4a7
mov edx, dword [esp + 0x130]
mov eax, dword [edx + 8]
sub eax, dword [esp + 0x14]
mov dword [esp + 0x38], eax
jmp 0x4cf4a7
mov eax, ecx
sub eax, dword [esp + 0x14]
cdq
sub eax, edx
sar eax, 1
add dword [esp + 0x38], eax
mov esi, dword [esp + 0x74]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x14]
add ecx, eax
mov dword [esp + 0x40], ecx
xor ebx, ebx
jmp 0x4cf4c1
mov esi, dword [esp + 0x74]
cmp dword [ebp + 0x164], ebx
jne 0x4cf605
mov eax, dword [ebp + 0x78]
cmp eax, ebx
jl 0x4cf500
mov edx, dword [ebp + 0x70]
mov ecx, dword [ebp + 0x6c]
push ebx
push 5
push edx
mov edx, dword [ebp + 0x60]
push ecx
push edx
mov edx, dword [ebp + 0x15c]
lea ecx, [esp + 0x4c]
push ecx
push eax
push edx
lea ecx, [ebp + 0xd0]
call fcn.004d1980
jmp 0x4cf5a6
mov eax, dword [ebp + 0x7c]
cmp dword [eax - 0xc], ebx
je 0x4cf5ae
push ecx
mov ecx, dword [eax - 0x10]
lea esi, [eax - 0x10]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
mov dword [esp + 0xac], esp
mov ebx, esp
call edx
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x4cf53d
cmp eax, dword [esi]
jne 0x4cf53d
mov edi, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x4cf579
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
jne 0x4cf556
call fcn.0041b4a0
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.004f2ced
add esp, 0x10
add edi, 0x10
mov dword [ebx], edi
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
sub ecx, eax
push ecx
mov ecx, dword [esp + 0x40]
sub edx, ecx
push edx
push eax
mov eax, dword [ebp + 0x15c]
push ecx
push eax
mov ecx, ebp
call fcn.004c5d50
xor ebx, ebx
mov edi, dword [esp + 0x64]
mov esi, dword [esp + 0x74]
mov ecx, dword [ebp + 0x8c]
cmp ecx, ebx
jle 0x4cf605
cmp dword [ebp + 0x144], ebx
push ecx
mov ecx, dword [ebp + 0x88]
push ecx
je 0x4cf5de
mov edx, dword [ebp + 0x68]
mov eax, dword [ebp + 0x64]
push edx
mov edx, dword [ebp + 0x15c]
push eax
lea ecx, [esp + 0x48]
push ecx
push edx
jmp 0x4cf5f2
mov eax, dword [ebp + 0x148]
push eax
push eax
mov eax, dword [ebp + 0x15c]
lea edx, [esp + 0x48]
push edx
push eax
lea ecx, [ebp + 0xd0]
call fcn.004d28a0
mov edi, dword [esp + 0x64]
mov esi, dword [esp + 0x74]
cmp dword [ebp + 0x164], 1
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x40]
mov dword [esp + 0x94], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x90], ecx
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], edx
je 0x4cf671
cmp dword [ebp + 0x88], 6
jne 0x4cf64d
add ecx, 3
mov eax, 3
jmp 0x4cf655
mov eax, dword [ebp + 0x8c]
add ecx, eax
add dword [esp + 0x94], eax
sub dword [esp + 0x98], eax
sub dword [esp + 0x9c], eax
mov dword [esp + 0x90], ecx
cmp dword [esp + 0x24], ebx
je 0x4cf930
cmp dword [esp + 0x28], ebx
je 0x4cf930
mov dword [esp + 0x1c], ebx
call fcn.004daeb7
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x4cf6a3
push 0x80004005
call fcn.00402980
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x2c], eax
mov byte [esp + 0x120], 6
call fcn.004daeb7
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x4cf6d5
push 0x80004005
call fcn.00402980
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x34], eax
mov byte [esp + 0x120], 7
call fcn.004daeb7
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x4cf707
push 0x80004005
call fcn.00402980
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x20], edi
cmp dword [esp + 0x28], ebx
mov byte [esp + 0x120], 8
mov dword [esp + 0x14], ebx
jle 0x4cf8b4
lea ecx, [ecx]
push ecx
mov ecx, esp
mov dword [esp + 0xac], esp
push 0x53ae70
call fcn.0041abb0
mov edx, dword [esp + 0x130]
lea ecx, [esp + 0x20]
push ecx
push edx
mov ecx, ebp
call fcn.004c13e0
cmp eax, ebx
je 0x4cf89f
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x12c]
lea eax, [esp + 0x1c]
push eax
push ebx
mov ecx, ebp
mov dword [esp + 0x24], esi
call fcn.004c5480
mov ecx, dword [esp + 0x1c]
sub ecx, esi
push ecx
push esi
lea edx, [esp + 0x38]
push edx
mov ecx, ebx
call fcn.0041f020
mov eax, dword [eax]
lea esi, [eax - 0x10]
lea ebx, [edi - 0x10]
cmp esi, ebx
mov byte [esp + 0x120], 9
je 0x4cf84c
cmp dword [ebx + 0xc], 0
jl 0x4cf83a
mov ecx, dword [esi]
cmp ecx, dword [ebx]
jne 0x4cf83a
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
call edx
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x4cf7dd
cmp eax, dword [esi]
jne 0x4cf7dd
mov edi, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x4cf818
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x4cf551
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.004f2ced
add esp, 0x10
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4cf831
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
add edi, 0x10
mov dword [esp + 0x20], edi
jmp 0x4cf84c
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x28]
call fcn.0041af30
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov byte [esp + 0x120], 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4cf874
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x14]
push ecx
lea edx, [esp + 0x54]
push edx
lea eax, [esp + 0x98]
push eax
lea ecx, [esp + 0x2c]
push ecx
mov ecx, ebp
call fcn.004cdbf0
mov edx, dword [esp + 0x1c]
add edx, 5
mov dword [esp + 0x1c], edx
xor ebx, ebx
mov eax, dword [esp + 0x14]
add eax, 1
cmp eax, dword [esp + 0x28]
mov dword [esp + 0x14], eax
jl 0x4cf730
add edi, 0xfffffff0
mov byte [esp + 0x120], 7
lea eax, [edi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4cf8d8
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
mov byte [esp + 0x120], 6
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4cf900
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
mov byte [esp + 0x120], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4cf928
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [esp + 0x64]
mov esi, dword [esp + 0x74]
cmp dword [ebp + 0x164], ebx
je 0x4cff92
mov ecx, dword [esp + 0x54]
mov eax, 1
cmp dword [esp + 0x24], eax
mov dword [esp + 0x14], eax
jl 0x4cfc50
xor ebx, ebx
cmp dword [esp + 0x28], ebx
mov dword [esp + 0x30], ebx
jle 0x4cfc32
mov dword [esp + 0x2c], ebx
test ecx, ecx
je 0x4cf978
mov eax, dword [esp + 0x58]
sub eax, ecx
sar eax, 4
cmp ebx, eax
jb 0x4cf985
call fcn.004f2608
mov edi, dword [esp + 0x64]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x2c]
xor ebp, ebp
cmp dword [esp + 0x24], ebp
lea esi, [ecx + edx]
mov dword [esp + 0xa8], esi
mov dword [esp + 0x20], ebp
jle 0x4cfc1c
xor eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x14]
lea ecx, [eax*4 - 4]
mov dword [esp + 0x4c], ecx
jmp 0x4cf9c7
mov esi, dword [esp + 0xa8]
mov eax, dword [esi + 4]
test eax, eax
je 0x4cf9ea
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebp, eax
jb 0x4cf9f3
call fcn.004f2608
mov edi, dword [esp + 0x64]
mov ebx, dword [esi + 4]
add ebx, dword [esp + 0x48]
mov eax, dword [esp + 0x14]
cmp dword [ebx], eax
mov dword [esp + 0x1c], ebx
jne 0x4cfbed
cmp eax, 1
jne 0x4cfac6
test edi, edi
je 0x4cfa26
mov ecx, dword [esp + 0x68]
mov eax, ecx
sub eax, edi
sar eax, 2
cmp ebp, eax
jb 0x4cfa33
call fcn.004f2608
mov edi, dword [esp + 0x64]
mov ecx, dword [esp + 0x68]
mov eax, dword [ebx + 0x10]
mov edx, dword [esp + 0x18]
cmp dword [edi + edx], eax
jle 0x4cfa64
test edi, edi
je 0x4cfa4e
mov eax, ecx
sub eax, edi
sar eax, 2
cmp ebp, eax
jb 0x4cfa5b
call fcn.004f2608
mov edi, dword [esp + 0x64]
mov ecx, dword [esp + 0x68]
mov eax, dword [esp + 0x18]
mov esi, dword [edi + eax]
jmp 0x4cfa66
mov esi, eax
test edi, edi
je 0x4cfa75
sub ecx, edi
sar ecx, 2
mov eax, ecx
cmp ebp, eax
jb 0x4cfa7e
call fcn.004f2608
mov edi, dword [esp + 0x64]
mov ecx, dword [esp + 0x18]
mov dword [edi + ecx], esi
cmp dword [ebx + 0x18], 0
je 0x4cfbe9
mov ecx, dword [esp + 0x84]
test ecx, ecx
je 0x4cfaaa
mov eax, dword [esp + 0x88]
sub eax, ecx
sar eax, 2
cmp ebp, eax
jb 0x4cfab6
call fcn.004f2608
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0x18]
mov dword [ecx + edx], 1
jmp 0x4cfbe9
mov eax, dword [esp + 0x14]
xor ebx, ebx
test eax, eax
jle 0x4cfb56
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x34], eax
test edi, edi
je 0x4cfaf8
mov eax, dword [esp + 0x68]
sub eax, edi
sar eax, 2
cmp ebp, eax
jb 0x4cfb08
call fcn.004f2608
mov edi, dword [esp + 0x64]
mov ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x1c]
add ebx, dword [edi + esi]
cmp dword [eax + 0x18], 0
je 0x4cfb49
mov eax, dword [esp + 0x84]
test eax, eax
je 0x4cfb2b
sub ecx, eax
sar ecx, 2
mov eax, ecx
cmp ebp, eax
jb 0x4cfb30
call fcn.004f2608
mov ecx, dword [esp + 0x84]
mov dword [ecx + esi], 1
mov ecx, dword [esp + 0x88]
mov edi, dword [esp + 0x64]
add esi, 4
add ebp, 1
sub dword [esp + 0x34], 1
jne 0x4cfae7
mov edx, dword [esp + 0x1c]
cmp ebx, dword [edx + 8]
jge 0x4cfbed
mov ecx, dword [esp + 0x14]
mov eax, edx
mov eax, dword [eax + 0x10]
sub eax, ebx
cdq
idiv ecx
test edi, edi
mov ebp, eax
je 0x4cfb8c
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x20]
sub eax, edi
sar eax, 2
lea edx, [edx + ecx - 1]
cmp edx, eax
jb 0x4cfb99
call fcn.004f2608
mov edi, dword [esp + 0x64]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x10]
sub eax, ebx
cdq
idiv ecx
mov eax, dword [esp + 0x4c]
xor esi, esi
add dword [edi + eax], edx
test ecx, ecx
jle 0x4cfbe9
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x64]
test eax, eax
je 0x4cfbd1
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x20]
sub ecx, eax
sar ecx, 2
add edx, esi
cmp edx, ecx
jb 0x4cfbda
call fcn.004f2608
mov eax, dword [esp + 0x64]
add dword [eax + edi], ebp
add esi, 1
add edi, 4
cmp esi, dword [esp + 0x14]
jl 0x4cfbb6
mov edi, dword [esp + 0x64]
mov ebp, dword [esp + 0x20]
add dword [esp + 0x48], 0x1c
mov eax, 4
add dword [esp + 0x18], eax
add dword [esp + 0x4c], eax
add ebp, 1
cmp ebp, dword [esp + 0x24]
mov dword [esp + 0x20], ebp
jl 0x4cf9c0
mov ecx, dword [esp + 0x54]
mov ebx, dword [esp + 0x30]
add dword [esp + 0x2c], 0x10
add ebx, 1
cmp ebx, dword [esp + 0x28]
mov dword [esp + 0x30], ebx
jl 0x4cf967
mov eax, dword [esp + 0x14]
add eax, 1
cmp eax, dword [esp + 0x24]
mov dword [esp + 0x14], eax
jle 0x4cf953
mov esi, dword [esp + 0x74]
mov eax, 1
cmp dword [esp + 0x28], eax
mov dword [esp + 0x14], eax
jl 0x4cfebd
mov edi, edi
cmp dword [esp + 0x28], 0
mov dword [esp + 0x18], 0
jle 0x4cfea4
xor eax, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], eax
lea ecx, [ecx]
test ecx, ecx
je 0x4cfc93
mov eax, dword [esp + 0x58]
sub eax, ecx
sar eax, 4
cmp dword [esp + 0x18], eax
jb 0x4cfca0
call fcn.004f2608
mov esi, dword [esp + 0x74]
mov ecx, dword [esp + 0x54]
cmp dword [esp + 0x24], 0
mov eax, dword [esp + 0x1c]
lea edx, [ecx + eax]
mov dword [esp + 0xa8], edx
mov dword [esp + 0x4c], 0
jle 0x4cfe85
mov dword [esp + 0x48], 0
lea esp, [esp]
mov edi, dword [esp + 0xa8]
mov eax, dword [edi + 4]
test eax, eax
je 0x4cfcfc
mov ecx, dword [edi + 8]
sub ecx, eax
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x4c], eax
jb 0x4cfd05
call fcn.004f2608
mov esi, dword [esp + 0x74]
mov edi, dword [edi + 4]
add edi, dword [esp + 0x48]
mov eax, dword [esp + 0x14]
cmp dword [edi + 4], eax
mov dword [esp + 0x2c], edi
jne 0x4cfe67
cmp eax, 1
jne 0x4cfd9b
test esi, esi
mov ebx, dword [esp + 0x18]
je 0x4cfd3d
mov ecx, dword [esp + 0x78]
mov eax, ecx
sub eax, esi
sar eax, 2
cmp ebx, eax
jb 0x4cfd4a
call fcn.004f2608
mov ecx, dword [esp + 0x78]
mov esi, dword [esp + 0x74]
mov edx, dword [esp + 0x2c]
mov eax, dword [edx + 0x14]
mov ebp, dword [esp + 0x20]
cmp dword [esi + ebp], eax
jle 0x4cfd7b
test esi, esi
je 0x4cfd69
mov eax, ecx
sub eax, esi
sar eax, 2
cmp ebx, eax
jb 0x4cfd76
call fcn.004f2608
mov ecx, dword [esp + 0x78]
mov esi, dword [esp + 0x74]
mov edi, dword [esi + ebp]
jmp 0x4cfd7d
mov edi, eax
test esi, esi
je 0x4cfd8a
sub ecx, esi
sar ecx, 2
cmp ebx, ecx
jb 0x4cfd93
call fcn.004f2608
mov esi, dword [esp + 0x74]
mov dword [esi + ebp], edi
jmp 0x4cfe63
mov ecx, dword [esp + 0x78]
xor ebp, ebp
xor edi, edi
test eax, eax
jle 0x4cfddc
mov ebx, dword [esp + 0x20]
test esi, esi
je 0x4cfdc0
mov edx, dword [esp + 0x18]
mov eax, ecx
sub eax, esi
sar eax, 2
add edx, edi
cmp edx, eax
jb 0x4cfdcd
call fcn.004f2608
mov esi, dword [esp + 0x74]
mov ecx, dword [esp + 0x78]
add ebp, dword [esi + ebx]
add edi, 1
add ebx, 4
cmp edi, dword [esp + 0x14]
jl 0x4cfdab
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x14]
cmp ebp, eax
jge 0x4cfe67
sub eax, ebp
cdq
idiv dword [esp + 0x14]
test esi, esi
mov ebx, eax
je 0x4cfe03
sub ecx, esi
sar ecx, 2
cmp dword [esp + 0x18], ecx
jb 0x4cfe0c
call fcn.004f2608
mov esi, dword [esp + 0x74]
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 0x14]
mov ecx, dword [esp + 0x14]
sub eax, ebp
cdq
idiv ecx
mov edi, dword [esp + 0x20]
add dword [esi + edi], edx
xor esi, esi
test ecx, ecx
jle 0x4cfe63
lea esp, [esp]
mov eax, dword [esp + 0x74]
test eax, eax
je 0x4cfe4b
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x18]
sub ecx, eax
sar ecx, 2
add edx, esi
cmp edx, ecx
jb 0x4cfe54
call fcn.004f2608
mov eax, dword [esp + 0x74]
add dword [eax + edi], ebx
add esi, 1
add edi, 4
cmp esi, dword [esp + 0x14]
jl 0x4cfe30
mov esi, dword [esp + 0x74]
mov eax, dword [esp + 0x4c]
add dword [esp + 0x48], 0x1c
add eax, 1
cmp eax, dword [esp + 0x24]
mov dword [esp + 0x4c], eax
jl 0x4cfcd0
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x18]
add dword [esp + 0x1c], 0x10
add dword [esp + 0x20], 4
add eax, 1
cmp eax, dword [esp + 0x28]
mov dword [esp + 0x18], eax
jl 0x4cfc80
mov eax, dword [esp + 0x14]
add eax, 1
cmp eax, dword [esp + 0x28]
mov dword [esp + 0x14], eax
jle 0x4cfc60
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 0xa4]
mov ecx, dword [edx + 0xa8]
mov ebp, dword [esp + 0x24]
mov eax, dword [esp + 0x128]
lea ebx, [ecx + ebp - 1]
add dword [eax], ebx
mov ebx, dword [esp + 0x28]
lea ecx, [ebx + ecx - 1]
add dword [eax + 4], ecx
xor ebx, ebx
test ebp, ebp
jle 0x4cff32
lea esp, [esp]
test edi, edi
je 0x4cff01
mov ecx, dword [esp + 0x68]
sub ecx, edi
sar ecx, 2
cmp ebx, ecx
jb 0x4cff1c
call fcn.004f2608
mov edi, dword [esp + 0x64]
mov ebp, dword [esp + 0x24]
mov eax, dword [esp + 0x128]
mov edx, dword [esp + 0xa4]
mov ecx, dword [edi + ebx*4]
add ecx, dword [edx + 0xa8]
add ebx, 1
add dword [eax], ecx
cmp ebx, ebp
jl 0x4cfef0
mov esi, dword [esp + 0x74]
xor edi, edi
cmp dword [esp + 0x28], edi
jle 0x4cff77
test esi, esi
je 0x4cff4b
mov ecx, dword [esp + 0x78]
sub ecx, esi
sar ecx, 2
cmp edi, ecx
jb 0x4cff62
call fcn.004f2608
mov esi, dword [esp + 0x74]
mov eax, dword [esp + 0x128]
mov edx, dword [esp + 0xa4]
mov ecx, dword [esi + edi*4]
add ecx, dword [edx + 0xa8]
add edi, 1
add dword [eax + 4], ecx
cmp edi, dword [esp + 0x28]
jl 0x4cff3a
cmp dword [edx + 0x88], 6
mov ecx, dword [edx + 0x8c]
jne 0x4cff89
lea ecx, [ecx + ecx*2]
add ecx, ecx
add dword [eax], ecx
add dword [eax + 4], ecx
jmp 0x4cffb5
mov ecx, dword [esp + 0x40]
sub ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x128]
mov edx, dword [esp + 0xa4]
mov dword [eax], ecx
mov ecx, dword [esp + 0x44]
sub ecx, dword [esp + 0x3c]
mov dword [eax + 4], ecx
mov eax, dword [edx + 8]
test eax, eax
je 0x4cffcd
mov edx, dword [edx + 0xc]
sub edx, eax
sar edx, 6
cmp dword [esp + 0xb4], edx
jb 0x4cffd2
call fcn.004f2608
mov edi, dword [esp + 0xa4]
mov esi, dword [edi + 8]
add esi, dword [esp + 0xb8]
lea edx, [esp + 0x50]
push edx
mov ecx, esi
call fcn.004cad90
lea eax, [esp + 0x60]
push eax
lea ecx, [esi + 0x10]
call fcn.004c6330
lea ecx, [esp + 0x70]
push ecx
lea ecx, [esi + 0x20]
call fcn.004c6330
lea edx, [esp + 0x80]
push edx
lea ecx, [esi + 0x30]
call fcn.004c6330
push 5
push str.table
lea ecx, [edi + 0x3c]
call fcn.0041af30
push 1
mov ecx, edi
call fcn.004caca0
test eax, eax
je 0x4d003c
mov ecx, edi
call fcn.004be9f0
mov eax, dword [esp + 0xb0]
add eax, 0xfffffff0
mov byte [esp + 0x120], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4d0067
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0xa0]
add eax, 0xfffffff0
mov byte [esp + 0x120], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4d0092
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x50]
call fcn.004caa90
mov eax, dword [esp + 0x128]
mov ecx, dword [esp + 0x118]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret 0xc