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

Disassembly:
sub esp, 0x48
push ebx
push ebp
mov ebp, dword [esp + 0x54]
xor eax, eax
push esi
push edi
mov ax, word [ebp + 0xe]
mov edi, dword [ebp + 4]
mov esi, eax
imul eax, edi
mov ebx, dword [esp + 0x6c]
mov edx, dword [ebp + 8]
add eax, 0x1f
mov dword [esp + 0x18], edi
sar eax, 3
shr esi, 3
and al, 0xfc
mov dword [esp + 0x14], edx
test ebx, ebx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x30], eax
jne 0x4a6827
mov ecx, eax
mov esi, dword [esp + 0x60]
imul ecx, edx
mov edi, dword [esp + 0x68]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, 1
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret
cmp edi, edx
mov eax, edi
jg 0x4a682f
mov eax, edx
imul eax, esi
cmp edi, edx
mov dword [esp + 0x6c], eax
jle 0x4a683c
mov edx, edi
lea ecx, [edx*8]
push ecx
call sub.MFC42.DLL_operatornew
mov edx, ebx
mov dword [esp + 0x14], eax
imul edx, ebx
neg edx
mov dword [esp + 0x40], edx
lea eax, [esp + 0x70]
fild dword [esp + 0x40]
fldln2
push eax
fld qword [0x539768]
fyl2x
fadd st(0), st(0)
fdivp st(1)
fsqrt
fstp qword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x58]
push ecx
push edx
call fcn.004a6e90
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x7c]
lea ecx, [eax*8 + 4]
push ecx
call sub.MFC42.DLL_operatornew
mov ebx, eax
mov ecx, 1
add esp, 0x14
mov dword [ebx], 0
mov eax, dword [esp + 0x6c]
lea edx, [eax + eax]
cmp edx, ecx
jl 0x4a68de
lea edx, [ebx + 4]
mov ebp, ecx
add edx, 4
sub ebp, eax
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + ebp*4 - 4]
mov ebp, dword [edx - 8]
add eax, ebp
inc ecx
mov dword [edx - 4], eax
mov eax, dword [esp + 0x6c]
lea ebp, [eax + eax]
cmp ecx, ebp
jle 0x4a68b7
mov ebp, dword [esp + 0x5c]
shl eax, 2
add ebx, eax
mov ecx, ebx
sub ecx, eax
mov eax, dword [eax + ebx]
mov edx, dword [ecx]
sub eax, edx
mov edx, dword [ebp + 8]
shl edx, 2
push edx
mov dword [esp + 0x4c], eax
call sub.MFC42.DLL_operatornew
add esp, 4
mov ebp, eax
test edi, edi
mov dword [esp + 0x34], ebp
mov dword [esp + 0x24], 0
jle 0x4a6acf
mov eax, dword [esp + 0x60]
mov dword [esp + 0x28], eax
test esi, esi
jle 0x4a6a94
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x68]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x60]
sub eax, ecx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x4c], eax
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x5c]
test edi, edi
mov eax, ebp
jle 0x4a695f
mov ecx, edi
mov dl, byte [esi]
mov byte [eax], dl
mov edx, dword [esp + 0x30]
inc eax
add esi, edx
dec ecx
jne 0x4a6951
mov edx, dword [esp + 0x10]
xor eax, eax
mov al, byte [ebp]
xor ecx, ecx
mov cl, byte [edi + ebp - 1]
push 1
push edi
push edx
push ebp
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
call fcn.004a6e00
add esp, 0x10
xor esi, esi
test edi, edi
mov dword [esp + 0x20], esi
jle 0x4a6a53
xor ecx, ecx
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0x6c]
cmp esi, eax
jge 0x4a69a3
mov edx, ecx
jmp 0x4a69a7
mov edx, eax
neg edx
lea ebp, [esi + eax]
cmp edi, ebp
lea edi, [ecx + edi - 1]
jle 0x4a69b4
mov edi, eax
mov ebp, dword [esp + 0x10]
add esi, edx
xor eax, eax
mov ecx, edx
lea esi, [ebp + esi*8]
mov ebp, dword [esp + 0x6c]
neg ebp
cmp edx, ebp
je 0x4a69e2
mov eax, dword [esp + 0x6c]
mov ebp, ebx
shl eax, 2
sub ebp, eax
mov eax, dword [ebx + edx*4]
sub eax, dword [ebp]
imul eax, dword [esp + 0x40]
cmp edx, edi
jge 0x4a6a0f
add ecx, dword [esi]
cmp ecx, edi
jle 0x4a69ee
mov ecx, edi
mov ebp, dword [ebx + ecx*4]
sub ebp, dword [ebx + edx*4]
mov edx, dword [esi]
imul ebp, dword [esi + 4]
add eax, ebp
lea esi, [esi + edx*8]
cmp ecx, edi
mov edx, ecx
jl 0x4a69e6
mov esi, dword [esp + 0x20]
mov ebp, dword [esp + 0x34]
jmp 0x4a6a17
mov ebp, dword [esp + 0x34]
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x6c]
cmp edi, ecx
je 0x4a6a2e
mov ecx, dword [ebx + ecx*4]
mov edx, dword [ebx + edi*4]
sub ecx, edx
imul ecx, dword [esp + 0x44]
add eax, ecx
cdq
idiv dword [esp + 0x48]
mov ecx, dword [esp + 0x38]
inc esi
dec ecx
mov dword [esp + 0x20], esi
mov dword [esp + 0x38], ecx
mov byte [esi + ebp - 1], al
mov eax, dword [esp + 0x14]
cmp esi, eax
mov edi, eax
jl 0x4a6997
xor eax, eax
test edi, edi
jle 0x4a6a74
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x5c]
lea esi, [edx + ecx]
mov dl, byte [eax + ebp]
inc eax
mov byte [esi], dl
mov edx, dword [esp + 0x30]
add esi, edx
cmp eax, edi
jl 0x4a6a64
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x3c]
inc ecx
dec eax
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x3c], eax
jne 0x4a6941
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x70]
test eax, eax
je 0x4a6ab4
mov edx, dword [esp + 0x24]
lea ecx, [edi + edi]
push ecx
mov ecx, dword [esp + 0x78]
push edx
push ecx
call eax
test eax, eax
je 0x4a6bbc
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
inc eax
add edx, esi
cmp eax, edi
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], edx
jl 0x4a691f
push ebp
call sub.MFC42.DLL_operatordelete
mov ecx, dword [esp + 0x70]
lea edx, [ecx*4]
sub ebx, edx
push ebx
call sub.MFC42.DLL_operatordelete
mov eax, dword [esp + 0x74]
lea ecx, [eax*4]
mov eax, dword [esp + 0x34]
sub eax, ecx
push eax
call sub.MFC42.DLL_operatordelete
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x5c]
lea edx, [esp + 0x78]
push edx
push eax
push ecx
call fcn.004a6e90
mov edx, dword [esp + 0x84]
mov dword [esp + 0x44], eax
lea eax, [edx*8 + 4]
push eax
call sub.MFC42.DLL_operatornew
mov ebx, eax
mov eax, 1
add esp, 0x1c
mov dword [ebx], 0
mov edx, dword [esp + 0x6c]
lea ecx, [edx + edx]
cmp ecx, eax
jl 0x4a6b6c
lea ecx, [ebx + 4]
mov ebp, eax
add ecx, 4
sub ebp, edx
mov edx, dword [esp + 0x2c]
mov edx, dword [edx + ebp*4 - 4]
mov ebp, dword [ecx - 8]
add edx, ebp
inc eax
mov dword [ecx - 4], edx
mov edx, dword [esp + 0x6c]
lea ebp, [edx + edx]
cmp eax, ebp
jle 0x4a6b49
lea eax, [edx*4]
mov dword [esp + 0x5c], 0
add ebx, eax
mov ecx, ebx
sub ecx, eax
mov eax, dword [eax + ebx]
mov ebp, dword [ecx]
sub eax, ebp
mov ebp, dword [esp + 0x14]
test ebp, ebp
mov dword [esp + 0x40], eax
jle 0x4a6d6f
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x28], ecx
test esi, esi
jle 0x4a6d2d
lea eax, [edi - 1]
mov dword [esp + 0x60], ecx
imul eax, esi
mov dword [esp + 0x4c], eax
mov dword [esp + 0x34], esi
jmp 0x4a6c0b
push ebp
call sub.MFC42.DLL_operatordelete
mov edx, dword [esp + 0x70]
lea eax, [edx*4]
sub ebx, eax
push ebx
call sub.MFC42.DLL_operatordelete
mov ecx, dword [esp + 0x74]
mov eax, dword [esp + 0x34]
lea edx, [ecx*4]
sub eax, edx
push eax
call sub.MFC42.DLL_operatordelete
mov eax, dword [esp + 0x1c]
push eax
call sub.MFC42.DLL_operatordelete
add esp, 0x10
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x60]
xor edx, edx
push esi
mov dl, byte [ecx]
push edi
mov dword [esp + 0x50], edx
xor edx, edx
mov dl, byte [eax + ecx]
mov eax, dword [esp + 0x18]
push eax
push ecx
mov dword [esp + 0x54], edx
call fcn.004a6e00
mov eax, dword [esp + 0x28]
add esp, 0x10
xor esi, esi
test eax, eax
mov dword [esp + 0x68], esi
jle 0x4a6d0d
mov ecx, dword [esp + 0x60]
xor ebp, ebp
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x38], ecx
jmp 0x4a6c52
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x6c]
cmp esi, edi
jge 0x4a6c5e
mov edx, ebp
jmp 0x4a6c62
mov edx, edi
neg edx
lea ecx, [esi + edi]
cmp eax, ecx
jg 0x4a6c6e
lea edi, [eax - 1]
add edi, ebp
mov ebp, dword [esp + 0x10]
add esi, edx
xor eax, eax
mov ecx, edx
lea esi, [ebp + esi*8]
mov ebp, dword [esp + 0x6c]
neg ebp
cmp edx, ebp
je 0x4a6c9c
mov eax, dword [esp + 0x6c]
mov ebp, ebx
shl eax, 2
sub ebp, eax
mov eax, dword [ebx + edx*4]
sub eax, dword [ebp]
imul eax, dword [esp + 0x48]
cmp edx, edi
jge 0x4a6cbf
add ecx, dword [esi]
cmp ecx, edi
jle 0x4a6ca8
mov ecx, edi
mov ebp, dword [ebx + ecx*4]
sub ebp, dword [ebx + edx*4]
mov edx, dword [esi]
imul ebp, dword [esi + 4]
add eax, ebp
lea esi, [esi + edx*8]
cmp ecx, edi
mov edx, ecx
jl 0x4a6ca0
mov ecx, dword [esp + 0x6c]
mov esi, dword [esp + 0x68]
cmp edi, ecx
je 0x4a6cda
mov ecx, dword [ebx + ecx*4]
mov ebp, dword [ebx + edi*4]
sub ecx, ebp
imul ecx, dword [esp + 0x44]
add eax, ecx
cdq
idiv dword [esp + 0x40]
mov ecx, dword [esp + 0x38]
mov ebp, dword [esp + 0x3c]
mov edx, dword [esp + 0x1c]
inc esi
dec ebp
mov dword [esp + 0x68], esi
mov dword [esp + 0x3c], ebp
mov byte [ecx], al
mov eax, dword [esp + 0x18]
add ecx, edx
cmp esi, eax
mov dword [esp + 0x38], ecx
jl 0x4a6c4e
mov ebp, dword [esp + 0x14]
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
inc ecx
dec eax
mov dword [esp + 0x60], ecx
mov dword [esp + 0x34], eax
jne 0x4a6c03
mov eax, dword [esp + 0x70]
test eax, eax
je 0x4a6d4c
mov ecx, dword [esp + 0x5c]
lea edx, [ebp + ebp]
push edx
mov edx, dword [esp + 0x78]
add ecx, ebp
push ecx
push edx
call eax
test eax, eax
je 0x4a6daf
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x30]
inc eax
add ecx, edx
cmp eax, ebp
mov dword [esp + 0x5c], eax
mov dword [esp + 0x28], ecx
jl 0x4a6ba0
mov edx, dword [esp + 0x6c]
lea eax, [edx*4]
sub ebx, eax
push ebx
call sub.MFC42.DLL_operatordelete
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x30]
lea edx, [ecx*4]
sub eax, edx
push eax
call sub.MFC42.DLL_operatordelete
mov eax, dword [esp + 0x18]
push eax
call sub.MFC42.DLL_operatordelete
add esp, 0xc
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret
mov eax, dword [esp + 0x6c]
lea ecx, [eax*4]
sub ebx, ecx
push ebx
call sub.MFC42.DLL_operatordelete
mov edx, dword [esp + 0x70]
lea eax, [edx*4]
mov ecx, eax
mov eax, dword [esp + 0x30]
sub eax, ecx
push eax
call sub.MFC42.DLL_operatordelete
mov edx, dword [esp + 0x18]
push edx
call sub.MFC42.DLL_operatordelete
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret