Function at 0x488ac0
Capabilities:
Check os version
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4ee062
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x1ac
push ebx
push esi
xor esi, esi
push edi
mov ebx, ecx
mov dword [esp + 0x20], 0x4f5778
mov dword [esp + 0x24], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], esi
push 0xffffffffffffffff
push esi
lea ecx, [esp + 0x28]
mov dword [esp + 0x1c8], esi
call fcn.00417070
lea ecx, [esp + 0x48]
call fcn.00456e50
mov eax, dword [ebp + 0x18]
mov byte [esp + 0x1c0], 1
mov dword [esp + 0x38], esi
mov eax, dword [eax + 8]
cmp eax, esi
jle 0x48969a
mov dword [esp + 0x34], esi
mov ecx, dword [ebp + 0x18]
mov edx, dword [esp + 0x34]
mov esi, edx
mov edi, dword [ecx + 4]
mov ecx, 7
add esi, edi
lea edi, [esp + 0xa8]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov eax, dword [esp + 0xa8]
and eax, 0xff
cmp ax, 0x10
jne 0x488f0d
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x488cdf
lea ecx, [esp + 0xc8]
call fcn.00456e50
movsx edx, word [esp + 0xae]
fld qword [ebx + 0x58]
fmul qword [0x4f67f8]
mov dword [esp + 0x10], edx
mov byte [esp + 0x1c0], 2
fild dword [esp + 0x10]
movsx eax, word [esp + 0xb0]
fmul qword [ebp + 0x10]
mov dword [esp + 0x10], eax
mov dword [esp + 0xd4], 1
fdiv st(1)
fstp qword [esp + 0x14]
fild dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
push ecx
push edx
fmul qword [ebp + 0x10]
fdiv st(1)
fstp qword [esp + 0x44]
fstp st(0)
call fcn.00434930
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
fstp qword [esp + 0x1c]
push eax
push ecx
call fcn.00434930
fld qword [esp + 0x24]
call sub.MSVCRT.dll__ftol
movsx edx, ax
mov dword [esp + 0xdc], edx
call sub.MSVCRT.dll__ftol
lea ecx, [esp + 0xd8]
sub esp, 0x20
neg ecx
movsx eax, ax
sbb ecx, ecx
lea edx, [esp + 0xfc]
and ecx, edx
mov dword [esp + 0x100], eax
mov eax, esp
mov dword [esp + 0x44], esp
mov edx, dword [ecx]
mov dword [eax + 4], edx
mov ecx, dword [ecx + 4]
mov dword [eax + 8], ecx
mov edx, dword [esp + 0x104]
mov dword [eax + 0xc], edx
mov cx, word [esp + 0x108]
mov word [eax + 0x10], cx
mov edx, dword [esp + 0x10c]
mov dword [eax + 0x14], edx
mov cx, word [esp + 0x110]
mov word [eax + 0x18], cx
mov dx, word [esp + 0x112]
mov word [eax + 0x1a], dx
mov cx, word [esp + 0x114]
mov word [eax + 0x1c], cx
mov dx, word [esp + 0x116]
mov word [eax + 0x1e], dx
mov ecx, dword [esp + 0x118]
mov dword [eax + 0x20], ecx
mov edx, dword [esp + 0x11c]
mov dword [eax + 0x24], edx
mov cx, word [esp + 0x120]
mov word [eax + 0x28], cx
mov edx, dword [esp + 0x124]
lea ecx, [esp + 0x50]
mov dword [eax + 0x2c], edx
mov dword [eax], 0x4f5588
call fcn.00416960
lea ecx, [esp + 0xc8]
mov byte [esp + 0x1c0], 1
call fcn.00456e80
sub esp, 0x30
mov ecx, 7
mov eax, esp
mov dword [esp + 0x44], esp
sub esp, 0x20
lea esi, [esp + 0xf8]
mov edi, esp
mov edx, dword [ebp + 8]
rep movsd dword es:[edi], dword [esi]
sub esp, 0x10
mov ecx, esp
movsw word es:[edi], word [esi]
mov dword [ecx], edx
mov edx, dword [ebp + 0xc]
push eax
mov dword [ecx + 4], edx
mov edx, dword [ebp + 0x10]
mov dword [ecx + 8], edx
mov edx, dword [ebp + 0x14]
mov dword [ecx + 0xc], edx
mov ecx, ebx
call fcn.00489ac0
lea eax, [esp + 0x188]
lea ecx, [esp + 0x78]
push eax
call fcn.00456e90
lea ecx, [esp + 0x158]
call fcn.00456e80
mov ax, word [esp + 0xaa]
mov dl, byte [esp + 0xac]
xor ecx, ecx
and edx, 0xff
mov cl, ah
and eax, 0xff
test cx, cx
je 0x488d66
or dword [esp + 0x5c], 0x20
test ax, ax
jne 0x488d80
mov eax, dword [esp + 0x28]
lea ecx, [eax + eax*2]
mov eax, dword [esp + 0x24]
shl ecx, 4
lea eax, [ecx + eax - 0x1c]
or dword [eax], 1
cmp dx, 1
jne 0x488da2
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
lea ecx, [eax + eax*2]
shl ecx, 4
or byte [ecx + edx - 0x14], 2
lea eax, [ecx + edx - 0x14]
jmp 0x488e5d
cmp dx, 2
jne 0x488dc4
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
lea eax, [eax + eax*2]
shl eax, 4
or byte [eax + ecx - 0x14], 4
lea eax, [eax + ecx - 0x14]
jmp 0x488e5d
cmp dx, 3
jne 0x488de3
mov eax, dword [esp + 0x28]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x24]
shl edx, 4
or byte [edx + eax - 0x14], 8
lea eax, [edx + eax - 0x14]
jmp 0x488e5d
cmp dx, 4
jne 0x488e02
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
lea ecx, [eax + eax*2]
shl ecx, 4
or byte [ecx + edx - 0x14], 0x10
lea eax, [ecx + edx - 0x14]
jmp 0x488e5d
cmp dx, 5
jne 0x488e21
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
lea eax, [eax + eax*2]
shl eax, 4
or byte [eax + ecx - 0x14], 0x20
lea eax, [eax + ecx - 0x14]
jmp 0x488e5d
cmp dx, 6
jne 0x488e40
mov eax, dword [esp + 0x28]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x24]
shl edx, 4
or byte [edx + eax - 0x14], 0x40
lea eax, [edx + eax - 0x14]
jmp 0x488e5d
cmp dx, 7
jne 0x488e5d
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
lea ecx, [eax + eax*2]
shl ecx, 4
or byte [ecx + edx - 0x14], 0x80
lea eax, [ecx + edx - 0x14]
lea ecx, [esp + 0x48]
sub esp, 0x30
neg ecx
sbb ecx, ecx
lea edx, [esp + 0x7c]
and ecx, edx
mov eax, esp
mov dword [esp + 0x44], esp
mov edx, dword [ecx]
mov dword [eax + 4], edx
mov ecx, dword [ecx + 4]
mov dword [eax + 8], ecx
mov edx, dword [esp + 0x84]
mov dword [eax + 0xc], edx
mov cx, word [esp + 0x88]
mov word [eax + 0x10], cx
mov edx, dword [esp + 0x8c]
mov dword [eax + 0x14], edx
mov cx, word [esp + 0x90]
mov word [eax + 0x18], cx
mov dx, word [esp + 0x92]
mov word [eax + 0x1a], dx
mov cx, word [esp + 0x94]
mov word [eax + 0x1c], cx
mov dx, word [esp + 0x96]
mov word [eax + 0x1e], dx
mov ecx, dword [esp + 0x98]
mov dword [eax + 0x20], ecx
mov edx, dword [esp + 0x9c]
mov dword [eax + 0x24], edx
mov cx, word [esp + 0xa0]
mov word [eax + 0x28], cx
mov edx, dword [esp + 0xa4]
lea ecx, [esp + 0x50]
mov dword [eax + 0x2c], edx
mov dword [eax], 0x4f5588
call fcn.00416960
jmp 0x489678
cmp ax, 0x11
jne 0x489197
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x489088
lea ecx, [esp + 0xf8]
call fcn.00456e50
movsx eax, word [esp + 0xae]
fld qword [ebx + 0x58]
fmul qword [0x4f67f8]
mov dword [esp + 0x10], eax
mov byte [esp + 0x1c0], 3
fild dword [esp + 0x10]
movsx ecx, word [esp + 0xb0]
fmul qword [ebp + 0x10]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x104], 1
fdiv st(1)
fstp qword [esp + 0x14]
fild dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
push edx
push eax
fmul qword [ebp + 0x10]
fdiv st(1)
fstp qword [esp + 0x44]
fstp st(0)
call fcn.00434930
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
fstp qword [esp + 0x1c]
push ecx
push edx
call fcn.00434930
fld qword [esp + 0x24]
call sub.MSVCRT.dll__ftol
movsx eax, ax
mov dword [esp + 0x10c], eax
call sub.MSVCRT.dll__ftol
movsx ecx, ax
mov dword [esp + 0x110], ecx
lea ecx, [esp + 0x108]
sub esp, 0x20
lea edx, [esp + 0x12c]
neg ecx
sbb ecx, ecx
mov eax, esp
and ecx, edx
mov dword [esp + 0x44], esp
mov edx, dword [ecx]
mov dword [eax + 4], edx
mov ecx, dword [ecx + 4]
mov dword [eax + 8], ecx
mov edx, dword [esp + 0x134]
mov dword [eax + 0xc], edx
mov cx, word [esp + 0x138]
mov word [eax + 0x10], cx
mov edx, dword [esp + 0x13c]
mov dword [eax + 0x14], edx
mov cx, word [esp + 0x140]
mov word [eax + 0x18], cx
mov dx, word [esp + 0x142]
mov word [eax + 0x1a], dx
mov cx, word [esp + 0x144]
mov word [eax + 0x1c], cx
mov dx, word [esp + 0x146]
mov word [eax + 0x1e], dx
mov ecx, dword [esp + 0x148]
mov dword [eax + 0x20], ecx
mov edx, dword [esp + 0x14c]
mov dword [eax + 0x24], edx
mov cx, word [esp + 0x150]
mov word [eax + 0x28], cx
mov edx, dword [esp + 0x154]
lea ecx, [esp + 0x50]
mov dword [eax + 0x2c], edx
mov dword [eax], 0x4f5588
call fcn.00416960
lea ecx, [esp + 0xf8]
mov byte [esp + 0x1c0], 1
call fcn.00456e80
sub esp, 0x30
mov ecx, 7
mov eax, esp
mov dword [esp + 0x44], esp
sub esp, 0x20
lea esi, [esp + 0xf8]
mov edi, esp
mov edx, dword [ebp + 8]
rep movsd dword es:[edi], dword [esi]
sub esp, 0x10
mov ecx, esp
movsw word es:[edi], word [esi]
mov dword [ecx], edx
mov edx, dword [ebp + 0xc]
push eax
mov dword [ecx + 4], edx
mov edx, dword [ebp + 0x10]
mov dword [ecx + 8], edx
mov edx, dword [ebp + 0x14]
mov dword [ecx + 0xc], edx
mov ecx, ebx
call fcn.00489ac0
lea eax, [esp + 0x1b8]
lea ecx, [esp + 0x78]
push eax
call fcn.00456e90
lea ecx, [esp + 0x188]
call fcn.00456e80
lea ecx, [esp + 0x48]
sub esp, 0x30
neg ecx
sbb ecx, ecx
lea edx, [esp + 0x7c]
and ecx, edx
mov eax, esp
mov dword [esp + 0x44], esp
mov edx, dword [ecx]
mov dword [eax + 4], edx
mov ecx, dword [ecx + 4]
mov dword [eax + 8], ecx
mov edx, dword [esp + 0x84]
mov dword [eax + 0xc], edx
mov cx, word [esp + 0x88]
mov word [eax + 0x10], cx
mov edx, dword [esp + 0x8c]
mov dword [eax + 0x14], edx
mov cx, word [esp + 0x90]
mov word [eax + 0x18], cx
mov dx, word [esp + 0x92]
mov word [eax + 0x1a], dx
mov cx, word [esp + 0x94]
mov word [eax + 0x1c], cx
mov dx, word [esp + 0x96]
mov word [eax + 0x1e], dx
mov ecx, dword [esp + 0x98]
mov dword [eax + 0x20], ecx
mov edx, dword [esp + 0x9c]
mov dword [eax + 0x24], edx
mov cx, word [esp + 0xa0]
mov word [eax + 0x28], cx
mov edx, dword [esp + 0xa4]
lea ecx, [esp + 0x50]
mov dword [eax + 0x2c], edx
mov dword [eax], 0x4f5588
call fcn.00416960
jmp 0x489678
cmp ax, 0x20
jne 0x489444
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x48930c
lea ecx, [esp + 0x78]
call fcn.00456e50
movsx eax, word [esp + 0xae]
fld qword [ebx + 0x58]
fmul qword [0x4f67f8]
mov dword [esp + 0x10], eax
mov byte [esp + 0x1c0], 4
fild dword [esp + 0x10]
movsx ecx, word [esp + 0xb0]
fmul qword [ebp + 0x10]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x84], 1
fdiv st(1)
fstp qword [esp + 0x14]
fild dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
push edx
push eax
fmul qword [ebp + 0x10]
fdiv st(1)
fstp qword [esp + 0x44]
fstp st(0)
call fcn.00434930
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
fstp qword [esp + 0x1c]
push ecx
push edx
call fcn.00434930
fld qword [esp + 0x24]
call sub.MSVCRT.dll__ftol
movsx eax, ax
mov dword [esp + 0x8c], eax
call sub.MSVCRT.dll__ftol
movsx ecx, ax
mov dword [esp + 0x90], ecx
lea ecx, [esp + 0x88]
sub esp, 0x20
lea edx, [esp + 0xac]
neg ecx
sbb ecx, ecx
mov eax, esp
and ecx, edx
mov dword [esp + 0x44], esp
mov edx, dword [ecx]
mov dword [eax + 4], edx
mov ecx, dword [ecx + 4]
mov dword [eax + 8], ecx
mov edx, dword [esp + 0xb4]
mov dword [eax + 0xc], edx
mov cx, word [esp + 0xb8]
mov word [eax + 0x10], cx
mov edx, dword [esp + 0xbc]
mov dword [eax + 0x14], edx
mov cx, word [esp + 0xc0]
mov word [eax + 0x18], cx
mov dx, word [esp + 0xc2]
mov word [eax + 0x1a], dx
mov cx, word [esp + 0xc4]
mov word [eax + 0x1c], cx
mov dx, word [esp + 0xc6]
mov word [eax + 0x1e], dx
mov ecx, dword [esp + 0xc8]
mov dword [eax + 0x20], ecx
mov edx, dword [esp + 0xcc]
mov dword [eax + 0x24], edx
mov cx, word [esp + 0xd0]
mov word [eax + 0x28], cx
mov edx, dword [esp + 0xd4]
lea ecx, [esp + 0x50]
mov dword [eax + 0x2c], edx
mov dword [eax], 0x4f5588
call fcn.00416960
lea ecx, [esp + 0x78]
mov byte [esp + 0x1c0], 1
call fcn.00456e80
sub esp, 0x30
mov ecx, 7
mov eax, esp
mov dword [esp + 0x44], esp
sub esp, 0x20
lea esi, [esp + 0xf8]
mov edi, esp
mov edx, dword [ebp + 8]
rep movsd dword es:[edi], dword [esi]
sub esp, 0x10
mov ecx, esp
movsw word es:[edi], word [esi]
mov dword [ecx], edx
mov edx, dword [ebp + 0xc]
push eax
mov dword [ecx + 4], edx
mov edx, dword [ebp + 0x10]
mov dword [ecx + 8], edx
mov edx, dword [ebp + 0x14]
mov dword [ecx + 0xc], edx
mov ecx, ebx
call fcn.00489ac0
lea eax, [esp + 0x158]
lea ecx, [esp + 0x78]
push eax
call fcn.00456e90
lea ecx, [esp + 0x128]
call fcn.00456e80
mov ax, word [esp + 0xaa]
xor ecx, ecx
mov cl, ah
and eax, 0xff
test cx, cx
je 0x489394
test ax, ax
mov eax, dword [esp + 0x5c]
jne 0x48938e
or al, 0x20
jmp 0x489390
or al, 0x40
mov dword [esp + 0x5c], eax
lea ecx, [esp + 0x48]
sub esp, 0x30
neg ecx
sbb ecx, ecx
lea edx, [esp + 0x7c]
and ecx, edx
mov eax, esp
mov dword [esp + 0x44], esp
mov edx, dword [ecx]
mov dword [eax + 4], edx
mov ecx, dword [ecx + 4]
mov dword [eax + 8], ecx
mov edx, dword [esp + 0x84]
mov dword [eax + 0xc], edx
mov cx, word [esp + 0x88]
mov word [eax + 0x10], cx
mov edx, dword [esp + 0x8c]
mov dword [eax + 0x14], edx
mov cx, word [esp + 0x90]
mov word [eax + 0x18], cx
mov dx, word [esp + 0x92]
mov word [eax + 0x1a], dx
mov cx, word [esp + 0x94]
mov word [eax + 0x1c], cx
mov dx, word [esp + 0x96]
mov word [eax + 0x1e], dx
mov ecx, dword [esp + 0x98]
mov dword [eax + 0x20], ecx
mov edx, dword [esp + 0x9c]
mov dword [eax + 0x24], edx
mov cx, word [esp + 0xa0]
mov word [eax + 0x28], cx
mov edx, dword [esp + 0xa4]
lea ecx, [esp + 0x50]
mov dword [eax + 0x2c], edx
mov dword [eax], 0x4f5588
call fcn.00416960
jmp 0x489678
cmp ax, 0x30
je 0x489678
cmp ax, 0x31
je 0x489678
cmp ax, 0x40
je 0x489678
cmp ax, 0x41
je 0x489678
cmp ax, 0x42
je 0x489678
cmp ax, 0x43
je 0x489678
cmp ax, 1
jne 0x4894aa
test edx, edx
je 0x489678
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
lea eax, [eax + eax*2]
shl eax, 4
lea eax, [eax + ecx - 0x1c]
mov ecx, dword [eax]
or ecx, 1
jmp 0x489676
cmp ax, 2
je 0x489678
cmp ax, 3
jne 0x4895e1
test edx, edx
je 0x489678
mov ax, word [esp + 0xac]
test ax, ax
jne 0x4894ef
mov eax, dword [esp + 0x28]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x24]
shl edx, 4
or byte [edx + eax - 0x16], 0x80
lea eax, [edx + eax - 0x16]
jmp 0x489678
cmp ax, 1
jne 0x489511
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
lea ecx, [eax + eax*2]
shl ecx, 4
or byte [ecx + edx - 0x16], 0x40
lea eax, [ecx + edx - 0x16]
jmp 0x489678
cmp ax, 2
jne 0x489533
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
lea eax, [eax + eax*2]
shl eax, 4
or byte [eax + ecx - 0x16], 0x20
lea eax, [eax + ecx - 0x16]
jmp 0x489678
cmp ax, 3
jne 0x489555
mov eax, dword [esp + 0x28]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x24]
shl edx, 4
or byte [edx + eax - 0x16], 0x10
lea eax, [edx + eax - 0x16]
jmp 0x489678
cmp ax, 4
jne 0x489577
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
lea ecx, [eax + eax*2]
shl ecx, 4
or byte [ecx + edx - 0x16], 8
lea eax, [ecx + edx - 0x16]
jmp 0x489678
cmp ax, 5
jne 0x489599
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
lea eax, [eax + eax*2]
shl eax, 4
or byte [eax + ecx - 0x16], 4
lea eax, [eax + ecx - 0x16]
jmp 0x489678
cmp ax, 6
jne 0x4895bb
mov eax, dword [esp + 0x28]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x24]
shl edx, 4
or byte [edx + eax - 0x16], 2
lea eax, [edx + eax - 0x16]
jmp 0x489678
cmp ax, 7
jne 0x489678
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
lea ecx, [eax + eax*2]
shl ecx, 4
or byte [ecx + edx - 0x16], 1
lea eax, [ecx + edx - 0x16]
jmp 0x489678
cmp ax, 4
je 0x489678
cmp ax, 5
je 0x489678
cmp ax, 0xf
jne 0x489678
test edx, edx
je 0x489678
mov ax, word [esp + 0xaa]
mov dl, byte [esp + 0xac]
xor ecx, ecx
and edx, 0xff
mov cl, ah
and eax, 0xff
test ax, ax
je 0x48963a
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
lea eax, [eax + eax*2]
shl eax, 4
lea eax, [eax + esi - 0x1c]
or dword [eax], 0x1000
test cx, cx
je 0x489658
mov eax, dword [esp + 0x28]
lea ecx, [eax + eax*2]
mov eax, dword [esp + 0x24]
shl ecx, 4
lea eax, [ecx + eax - 0x1c]
mov ecx, dword [eax]
or cl, 0x80
mov dword [eax], ecx
test dx, dx
je 0x489678
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
lea ecx, [eax + eax*2]
shl ecx, 4
lea eax, [ecx + edx - 0x1c]
mov ecx, dword [ecx + edx - 0x1c]
or ch, 1
mov dword [eax], ecx
mov ecx, dword [ebp + 0x18]
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
inc eax
mov edx, dword [ecx + 8]
add esi, 0x1e
cmp eax, edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], esi
jl 0x488b3a
mov eax, dword [ebp + 0x1c]
mov ecx, dword [esp + 0x28]
xor edi, edi
mov dword [esp + 0x34], ecx
cmp ecx, edi
mov word [eax + 4], 4
mov word [eax + 0xa], 2
mov word [eax + 8], 8
lea ebx, [eax + 0x54]
jne 0x489702
mov esi, dword [ebx + 4]
cmp esi, edi
je 0x4896f7
mov eax, dword [ebx + 8]
mov edx, eax
dec eax
test edx, edx
je 0x4896e4
lea edi, [eax + 1]
mov eax, dword [esi]
push 0
mov ecx, esi
call dword [eax]
add esi, 0x30
dec edi
jne 0x4896d4
xor edi, edi
mov eax, dword [ebx + 4]
push eax
call sub.MFC42.DLL_operatordelete
mov ecx, dword [esp + 0x2c]
add esp, 4
mov dword [ebx + 4], edi
mov dword [ebx + 0xc], edi
mov dword [ebx + 8], edi
jmp 0x489925
mov edx, dword [ebx + 4]
cmp edx, edi
jne 0x489775
lea edi, [ecx + ecx*2]
shl edi, 4
push edi
call sub.MFC42.DLL_operatornew
mov edx, eax
mov ecx, edi
mov dword [ebx + 4], edx
mov esi, edx
mov edi, edx
mov edx, ecx
xor eax, eax
add esp, 4
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
mov dword [esp + 0x10], esi
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x34]
lea edi, [eax]
mov dword [esp + 0x14], esi
test esi, esi
mov byte [esp + 0x1c0], 5
je 0x489754
mov ecx, esi
call fcn.00456e50
add esi, 0x30
dec edi
mov byte [esp + 0x1c0], 1
mov dword [esp + 0x10], esi
jne 0x48973d
mov eax, dword [esp + 0x34]
mov dword [ebx + 0xc], eax
mov dword [ebx + 8], eax
jmp 0x489921
mov esi, dword [ebx + 0xc]
cmp ecx, esi
jg 0x48982c
mov eax, dword [ebx + 8]
cmp eax, ecx
jge 0x4897f8
sub ecx, eax
lea esi, [eax + eax*2]
mov dword [esp + 0x10], ecx
xor eax, eax
lea ecx, [ecx + ecx*2]
shl esi, 4
shl ecx, 4
add esi, edx
mov edx, ecx
mov edi, esi
mov dword [esp + 0x38], esi
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 + 0x10]
mov ecx, eax
dec eax
test ecx, ecx
je 0x48981c
lea edi, [eax + 1]
mov dword [esp + 0x14], esi
test esi, esi
mov byte [esp + 0x1c0], 6
je 0x4897d6
mov ecx, esi
call fcn.00456e50
add esi, 0x30
dec edi
mov byte [esp + 0x1c0], 1
mov dword [esp + 0x38], esi
jne 0x4897bf
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x28]
mov dword [ebx + 8], edx
jmp 0x489925
jle 0x489820
lea edi, [ecx + ecx*2]
sub eax, ecx
shl edi, 4
add edi, edx
mov edx, eax
dec eax
test edx, edx
je 0x489820
lea esi, [eax + 1]
mov eax, dword [edi]
push 0
mov ecx, edi
call dword [eax]
add edi, 0x30
dec esi
jne 0x48980e
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x34]
mov dword [ebx + 8], edx
jmp 0x489925
mov eax, dword [ebx + 0x10]
cmp eax, edi
jne 0x489857
mov eax, dword [ebx + 8]
cdq
and edx, 7
add eax, edx
sar eax, 3
cmp eax, 4
jge 0x48984b
mov eax, 4
jmp 0x489857
cmp eax, 0x400
jle 0x489857
mov eax, 0x400
add eax, esi
cmp ecx, eax
mov dword [esp + 0x38], eax
jl 0x489865
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0x38]
lea eax, [eax + eax*2]
shl eax, 4
push eax
call sub.MFC42.DLL_operatornew
mov ecx, dword [ebx + 8]
mov esi, dword [ebx + 4]
mov edi, eax
mov dword [esp + 0x18], eax
lea ecx, [ecx + ecx*2]
add esp, 4
shl ecx, 4
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [ebx + 8]
mov ecx, dword [esp + 0x34]
sub ecx, esi
mov dword [esp + 0x10], ecx
lea esi, [esi + esi*2]
lea ecx, [ecx + ecx*2]
shl esi, 4
shl ecx, 4
add esi, eax
mov edx, ecx
xor eax, eax
mov edi, esi
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
mov dword [esp + 0x3c], esi
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x10]
mov ecx, eax
dec eax
test ecx, ecx
je 0x489900
lea edi, [eax + 1]
mov dword [esp + 0x10], esi
test esi, esi
mov byte [esp + 0x1c0], 7
je 0x4898ee
mov ecx, esi
call fcn.00456e50
add esi, 0x30
dec edi
mov byte [esp + 0x1c0], 1
mov dword [esp + 0x3c], esi
jne 0x4898d7
mov eax, dword [ebx + 4]
push eax
call sub.MFC42.DLL_operatordelete
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
add esp, 4
mov dword [ebx + 4], edx
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], ecx
mov ecx, dword [esp + 0x28]
xor edi, edi
test ecx, ecx
jle 0x489a49
lea ecx, [esp + 0x78]
call fcn.00456e50
sub esp, 0x30
lea ecx, [esp + 0x50]
mov edx, esp
mov dword [esp + 0x44], esp
push edi
push edx
mov byte [esp + 0x1f8], 8
call fcn.0040b280
lea eax, [esp + 0x158]
lea ecx, [esp + 0xa8]
push eax
call fcn.00456e90
lea ecx, [esp + 0x128]
call fcn.00456e80
lea ecx, [esp + 0x78]
sub esp, 0x30
neg ecx
sbb ecx, ecx
lea edx, [esp + 0xac]
and ecx, edx
mov word [esp + 0xb8], 8
mov eax, esp
mov dword [esp + 0x44], esp
mov edx, dword [ecx]
push edi
mov dword [eax + 4], edx
mov ecx, dword [ecx + 4]
mov dword [eax + 8], ecx
mov edx, dword [esp + 0xb8]
mov dword [eax + 0xc], edx
mov cx, word [esp + 0xbc]
mov word [eax + 0x10], cx
mov edx, dword [esp + 0xc0]
mov dword [eax + 0x14], edx
mov cx, word [esp + 0xc4]
mov word [eax + 0x18], cx
mov dx, word [esp + 0xc6]
mov word [eax + 0x1a], dx
mov cx, word [esp + 0xc8]
mov word [eax + 0x1c], cx
mov dx, word [esp + 0xca]
mov word [eax + 0x1e], dx
mov ecx, dword [esp + 0xcc]
mov dword [eax + 0x20], ecx
mov edx, dword [esp + 0xd0]
mov dword [eax + 0x24], edx
mov cx, word [esp + 0xd4]
mov word [eax + 0x28], cx
mov edx, dword [esp + 0xd8]
mov ecx, ebx
mov dword [eax + 0x2c], edx
mov dword [eax], 0x4f5588
call fcn.00423b60
lea ecx, [esp + 0x78]
mov byte [esp + 0x1c0], 1
call fcn.00456e80
mov eax, dword [esp + 0x28]
inc edi
cmp edi, eax
jl 0x48992f
mov ecx, dword [ebp + 0x1c]
call fcn.0045afe0
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 0
call fcn.00456e80
mov dword [esp + 0x20], 0x4f5778
mov esi, dword [esp + 0x24]
mov dword [esp + 0x1c0], 9
test esi, esi
je 0x489aa2
mov eax, dword [esp + 0x28]
test eax, eax
je 0x489a99
lea edi, [eax]
mov eax, dword [esi]
push 0
mov ecx, esi
call dword [eax]
add esi, 0x30
dec edi
jne 0x489a87
mov esi, dword [esp + 0x24]
push esi
call sub.MFC42.DLL_operatordelete
add esp, 4
mov ecx, dword [esp + 0x1b8]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 0x18