Function at 0x4953a0
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x4fae48
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x4c
mov al, byte [esp + 0x5c]
push ebx
push esi
push edi
or ecx, 0xffffffff
xor edi, edi
xor ebx, ebx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x34], edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0xc], edi
mov dword [esp + 0x30], ebx
mov byte [esp + 0x48], al
mov dword [esp + 0x4c], edi
mov dword [esp + 0x50], edi
mov dword [esp + 0x54], edi
mov esi, dword [esp + 0x68]
mov dword [esp + 0x60], edi
mov eax, dword [esi + 0xec]
cmp eax, edi
jne 0x495422
mov dword [esi + 0x13c], edi
mov dword [esi + 0x154], ecx
mov dword [esi + 0x150], ecx
mov dword [esi + 0x148], edi
push edi
jmp 0x495c3a
xor ecx, ecx
xor edx, edx
mov cx, word [eax + 0xa]
mov dx, word [eax + 8]
push ebp
mov ebp, dword [esp + 0x70]
push ecx
push edx
mov ecx, ebp
call fcn.00463270
xor ecx, ecx
mov dword [esp + 0x24], ecx
mov eax, dword [esi + 0x3d0]
cmp eax, edi
je 0x4955d0
mov edx, dword [esi + 0x3d4]
sub edx, eax
sar edx, 2
cmp ecx, edx
jae 0x4955d0
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x10], eax
cmp dword [eax + 0x14], edi
je 0x49552e
mov ecx, dword [eax + 0x20]
cmp ecx, edi
je 0x49552e
mov ecx, dword [ecx]
sub ecx, edi
je 0x49556f
sub ecx, 3
je 0x49555b
sub ecx, 2
jne 0x49552e
mov ecx, dword [eax + 4]
mov edx, dword [eax]
push 1
push ecx
push edx
mov ecx, ebp
call fcn.004627d0
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x20]
cmp word [edx + 0x4c], di
je 0x495540
mov ecx, dword [eax + 0x10]
mov ebx, ecx
not ebx
and ebx, 1
cmp word [edx + ebx*2 + 0x4c], 0
jbe 0x49552c
and ecx, 1
xor esi, esi
cmp word [edx + ecx*2 + 0x4c], si
jbe 0x49550f
mov ecx, dword [eax + 4]
mov edx, dword [eax]
add ecx, edi
push 1
add edx, esi
push ecx
push edx
mov ecx, ebp
call fcn.004627d0
mov eax, dword [esp + 0x2c]
xor ebx, ebx
inc eax
inc esi
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x10]
mov edx, dword [eax + 0x20]
and ecx, 1
mov bx, word [edx + ecx*2 + 0x4c]
cmp esi, ebx
jl 0x4954d9
mov ecx, dword [eax + 0x10]
mov edx, dword [eax + 0x20]
mov esi, ecx
xor ebx, ebx
not esi
and esi, 1
inc edi
mov bx, word [edx + esi*2 + 0x4c]
cmp edi, ebx
jl 0x4954cd
mov esi, dword [esp + 0x6c]
xor edi, edi
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x34]
inc ecx
mov dword [esp + 0x24], ecx
jmp 0x495442
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x34]
inc eax
inc ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x24], ecx
jmp 0x495442
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x34], eax
inc ecx
mov ebx, eax
mov dword [esp + 0x24], ecx
jmp 0x495442
mov ecx, dword [esp + 0x38]
mov edx, dword [eax]
inc ecx
push 1
mov dword [esp + 0x3c], ecx
mov ecx, dword [eax + 4]
push ecx
push edx
mov ecx, ebp
call fcn.004627d0
mov eax, dword [esp + 0x10]
push 1
test byte [eax + 0x10], 1
mov ecx, dword [eax + 4]
jne 0x49559d
mov edx, dword [eax]
push ecx
inc edx
jmp 0x4955a1
mov edx, dword [eax]
inc ecx
push ecx
push edx
mov ecx, ebp
call fcn.004627d0
mov ecx, dword [esp + 0x54]
lea eax, [esp + 0x10]
push eax
push 1
push ecx
lea ecx, [esp + 0x58]
call fcn.0047f0e0
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x34]
inc ecx
mov dword [esp + 0x24], ecx
jmp 0x495442
cmp ebx, edi
je 0x495b75
mov eax, dword [ebx + 4]
cmp eax, edi
mov ecx, eax
jge 0x4955e4
lea ecx, [eax + 1]
mov eax, dword [ebx]
cmp eax, edi
jge 0x4955eb
inc eax
push ecx
push eax
mov ecx, ebp
call fcn.004630c0
cmp dword [eax + 0x10], edi
jne 0x495b75
xor ecx, ecx
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x50]
cmp eax, edi
je 0x495b75
mov edx, dword [esp + 0x54]
sub edx, eax
sar edx, 2
cmp ecx, edx
jae 0x495b75
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x10], eax
mov ecx, dword [eax + 0x10]
cmp ecx, 3
ja case.default.0x49562f
jmp dword [ecx*4 + 0x495c58]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], eax
inc ecx
jmp 0x49567c
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ecx
inc eax
jmp 0x495680
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x14], eax
lea edx, [ecx + 1]
mov dword [esp + 0x18], edx
jmp 0x49567c
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x18], ecx
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x70], 0xffffffff
mov dword [esp + 0x48], eax
xor eax, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x44], eax
mov ebx, 2
mov ecx, dword [esi + 0xec]
xor edx, edx
mov dx, word [ecx + 0xa]
mov ecx, ebp
dec edx
push edx
push ebx
call fcn.004630c0
mov edi, eax
test edi, edi
je 0x4956f2
mov eax, dword [edi + 0x10]
test eax, eax
jne 0x4956f2
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
push eax
push ecx
mov ecx, ebp
mov dword [esp + 0x4c], 1
call fcn.004630c0
push eax
push edi
mov ecx, ebp
call fcn.00463170
mov esi, eax
test esi, esi
jne 0x495702
mov esi, dword [esp + 0x6c]
inc ebx
cmp ebx, 8
jl 0x4956a3
mov ebx, 2
jmp 0x4957df
mov eax, dword [esi + 4]
test eax, eax
jne 0x49570d
xor ebx, ebx
jmp 0x495715
mov ebx, dword [esi + 8]
sub ebx, eax
sar ebx, 2
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
push edi
push edx
push eax
mov ecx, ebp
mov dword [esp + 0x7c], ebx
call fcn.004630c0
push eax
mov ecx, ebp
call fcn.00463170
mov edi, eax
test edi, edi
je 0x4957a8
mov ecx, dword [edi + 4]
test ecx, ecx
jne 0x495744
xor eax, eax
jmp 0x49574c
mov eax, dword [edi + 8]
sub eax, ecx
sar eax, 2
cmp eax, ebx
jae 0x495766
test ecx, ecx
jne 0x49575a
mov dword [esp + 0x70], ecx
jmp 0x495766
mov eax, dword [edi + 8]
sub eax, ecx
sar eax, 2
mov dword [esp + 0x70], eax
mov edx, dword [edi + 8]
mov eax, edx
cmp eax, edx
je 0x49577d
mov ebx, dword [eax]
add eax, 4
mov dword [ecx], ebx
add ecx, 4
cmp eax, edx
jne 0x49576f
mov edx, dword [edi + 8]
mov dword [edi + 8], ecx
mov eax, dword [edi + 4]
mov dword [esp + 0x28], edx
push eax
xor ebx, ebx
mov dword [esp + 0x2c], eax
call sub.MFC42.DLL_operatordelete
push edi
mov dword [edi + 4], ebx
mov dword [edi + 8], ebx
mov dword [edi + 0xc], ebx
call sub.MFC42.DLL_operatordelete
add esp, 8
mov edx, dword [esi + 8]
mov ecx, dword [esi + 4]
mov eax, edx
cmp eax, edx
je 0x4957c2
mov edi, dword [eax]
add eax, 4
mov dword [ecx], edi
add ecx, 4
cmp eax, edx
jne 0x4957b4
mov eax, dword [esi + 8]
mov dword [esi + 8], ecx
mov ecx, dword [esi + 4]
mov dword [esp + 0x28], eax
mov edx, ecx
mov dword [esp + 0x28], ecx
push edx
jmp 0x49595b
mov esi, dword [esp + 0x6c]
mov eax, dword [esi + 0xec]
xor ecx, ecx
mov cx, word [eax + 0xa]
dec ecx
push ecx
push ebx
mov ecx, ebp
call fcn.004630c0
mov edi, eax
test edi, edi
je 0x495822
mov eax, dword [edi + 0x10]
test eax, eax
jne 0x495822
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
push edx
push eax
mov ecx, ebp
call fcn.004630c0
push eax
push edi
mov ecx, ebp
call fcn.00463170
mov esi, eax
test esi, esi
jne 0x495887
inc ebx
cmp ebx, 8
jl 0x4957db
mov ebx, dword [esp + 0x1c]
mov edi, 2
mov edx, dword [esp + 0x6c]
xor ecx, ecx
mov eax, dword [edx + 0xec]
mov cx, word [eax + 0xa]
dec ecx
push ecx
push edi
mov ecx, ebp
call fcn.004630c0
mov esi, eax
test esi, esi
je 0x495878
mov eax, dword [esi + 0x10]
test eax, eax
jne 0x495878
mov edx, dword [esp + 0x20]
mov ecx, ebp
push edx
push ebx
call fcn.004630c0
push eax
push esi
mov ecx, ebp
call fcn.00463430
mov esi, eax
test esi, esi
jne 0x495982
inc edi
cmp edi, 8
jl 0x495831
mov ebx, dword [esp + 0x28]
jmp 0x4959ce
mov eax, dword [esi + 4]
test eax, eax
jne 0x495892
xor ebx, ebx
jmp 0x49589a
mov ebx, dword [esi + 8]
sub ebx, eax
sar ebx, 2
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
push edi
push ecx
push edx
mov ecx, ebp
mov dword [esp + 0x7c], ebx
call fcn.004630c0
push eax
mov ecx, ebp
call fcn.00463170
mov edi, eax
test edi, edi
je 0x49592d
mov ecx, dword [edi + 4]
test ecx, ecx
jne 0x4958c9
xor eax, eax
jmp 0x4958d1
mov eax, dword [edi + 8]
sub eax, ecx
sar eax, 2
cmp eax, ebx
jae 0x4958eb
test ecx, ecx
jne 0x4958df
mov dword [esp + 0x70], ecx
jmp 0x4958eb
mov eax, dword [edi + 8]
sub eax, ecx
sar eax, 2
mov dword [esp + 0x70], eax
mov edx, dword [edi + 8]
mov eax, edx
cmp eax, edx
je 0x495902
mov ebx, dword [eax]
add eax, 4
mov dword [ecx], ebx
add ecx, 4
cmp eax, edx
jne 0x4958f4
mov eax, dword [edi + 8]
mov dword [edi + 8], ecx
mov dword [esp + 0x28], eax
mov eax, dword [edi + 4]
push eax
xor ebx, ebx
mov dword [esp + 0x2c], eax
call sub.MFC42.DLL_operatordelete
push edi
mov dword [edi + 4], ebx
mov dword [edi + 8], ebx
mov dword [edi + 0xc], ebx
call sub.MFC42.DLL_operatordelete
add esp, 8
mov edx, dword [esi + 8]
mov ecx, dword [esi + 4]
mov eax, edx
cmp eax, edx
je 0x495947
mov edi, dword [eax]
add eax, 4
mov dword [ecx], edi
add ecx, 4
cmp eax, edx
jne 0x495939
mov edx, dword [esi + 8]
mov dword [esi + 8], ecx
mov eax, dword [esi + 4]
mov dword [esp + 0x28], edx
mov ecx, eax
mov dword [esp + 0x28], eax
push ecx
call sub.MFC42.DLL_operatordelete
xor eax, eax
push esi
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
call sub.MFC42.DLL_operatordelete
mov dword [esp + 0x30], 1
add esp, 8
mov ebx, dword [esp + 0x28]
jmp 0x4959ce
mov edx, dword [esi + 8]
mov ecx, dword [esi + 4]
mov eax, edx
cmp eax, edx
je 0x49599c
mov edi, dword [eax]
add eax, 4
mov dword [ecx], edi
add ecx, 4
cmp eax, edx
jne 0x49598e
mov eax, dword [esi + 8]
mov dword [esi + 8], ecx
mov ecx, dword [esi + 4]
mov dword [esp + 0x28], eax
mov edx, ecx
mov dword [esp + 0x28], ecx
push edx
call sub.MFC42.DLL_operatordelete
xor eax, eax
push esi
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
call sub.MFC42.DLL_operatordelete
add esp, 8
mov ebx, 1
mov eax, dword [esp + 0x44]
test eax, eax
jne 0x4959d8
xor ebx, ebx
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
jle 0x4959e8
mov dword [esp + 0x48], eax
test ebx, ebx
jne 0x4959f3
mov eax, dword [esp + 0x10]
mov dword [eax + 0x18], ebx
mov edx, dword [esp + 0x34]
mov eax, dword [edx + 4]
test eax, eax
mov ecx, eax
jge 0x495a03
lea ecx, [eax + 1]
mov eax, dword [edx]
test eax, eax
jge 0x495a0a
inc eax
push ecx
push eax
mov ecx, ebp
call fcn.004630c0
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
push ecx
push edx
mov ecx, ebp
mov esi, eax
call fcn.004630c0
push eax
push esi
mov ecx, ebp
call fcn.00463170
mov edi, eax
test edi, edi
je 0x495b54
test ebx, ebx
je 0x495a59
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x3c]
inc eax
mov dword [ecx + 0x18], 1
mov dword [esp + 0x3c], eax
mov eax, dword [edi + 4]
test eax, eax
jne 0x495a64
xor ebx, ebx
jmp 0x495a6c
mov ebx, dword [edi + 8]
sub ebx, eax
sar ebx, 2
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
push esi
push edx
push eax
mov ecx, ebp
mov dword [esp + 0x7c], ebx
call fcn.004630c0
push eax
mov ecx, ebp
call fcn.00463170
mov esi, eax
test esi, esi
je 0x495b01
mov ecx, dword [esi + 4]
test ecx, ecx
jne 0x495a9b
xor eax, eax
jmp 0x495aa3
mov eax, dword [esi + 8]
sub eax, ecx
sar eax, 2
cmp eax, ebx
jae 0x495abb
test ecx, ecx
jne 0x495aaf
xor ebx, ebx
jmp 0x495ab7
mov ebx, dword [esi + 8]
sub ebx, ecx
sar ebx, 2
mov dword [esp + 0x70], ebx
mov edx, dword [esi + 8]
mov eax, edx
cmp eax, edx
je 0x495ad6
mov ebx, dword [eax]
add eax, 4
mov dword [ecx], ebx
add ecx, 4
cmp eax, edx
jne 0x495ac4
mov ebx, dword [esp + 0x70]
mov edx, dword [esi + 8]
mov dword [esi + 8], ecx
mov eax, dword [esi + 4]
mov dword [esp + 0x70], edx
push eax
mov dword [esp + 0x74], eax
call sub.MFC42.DLL_operatordelete
xor eax, eax
push esi
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
call sub.MFC42.DLL_operatordelete
add esp, 8
cmp ebx, dword [esp + 0x40]
jle 0x495b0b
mov dword [esp + 0x40], ebx
mov edx, dword [edi + 8]
mov ecx, dword [edi + 4]
mov eax, edx
cmp eax, edx
je 0x495b25
mov esi, dword [eax]
add eax, 4
mov dword [ecx], esi
add ecx, 4
cmp eax, edx
jne 0x495b17
mov eax, dword [edi + 8]
mov dword [edi + 8], ecx
mov ecx, dword [edi + 4]
mov dword [esp + 0x70], eax
mov edx, ecx
mov dword [esp + 0x70], ecx
push edx
call sub.MFC42.DLL_operatordelete
xor eax, eax
push edi
mov dword [edi + 4], eax
mov dword [edi + 8], eax
mov dword [edi + 0xc], eax
call sub.MFC42.DLL_operatordelete
add esp, 8
jmp 0x495b5f
mov eax, dword [esp + 0x10]
mov dword [eax + 0x18], 0
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x6c]
inc eax
xor edi, edi
mov dword [esp + 0x24], eax
mov ecx, eax
jmp 0x495603
xor edi, edi
mov byte [esp + 0x6c], 0
mov ebx, 2
mov ecx, dword [esi + 0xec]
xor edx, edx
mov dx, word [ecx + 0xa]
mov ecx, ebp
dec edx
push edx
push ebx
call fcn.004630c0
mov ecx, dword [eax + 0x10]
mov al, byte [esp + 0x6c]
test ecx, ecx
je 0x495baa
inc al
mov byte [esp + 0x6c], al
jmp 0x495bb7
mov byte [edi + esi + 0x158], al
inc edi
mov byte [esp + 0x6c], 0
inc ebx
cmp ebx, 8
jl 0x495b81
cmp edi, 0xa
pop ebp
jge 0x495be3
mov ecx, 0xa
lea edx, [edi + esi + 0x158]
sub ecx, edi
mov edi, edx
mov edx, ecx
xor eax, eax
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
cmp eax, eax
mov edx, eax
je 0x495bff
mov edi, dword [eax]
add eax, 4
mov dword [ecx], edi
add ecx, 4
cmp eax, edx
jne 0x495bf1
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x34]
mov dword [esi + 0x148], eax
mov eax, dword [esp + 0x3c]
mov dword [esi + 0x140], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esi + 0x13c], edx
mov edx, dword [esp + 0x4c]
mov dword [esi + 0x154], eax
mov dword [esi + 0x150], ecx
push edx
call sub.MFC42.DLL_operatordelete
mov ecx, dword [esp + 0x5c]
add esp, 4
xor eax, eax
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
add esp, 0x58
ret 8