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

Disassembly:
push 0xffffffffffffffff
push 0x5560c2
mov eax, dword fs:[0]
push eax
sub esp, 0x3c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5b2ae0]
xor eax, esp
push eax
lea eax, [esp + 0x50]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x64]
mov esi, dword [esp + 0x60]
mov ebx, 1
push ebx
lea eax, [esp + 0x34]
push eax
xor edi, edi
push ecx
mov dword [esp + 0x64], edi
mov ecx, dword [esp + 0x74]
mov eax, esp
mov dword [eax], ecx
mov eax, dword [esp + 0x74]
mov dword [esp + 0x70], esp
cmp eax, edi
je 0x49c0c8
add dword [eax + 4], ebx
mov ecx, esi
call fcn.0049ee50
cmp eax, edi
je 0x49c10a
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x6c]
cmp edx, dword [eax + 0xc]
jl 0x49c10a
mov dword [esp + 0x58], 0xffffffff
mov eax, dword [esp + 0x68]
cmp eax, edi
je 0x49c103
dec dword [eax + 4]
mov ecx, eax
add eax, 4
cmp dword [eax], edi
jg 0x49c103
mov edx, dword [ecx]
mov eax, dword [edx]
push ebx
call eax
xor eax, eax
jmp 0x49c9ea
mov ecx, dword [esp + 0x70]
push edi
push ecx
lea edx, [esp + 0x38]
push edx
call dword [0x560698]
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 0x18]
mov edx, dword [esp + 0x68]
sub ecx, ebx
push 0x20
push ecx
mov eax, esp
mov dword [esp + 0x40], ecx
mov dword [eax], edx
mov eax, dword [esp + 0x70]
mov dword [esp + 0x6c], esp
cmp eax, edi
je 0x49c142
add dword [eax + 4], ebx
mov ecx, esi
call fcn.0049ef30
push ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x74], eax
mov eax, esp
mov dword [eax], ecx
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x68], esp
cmp eax, edi
je 0x49c165
add dword [eax + 4], ebx
call fcn.0049b0e0
cmp eax, edi
je 0x49c178
cmp dword [0x5bf954], edi
jne 0x49c178
mov edi, ebx
mov edx, dword [esp + 0x68]
push ecx
mov eax, esp
mov dword [eax], edx
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x68], esp
test eax, eax
je 0x49c190
add dword [eax + 4], ebx
mov eax, dword [esp + 0x64]
push eax
call fcn.0049af70
mov ebx, eax
mov dword [esp + 0x64], ebx
test ebx, ebx
jne 0x49c1cf
mov dword [esp + 0x58], 0xffffffff
mov eax, dword [esp + 0x68]
test eax, eax
je 0x49c1c8
dec dword [eax + 4]
mov ecx, eax
add eax, 4
cmp dword [eax], ebx
jg 0x49c1c8
mov edx, dword [ecx]
mov eax, dword [edx]
push 1
call eax
xor eax, eax
jmp 0x49c9ea
mov edx, dword [ebx]
mov edx, dword [edx + 0x18]
mov esi, dword [ebx + 8]
lea eax, [esp + 0x1c]
push eax
mov ecx, ebx
call edx
mov byte [esp + 0x58], 1
inc dword [esp + 0x30]
xor eax, eax
mov dword [esp + 0x18], eax
test edi, edi
je 0x49c23e
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x24], ecx
mov ecx, dword [eax]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 8]
push 0xc56a31
lea eax, [esp + 0x24]
mov dword [esp + 0x24], ecx
push eax
mov ecx, ebp
mov dword [esp + 0x30], edx
call fcn.004f8084
mov eax, 0xffffff
mov dword [esp + 0x18], eax
cmp dword [ebx + 0x18], 0
je 0x49c252
cmp esi, 0x2b
je 0x49c252
mov eax, 0xb8c2c5
mov dword [esp + 0x18], eax
test edi, edi
jne 0x49c264
cmp esi, 0x2b
jne 0x49c264
mov eax, 0x8000
mov dword [esp + 0x18], eax
mov edx, dword [ebp]
push eax
mov eax, dword [edx + 0x30]
mov ecx, ebp
call eax
mov eax, dword [ebx + 8]
cmp eax, 0x26
jne 0x49c4d7
test byte [0x5d1c88], 1
lea ebx, [eax - 0x24]
jne 0x49c2b3
or dword [0x5d1c88], 1
push 0x587940
mov ecx, 0x5d1c84
mov byte [esp + 0x5c], bl
call fcn.00404fa0
push 0x55f120
call fcn.00517f39
add esp, 4
mov byte [esp + 0x58], 1
test byte [0x5d1c88], bl
jne 0x49c2e7
or dword [0x5d1c88], ebx
push 0x587950
mov ecx, 0x5d1c80
mov byte [esp + 0x5c], 3
call fcn.00404fa0
push 0x55f0f0
call fcn.00517f39
add esp, 4
mov byte [esp + 0x58], 1
test byte [0x5d1c88], 4
jne 0x49c31d
or dword [0x5d1c88], 4
push 0x587960
mov ecx, 0x5d1c7c
mov byte [esp + 0x5c], 4
call fcn.00404fa0
push 0x55f0c0
call fcn.00517f39
add esp, 4
mov byte [esp + 0x58], 1
push 0x5d1c84
lea ecx, [esp + 0x24]
push ecx
mov ecx, ebp
call fcn.004590a0
mov esi, dword [eax]
push 0x5d1c80
lea edx, [esp + 0x24]
push edx
mov ecx, ebp
call fcn.004590a0
mov ebx, dword [eax]
push 0x5d1c7c
lea eax, [esp + 0x24]
push eax
mov ecx, ebp
call fcn.004590a0
mov ecx, dword [eax]
mov eax, dword [esp + 0x38]
sub eax, ecx
mov ecx, dword [esp + 0x30]
sub eax, ebx
sub eax, esi
sub eax, ecx
cdq
sub eax, edx
mov edi, eax
sar edi, 1
test edi, edi
jle 0x49c4b4
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x38]
add esi, ecx
mov dword [esp + 0x28], eax
mov eax, dword [0x5d1c84]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x28], esi
push 0
mov dword [esp + 0x24], ecx
mov dword [esp + 0x30], edx
mov ecx, dword [eax - 0xc]
mov edx, dword [ebp]
lea esi, [esp + 0x24]
push esi
push ecx
push eax
mov eax, dword [edx + 0x68]
mov ecx, ebp
call eax
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x64]
mov edx, dword [ebp]
mov edx, dword [edx + 0x68]
mov dword [esp + 0x20], eax
add eax, edi
mov dword [esp + 0x28], eax
mov esi, eax
mov eax, dword [ecx + 0x28]
push 0x4400
lea ecx, [esp + 0x24]
push ecx
mov ecx, dword [eax - 0xc]
push ecx
push eax
mov ecx, ebp
call edx
cmp dword [esp + 0x28], esi
jle 0x49c3ec
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x64]
mov eax, dword [esi + 0x28]
mov edx, dword [ebp]
mov edx, dword [edx + 0x68]
push 0x4000
lea ecx, [esp + 0x24]
push ecx
mov ecx, dword [eax - 0xc]
push ecx
push eax
mov ecx, ebp
call edx
mov eax, dword [esp + 0x28]
mov edx, dword [ebp]
mov dword [esp + 0x20], eax
add eax, ebx
mov dword [esp + 0x28], eax
mov eax, dword [0x5d1c80]
mov ecx, dword [eax - 0xc]
push 0
lea ebx, [esp + 0x24]
push ebx
push ecx
push eax
mov eax, dword [edx + 0x68]
mov ecx, ebp
call eax
mov eax, dword [esp + 0x28]
mov edx, dword [ebp]
mov dword [esp + 0x20], eax
add eax, edi
mov dword [esp + 0x28], eax
mov edi, eax
mov eax, dword [esi + 0x2c]
mov ecx, dword [eax - 0xc]
push 0x4400
push ebx
push ecx
push eax
mov eax, dword [edx + 0x68]
mov ecx, ebp
call eax
cmp dword [esp + 0x28], edi
jle 0x49c467
mov dword [esp + 0x28], edi
mov esi, dword [esi + 0x2c]
mov eax, dword [esi - 0xc]
mov edx, dword [ebp]
mov edx, dword [edx + 0x68]
push 0x4000
lea ecx, [esp + 0x24]
push ecx
push eax
push esi
mov ecx, ebp
call edx
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x38]
mov edx, dword [ebp]
mov dword [esp + 0x20], eax
mov eax, dword [0x5d1c7c]
push 0
mov dword [esp + 0x2c], ecx
mov ecx, dword [eax - 0xc]
lea esi, [esp + 0x24]
push esi
push ecx
push eax
mov eax, dword [edx + 0x68]
mov ecx, ebp
call eax
mov ebx, dword [esp + 0x64]
jmp 0x49c518
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax - 0xc]
mov edx, dword [ebp]
push 0x8000
lea esi, [esp + 0x34]
push esi
push ecx
push eax
mov eax, dword [edx + 0x68]
mov ecx, ebp
call eax
mov ebx, dword [esp + 0x64]
jmp 0x49c518
mov eax, dword [ebx + 0x18]
mov edx, dword [ebx]
mov edx, dword [edx + 0x38]
push eax
push edi
lea ecx, [esp + 0x38]
push ecx
push ebp
mov ecx, ebx
call edx
test eax, eax
jne 0x49c518
cmp dword [ebx + 8], 0x17
mov eax, 0x8000
jne 0x49c4ff
mov eax, 0x4000
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx - 0xc]
mov esi, dword [ebp]
push eax
lea eax, [esp + 0x34]
push eax
push edx
mov edx, dword [esi + 0x68]
push ecx
mov ecx, ebp
call edx
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x44], ecx
mov ecx, dword [eax]
mov dword [esp + 0x48], edx
mov edx, dword [eax + 8]
push ecx
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x6c]
sub edx, 5
mov eax, esp
mov dword [esp + 0x4c], edx
mov dword [esp + 0x70], esp
mov dword [eax], ecx
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x49c564
inc dword [eax + 4]
lea edx, [esp + 0x70]
push edx
mov edx, dword [esp + 0x68]
call fcn.0049e710
mov eax, dword [eax]
xor ecx, ecx
test eax, eax
mov eax, dword [esp + 0x6c]
setne cl
mov esi, ecx
test eax, eax
je 0x49c59a
dec dword [eax + 4]
mov ecx, eax
add eax, 4
cmp dword [eax], 0
jg 0x49c59a
mov edx, dword [ecx]
mov eax, dword [edx]
push 1
call eax
test byte [esp + 0x70], 0x20
je 0x49c617
test esi, esi
je 0x49c683
cmp dword [0x5ba8a8], 0
je 0x49c683
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x74]
sub eax, ecx
sub eax, 9
cdq
sub eax, edx
sar eax, 1
add eax, ecx
lea ecx, [esp + 0x20]
add esi, 0xfffffff3
push ecx
add edi, 0x30
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 0x5ba8a4
call fcn.004a1a60
mov eax, dword [esp + 0x68]
mov edx, dword [eax + 0x18]
sub edx, dword [eax + 0x14]
and edx, 0xfffffffc
cmp edx, 4
jne 0x49c683
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 8]
sub ecx, dword [esp + 0x30]
add ecx, esi
mov dword [esp + 0x48], ecx
jmp 0x49c683
test esi, esi
je 0x49c683
cmp dword [0x5ba8b0], 0
je 0x49c683
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x74]
sub eax, ecx
sub eax, 9
cdq
sub eax, edx
sar eax, 1
lea edx, [esp + 0x20]
add eax, ecx
add esi, 0xfffffff3
push edx
add edi, 0x30
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 0x5ba8ac
call fcn.004a1a60
mov eax, dword [esp + 0x68]
mov ecx, dword [eax + 0x18]
sub ecx, dword [eax + 0x14]
and ecx, 0xfffffffc
cmp ecx, 4
jne 0x49c683
mov edx, dword [esp + 0x74]
mov eax, dword [edx + 8]
sub eax, dword [esp + 0x30]
add eax, esi
mov dword [esp + 0x48], eax
mov eax, dword [ebx + 8]
cmp eax, 0x2b
je 0x49c99b
cmp eax, 0x2c
jle 0x49c69d
cmp eax, 0x2f
jle 0x49c99b
call fcn.004eff6d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x49c6b7
push 0x80004005
call fcn.00401f30
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x70], eax
mov byte [esp + 0x58], 5
call fcn.004eff6d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x49c6e6
push 0x80004005
call fcn.00401f30
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x6c], eax
mov byte [esp + 0x58], 6
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x68]
xor ebx, ebx
cmp dword [ecx + 0x54], ebx
setne bl
cmp dword [0x5bf888], 0
mov dword [esp + 0x60], ebx
jne 0x49c7a6
mov edx, dword [esi + 0x18]
sub edx, dword [esi + 0x14]
add esi, 8
sar edx, 2
mov edi, ebx
cmp ebx, edx
jae 0x49c86a
mov eax, dword [esi + 0x10]
sub eax, dword [esi + 0xc]
sar eax, 2
cmp edi, ebx
je 0x49c757
cmp edi, eax
jb 0x49c748
call fcn.005177ee
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx + edi*4]
inc eax
push eax
push 0x573f54
jmp 0x49c76d
cmp edi, eax
jb 0x49c760
call fcn.005177ee
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx + edi*4]
inc eax
push eax
push 0x571168
lea edx, [esp + 0x74]
push edx
call fcn.00401cc0
mov eax, dword [esp + 0x78]
mov ecx, dword [eax - 0xc]
add esp, 0xc
push ecx
push eax
lea ecx, [esp + 0x78]
call fcn.004044f0
mov esi, dword [esp + 0x68]
mov eax, dword [esi + 0x18]
sub eax, dword [esi + 0x14]
add esi, 8
inc edi
sar eax, 2
cmp edi, eax
jb 0x49c732
jmp 0x49c86a
mov ecx, dword [esi + 0x18]
sub ecx, dword [esi + 0x14]
mov eax, dword [esi + 0x18]
sub eax, dword [esi + 0x14]
lea edi, [esi + 8]
sar ecx, 2
lea edx, [ebx + 3]
sar eax, 2
cmp ecx, edx
ja 0x49c841
mov esi, ebx
cmp ebx, eax
jae 0x49c86a
lea esp, [esp]
mov ecx, dword [edi + 0x10]
sub ecx, dword [edi + 0xc]
sar ecx, 2
cmp esi, ebx
je 0x49c7f5
cmp esi, ecx
jb 0x49c7e6
call fcn.005177ee
mov edx, dword [edi + 0xc]
mov eax, dword [edx + esi*4]
inc eax
push eax
push 0x573f54
jmp 0x49c80b
cmp esi, ecx
jb 0x49c7fe
call fcn.005177ee
mov edx, dword [edi + 0xc]
mov eax, dword [edx + esi*4]
inc eax
push eax
push 0x571168
lea eax, [esp + 0x74]
push eax
call fcn.00401cc0
mov eax, dword [esp + 0x78]
mov ecx, dword [eax - 0xc]
add esp, 0xc
push ecx
push eax
lea ecx, [esp + 0x78]
call fcn.004044f0
mov edi, dword [esp + 0x68]
mov ecx, dword [edi + 0x18]
sub ecx, dword [edi + 0x14]
add edi, 8
inc esi
sar ecx, 2
cmp esi, ecx
jb 0x49c7d0
jmp 0x49c86a
lea edi, [eax - 1]
mov ebx, esi
call fcn.00499600
mov edi, dword [esp + 0x60]
inc eax
push eax
call fcn.00499600
inc eax
push eax
lea edx, [esp + 0x78]
push 0x573f5c
push edx
call fcn.00401cc0
add esp, 0x10
mov esi, dword [esp + 0x64]
mov ecx, dword [esi + 0x10]
cmp dword [ecx - 0xc], 0
lea eax, [esi + 0x10]
je 0x49c8c7
push eax
lea edx, [esp + 0x64]
push 0x587964
push edx
call fcn.00401790
add esp, 0xc
mov byte [esp + 0x58], 7
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x78]
call fcn.004044f0
mov byte [esp + 0x58], 6
mov eax, dword [esp + 0x60]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49c8c7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [ebp]
mov eax, dword [esp + 0x18]
mov edx, dword [edx + 0x30]
push eax
mov ecx, ebp
call edx
mov edi, dword [esp + 0x70]
mov eax, dword [edi - 0xc]
mov edx, dword [ebp]
mov edx, dword [edx + 0x68]
push 0x8000
lea ecx, [esp + 0x44]
push ecx
push eax
push edi
mov ecx, ebp
call edx
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x24], ecx
mov ecx, dword [eax + 0x20]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 0x28]
mov eax, dword [esi + 0x14]
inc ecx
push eax
mov dword [esp + 0x24], ecx
lea ecx, [esp + 0x70]
push 0x57dc30
push ecx
mov dword [esp + 0x34], edx
call fcn.00401cc0
mov esi, dword [esp + 0x78]
mov eax, dword [esi - 0xc]
mov edx, dword [ebp]
mov edx, dword [edx + 0x68]
add esp, 0xc
push 0x8000
lea ecx, [esp + 0x24]
push ecx
push eax
push esi
mov ecx, ebp
call edx
add esi, 0xfffffff0
mov byte [esp + 0x58], 5
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x49c97a
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
lea eax, [edi - 0x10]
mov byte [esp + 0x58], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49c99b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x58], 0
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49c9c0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x58], 0xffffffff
mov eax, dword [esp + 0x68]
test eax, eax
je 0x49c9e5
dec dword [eax + 4]
mov ecx, eax
add eax, 4
cmp dword [eax], 0
jg 0x49c9e5
mov edx, dword [ecx]
mov eax, dword [edx]
push 1
call eax
mov eax, 1
mov ecx, dword [esp + 0x50]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret 0x18