Function at 0x49e450
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x4cf31a
mov eax, dword fs:[0]
push eax
sub esp, 0x168
mov eax, dword [0x50f880]
xor eax, esp
mov dword [esp + 0x130], eax
push ebx
push esi
push edi
mov eax, dword [0x50f880]
xor eax, esp
push eax
lea eax, [esp + 0x178]
mov dword fs:[0], eax
mov ebx, edx
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x20], ebx
add ebx, 0xc
add eax, 0x128
push eax
mov edi, ecx
mov dword [esp + 0x80], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov byte [esp + 0x80], 1
xor eax, eax
mov dword [esp + 0x180], eax
fldz
mov byte [esp + 0x12], al
fstp dword [esp + 0x14]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov byte [esp + 0x13], al
mov eax, dword [ebx]
lea esi, [esp + 0x24]
call fcn.004018f0
mov byte [esp + 0x180], 1
mov eax, dword [esp + 0x24]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x1c], esp
mov esi, esp
call fcn.0041b370
add eax, 0x10
mov ecx, edi
mov dword [esi], eax
call fcn.0049cf50
xor eax, eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov byte [esp + 0x180], 2
mov eax, dword [edi + 0x28]
mov dword [esp + 0x3c], eax
lea ecx, [esp + 0x24]
lea eax, [edi + 0x24]
call fcn.004470c0
mov dword [esp + 0x1c], eax
cmp eax, dword [edi + 0x28]
je 0x49e553
lea ecx, [esp + 0x24]
add eax, 0xc
push ecx
call fcn.0040a930
test al, al
jne 0x49e553
lea eax, [esp + 0x1c]
jmp 0x49e55e
mov edx, dword [edi + 0x28]
mov dword [esp + 0x40], edx
lea eax, [esp + 0x40]
mov ecx, dword [esp + 0x3c]
cmp dword [eax], ecx
je 0x49e57c
lea edx, [esp + 0x24]
push edx
lea ecx, [edi + 0x24]
call fcn.00446980
lea ecx, [esp + 0x6c]
call fcn.00446790
push ecx
mov eax, esp
mov dword [esp + 0x1c], esp
push eax
mov ecx, 0x4e4c24
call fcn.0041b050
fldz
push 0
sub esp, 8
fstp qword [esp]
push 1
push 0xa
lea ecx, [esp + 0x5c]
push ecx
call fcn.0042d760
mov esi, dword [esp + 0x20]
push eax
push esi
mov byte [esp + 0x188], 3
call fcn.0041e710
mov byte [esp + 0x180], 2
mov eax, dword [esp + 0x64]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x49e5e1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
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 0x49e601
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ebx
push esi
lea ecx, [esp + 0xa4]
push ecx
call fcn.004aec00
mov byte [esp + 0x180], 4
xor eax, eax
lea edx, [esp + 0x8c]
push edx
mov dword [esp + 0xa8], 0xa
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], eax
call dword [sym.imp.KERNEL32.dll_GetSystemTime]
mov ebx, dword [esp + 0x70]
sub ebx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x90]
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0x94]
sar ebx, 2
mov dword [esp + 0xb8], ecx
mov ecx, ebx
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x18], ecx
fild dword [esp + 0x18]
mov dword [esp + 0xbc], edx
mov dword [esp + 0xc0], eax
test ecx, ecx
jns 0x49e6bb
fadd qword [0x4f64d8]
test byte [0x51a6f4], 1
fld1
fdivrp st(1)
fstp qword [esp + 0x8c]
fldz
fstp qword [esp + 0x84]
jne 0x49e701
or dword [0x51a6f4], 1
mov byte [esp + 0x180], 5
call fcn.0044cc80
push 0x4d8b70
call fcn.00454c0f
add esp, 4
mov byte [esp + 0x180], 4
mov edx, ebx
imul edx, edx, 0x3e8
mov dword [esp + 0x18], edx
fild dword [esp + 0x18]
test edx, edx
jns 0x49e71b
fadd qword [0x4f64d8]
sub esp, 8
mov esi, 0x51a5f0
fstp qword [esp]
call fcn.00490180
mov dword [esp + 0x1c], 0
test ebx, ebx
je 0x49e80c
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x40], 0x3e8
mov dword [esp + 0x3c], eax
fld qword [esp + 0x84]
mov edx, dword [esp + 0x20]
fld st(0)
sub esp, 0x10
fxch st(1)
lea ecx, [esp + 0x23]
fadd qword [esp + 0x9c]
lea eax, [esp + 0x28]
fst qword [esp + 0x94]
fstp qword [esp + 8]
fstp qword [esp]
push ecx
push edx
mov edx, dword [esp + 0x54]
push eax
lea ecx, [esp + 0x50]
push ecx
push edx
call fcn.0049ddd0
test al, al
je 0x49e7b1
mov eax, dword [esp + 0x34]
fld dword [esp + 0x18]
add dword [esp + 0x2c], eax
fadd dword [esp + 0x14]
mov ecx, dword [esp + 0x38]
mov byte [esp + 0x12], 1
adc dword [esp + 0x30], ecx
fstp dword [esp + 0x14]
mov edx, dword [esp + 0x40]
fild dword [esp + 0x40]
test edx, edx
jns 0x49e7c3
fadd qword [0x4f64d8]
sub esp, 8
mov esi, 0x51a5f0
fstp qword [esp]
call fcn.004905d0
mov cl, byte [esp + 0x13]
test cl, cl
jne 0x49e7f9
mov eax, dword [esp + 0x1c]
add dword [esp + 0x3c], 4
add dword [esp + 0x40], 0x3e8
inc eax
mov dword [esp + 0x1c], eax
cmp eax, ebx
jb 0x49e74b
cmp byte [esp + 0x12], 0
jne 0x49e89e
test cl, cl
jne 0x49e8a9
fld qword [0x4f64d0]
sub esp, 8
mov esi, 0x51a5f0
fstp qword [esp]
call fcn.00490180
fld1
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0xc]
sub esp, 0x18
mov ecx, esp
fstp qword [esp + 0x10]
fldz
mov dword [ecx], edx
mov eax, dword [eax + 0x10]
fstp qword [esp + 8]
mov dword [esp + 0x40], esp
mov dword [ecx + 4], eax
test eax, eax
je 0x49e856
add eax, 4
mov ecx, 1
lock xadd dword [eax], ecx
mov eax, dword [esp + 0x38]
lea edx, [esp + 0x2b]
push edx
push eax
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0x58]
push edx
push 0x3e8
push 0x4000
call fcn.0049d730
test al, al
je 0x49e89e
mov eax, dword [esp + 0x34]
fld dword [esp + 0x18]
add dword [esp + 0x2c], eax
fadd dword [esp + 0x14]
mov ecx, dword [esp + 0x38]
mov byte [esp + 0x12], 1
adc dword [esp + 0x30], ecx
fstp dword [esp + 0x14]
cmp byte [esp + 0x13], 0
je 0x49ea69
mov eax, dword [0x50f008]
lea edx, [esp + 0x14]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 0xc]
mov ecx, 0x50f008
call edx
add eax, 0x10
mov dword [esp + 0x14], eax
mov eax, 0x4e4cb4
mov byte [esp + 0x180], 6
test eax, 0xffff0000
jne 0x49e8f7
mov ecx, eax
movzx edi, cx
call fcn.0041ae00
test eax, eax
je 0x49e908
push eax
mov eax, edi
lea edi, [esp + 0x18]
call fcn.0041afb0
jmp 0x49e908
push 0x4e4cb4
lea edx, [esp + 0x18]
push edx
xor ebx, ebx
call fcn.0041b280
mov byte [esp + 0x180], 8
fldz
mov edx, dword [0x50f008]
fstp qword [esp + 0x4c]
lea eax, [esp + 0x60]
xor esi, esi
mov dword [esp + 0x28], eax
mov eax, dword [edx + 0xc]
mov ecx, 0x50f008
mov dword [esp + 0x44], vtable.OperationStatus.0
mov dword [esp + 0x54], esi
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], esi
call eax
add eax, 0x10
mov dword [esp + 0x60], eax
mov ecx, 0x4f497c
mov byte [esp + 0x180], 9
test ecx, 0xffff0000
jne 0x49e97c
mov edx, ecx
movzx edi, dx
call fcn.0041ae00
cmp eax, esi
je 0x49e990
push eax
mov eax, edi
lea edi, [esp + 0x64]
call fcn.0041afb0
jmp 0x49e990
push 0x4f497c
lea eax, [esp + 0x64]
push eax
mov ebx, 7
call fcn.0041b280
mov byte [esp + 0x180], 0xa
mov edx, dword [0x50f008]
mov eax, dword [edx + 0xc]
mov ecx, 0x50f008
call eax
add eax, 0x10
mov dword [esp + 0x64], eax
mov byte [esp + 0x180], 0xb
fld1
mov ecx, dword [esp + 0x14]
fstp qword [esp + 0x4c]
mov esi, dword [esp + 0x60]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
mov dword [esp + 0x54], 0xa
mov dword [esp + 0x58], 5
mov dword [esp + 0x5c], 0
cmp eax, esi
je 0x49ea2e
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x49ea1c
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x49ea1c
call fcn.0041b370
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x49ea13
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x60], ebx
jmp 0x49ea2a
mov ebx, dword [ecx - 0xc]
push ecx
lea ecx, [esp + 0x64]
push ecx
call fcn.0041b280
mov ecx, dword [esp + 0x14]
lea eax, [ecx - 0x10]
mov byte [esp + 0x180], 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x49ea52
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x44]
push ecx
mov byte [esp + 0x184], 0xc
push edx
jmp 0x49ec48
cmp byte [esp + 0x12], 0
je 0x49ec10
mov ecx, dword [esp + 0x2c]
fld dword [esp + 0x14]
mov edx, dword [esp + 0x30]
fstp dword [edi]
lea esi, [edi + 0x34]
push esi
mov dword [edi + 8], ecx
mov dword [edi + 0xc], edx
mov dword [esp + 0x90], esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov byte [esp + 0x90], 1
mov byte [esp + 0x180], 0xd
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 8]
shrd ecx, eax, 0xa
mov dword [esp + 0x34], ecx
shr eax, 0xa
mov ecx, eax
and eax, 0x7fffffff
mov dword [esp + 0x38], eax
and ecx, 0x80000000
fild qword [esp + 0x34]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x34], 0
add edi, 0x14
fild qword [esp + 0x34]
lea ecx, [esp + 0x24]
fchs
faddp st(1)
fdiv dword [edi - 0x14]
fstp dword [esp + 0x1c]
call fcn.004468b0
cmp byte [eax + 8], 0
je 0x49eb05
fld dword [esp + 0x1c]
fstp dword [eax + 0xc]
jmp 0x49eb16
lea ecx, [eax + 0xc]
test ecx, ecx
je 0x49eb12
fld dword [esp + 0x1c]
fstp dword [ecx]
mov byte [eax + 8], 1
lea ecx, [esp + 0x9c]
call fcn.004af350
lea edx, [esp + 0x9c]
push edx
call fcn.004aedf0
mov eax, dword [0x50f008]
mov edx, dword [eax + 0xc]
push ecx
mov ebx, esp
mov dword [esp + 0x2c], esp
mov ecx, 0x50f008
mov dword [esp + 0x2c], ebx
call edx
add eax, 0x10
mov dword [ebx], eax
mov eax, 0x4e4fbc
mov byte [esp + 0x184], 0xe
test eax, 0xffff0000
jne 0x49eb7c
mov ecx, eax
movzx edi, cx
call fcn.0041ae00
test eax, eax
je 0x49eb89
push eax
mov eax, edi
mov edi, ebx
call fcn.0041afb0
jmp 0x49eb89
push 0x4e4fbc
push ebx
xor ebx, ebx
call fcn.0041b280
push 0
mov byte [esp + 0x188], 0xd
fld1
sub esp, 8
fstp qword [esp]
push 6
push 0xa
lea edx, [esp + 0x5c]
push edx
call fcn.0042d760
push eax
mov eax, dword [esp + 0x24]
push eax
mov byte [esp + 0x188], 0xf
call fcn.0041e710
mov byte [esp + 0x180], 0xd
mov eax, dword [esp + 0x64]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49ebe4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
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 0x49ec04
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x49ec95
push ecx
mov ecx, esp
mov dword [esp + 0x2c], esp
push ecx
mov ecx, 0x4e520c
call fcn.0041b050
fld1
push 0
sub esp, 8
fstp qword [esp]
push 8
push 0xa
lea edx, [esp + 0x5c]
push edx
call fcn.0042d760
push eax
mov eax, dword [esp + 0x24]
mov byte [esp + 0x184], 0x10
push eax
call fcn.0041e710
mov byte [esp + 0x180], 4
mov eax, dword [esp + 0x64]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49ec75
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x60]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49ec95
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xf0]
push ecx
mov byte [esp + 0x184], 0x12
call fcn.0042e690
mov byte [esp + 0x180], 0x11
mov eax, dword [esp + 0xb0]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x49ecd5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x180], 2
mov esi, dword [esp + 0xa0]
test esi, esi
je 0x49ed12
lea ecx, [esi + 4]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x49ed12
mov eax, dword [esi]
mov edx, dword [eax + 4]
mov ecx, esi
call edx
lea eax, [esi + 8]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x49ed12
mov edx, dword [esi]
mov eax, dword [edx + 8]
mov ecx, esi
call eax
mov byte [esp + 0x180], 1
mov ebx, dword [esp + 0x6c]
test ebx, ebx
je 0x49ed5e
mov edi, dword [esp + 0x70]
mov esi, ebx
cmp ebx, edi
je 0x49ed55
lea esp, [esp]
mov eax, dword [esi]
sub eax, 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49ed4e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add esi, 4
cmp esi, edi
jne 0x49ed30
push ebx
call fcn.00453bd6
add esp, 4
mov byte [esp + 0x180], 0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x49ed86
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x7c]
push ecx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov al, byte [esp + 0x12]
mov ecx, dword [esp + 0x178]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x130]
xor ecx, esp
call fcn.00453be1
mov esp, ebp
pop ebp
ret