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

Disassembly:
mov eax, 0x20080
call fcn.00553ce0
push ebx
push ebp
push esi
mov esi, dword [esp + 0x20090]
push edi
mov dword [esp + 0x34], 0x7fffffff
mov eax, dword [esi + 0x84]
mov dword [esp + 0x18], 0
test eax, eax
jne 0x4ab555
mov eax, dword [esi + 0x65a0]
test eax, eax
je 0x4ab555
mov eax, dword [esi + 0x8c]
test eax, eax
je 0x4aab12
mov eax, dword [sym.imp.MSVCRT.dll__iob]
push str.Phase_One_correction..._n
add eax, 0x40
push eax
call dword [sym.imp.MSVCRT.dll_fprintf]
add esp, 8
mov edx, dword [esi + 0x6594]
mov eax, dword [esi + 4]
mov ecx, dword [esi]
push 0
push edx
push eax
call dword [ecx + 8]
push esi
call fcn.004a68b0
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 1
push 6
push edx
mov word [esi + 0x6244], ax
call dword [ecx + 8]
mov edi, dword [esi]
add esp, 0x1c
push 0
push esi
call fcn.004a6950
mov ecx, dword [esi + 0x6594]
add esp, 4
add eax, ecx
push eax
mov eax, dword [esi + 4]
push eax
call dword [edi + 8]
push esi
call fcn.004a6950
push esi
mov edi, eax
call fcn.004a6950
add esp, 0x14
mov ecx, edi
dec edi
test ecx, ecx
je 0x4ab555
inc edi
mov dword [esp + 0x30], edi
push esi
call fcn.004a6950
push esi
mov ebp, eax
call fcn.004a6950
push esi
mov ebx, eax
call fcn.004a6950
mov edx, dword [esi]
mov edi, eax
mov eax, dword [esi + 4]
push eax
call dword [edx + 0x18]
mov edx, dword [esi + 0x6594]
mov ecx, dword [esi]
add edi, edx
mov edx, dword [esi + 4]
push 0
push edi
push edx
mov dword [esp + 0x30], eax
call dword [ecx + 8]
add esp, 0x1c
cmp ebp, 0x419
jne 0x4aac74
push esi
call fcn.004a6950
add esp, 4
lea edi, [esp + 0x44]
mov ebx, 8
push 0xb
push esi
call fcn.004a69d0
fstp dword [edi]
add esp, 8
add edi, 4
dec ebx
jne 0x4aabd9
fld dword [esi + 0x6240]
fsub dword [esp + 0x60]
xor edi, edi
lea ebx, [esp + 0x90]
mov dword [esp + 0x10], edi
fmul dword [esp + 0x5c]
fadd dword [esp + 0x50]
fadd dword [0x5565d0]
fstp dword [esp + 0x50]
fild dword [esp + 0x10]
fld st(0)
fmul dword [esp + 0x58]
fadd dword [esp + 0x50]
fmulp st(1)
fadd dword [esp + 0x48]
fcom dword [0x574bd8]
fnstsw ax
test ah, 1
je 0x4aac4f
fld dword [0x5565c4]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x4aac57
fstp st(0)
fld dword [0x5565c4]
jmp 0x4aac57
fstp st(0)
fld dword [0x574bd8]
call sub.MSVCRT.dll__ftol
mov word [ebx], ax
inc edi
add ebx, 2
cmp edi, 0x10000
mov dword [esp + 0x10], edi
jl 0x4aac15
jmp 0x4aad28
cmp ebp, 0x41a
jne 0x4aadd6
lea edi, [esp + 0x44]
mov ebx, 4
push 0xb
push esi
call fcn.004a69d0
fstp dword [edi]
add esp, 8
add edi, 4
dec ebx
jne 0x4aac89
xor edi, edi
lea ebx, [esp + 0x90]
mov dword [esp + 0x10], edi
fld dword [0x5565c4]
fild dword [esp + 0x10]
lea ecx, [esp + 0x50]
mov eax, 4
fld st(0)
fmulp st(2)
fxch st(1)
dec eax
sub ecx, 4
test eax, eax
fadd dword [ecx + 4]
fxch st(1)
ja 0x4aacbc
faddp st(1)
fcom dword [0x574bd8]
fnstsw ax
test ah, 1
je 0x4aacfb
fld st(0)
fld dword [0x5565c4]
fcomp st(1)
fnstsw ax
test ah, 0x41
fstp st(0)
jne 0x4aacfb
fstp st(0)
fld dword [0x5565c4]
jmp 0x4aad10
fcom dword [0x574bd8]
fnstsw ax
test ah, 1
jne 0x4aad10
fstp st(0)
fld dword [0x574bd8]
call sub.MSVCRT.dll__ftol
mov word [ebx], ax
inc edi
add ebx, 2
cmp edi, 0x10000
mov dword [esp + 0x10], edi
jl 0x4aaca9
xor edi, edi
cmp word [esi + 0x65fc], di
jbe 0x4ab1d6
mov ecx, ebp
and ecx, 1
mov dword [esp + 0x2c], ecx
mov eax, dword [esi + 0x6238]
xor edx, edx
imul eax, ecx
mov dx, word [esi + 0x65fe]
cmp eax, edx
jae 0x4aadbf
mov edx, edi
and edx, 7
shl edx, 1
xor ecx, ecx
mov ebx, edi
mov cx, word [esi + 0x6604]
xor ebp, ebp
mov bp, word [esi + 0x6608]
shr ebx, cl
imul ebx, ebp
mov ebp, eax
shr ebp, cl
mov ecx, eax
and ecx, 1
add ecx, edx
add ebx, ebp
mov ebp, dword [esi + 0x657c]
shl ecx, 1
shr ebp, cl
and ebp, 3
lea ecx, [ebp + ebx*4]
mov ebx, dword [esi + 0x6628]
lea ecx, [ebx + ecx*2]
xor ebx, ebx
inc eax
mov bx, word [ecx]
mov bx, word [esp + ebx*2 + 0x90]
mov word [ecx], bx
xor ecx, ecx
mov cx, word [esi + 0x65fe]
cmp eax, ecx
jb 0x4aad5d
mov ecx, dword [esp + 0x2c]
xor edx, edx
inc edi
mov dx, word [esi + 0x65fc]
cmp edi, edx
jb 0x4aad40
jmp 0x4ab1d6
cmp ebp, 0x400
jne 0x4ab14e
sub ebx, 8
js 0x4ab1d6
lea eax, [ebx + 8]
shr eax, 3
mov dword [esp + 0x2c], eax
push esi
call fcn.004a68b0
mov bx, ax
xor eax, eax
mov ax, word [esi + 0x6602]
and ebx, 0xffff
push esi
sub ebx, eax
call fcn.004a68b0
mov bp, ax
xor ecx, ecx
mov cx, word [esi + 0x6600]
and ebp, 0xffff
push esi
sub ebp, ecx
call fcn.004a68b0
mov di, ax
push esi
and edi, 0xffff
call fcn.004a68b0
xor edx, edx
add esp, 0x10
mov dx, word [esi + 0x65fe]
cmp ebx, edx
jae 0x4ab13a
cmp edi, 0x83
jne 0x4ab065
xor ebp, ebp
cmp word [esi + 0x65fc], bp
jbe 0x4ab13a
mov eax, ebx
and eax, 1
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 0x38]
mov eax, ebp
mov edx, dword [esi + 0x657c]
and eax, 7
mov dword [esp + 0x10], 0
lea edi, [ecx + eax*2]
shl edi, 1
mov ecx, edi
mov dword [esp + 0x28], edi
shr edx, cl
and edx, 3
cmp dl, 1
jne 0x4aaf99
lea eax, [esp + 0x68]
mov edi, 0x571e88
mov dword [esp + 0x1c], eax
movsx ecx, byte [edi + 1]
movsx edx, byte [edi]
add ecx, ebx
add edx, ebp
push ecx
push edx
push esi
call fcn.004aa610
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x1c]
add edi, 2
add esp, 0xc
mov dword [ecx], eax
add edx, eax
add ecx, 4
cmp edi, 0x571e90
mov dword [esp + 0x10], edx
mov dword [esp + 0x1c], ecx
jl 0x4aaeb3
xor ecx, ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], ecx
mov edx, dword [esp + 0x10]
lea edi, [ecx*4]
mov eax, dword [esp + edi + 0x68]
shl eax, 2
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x1c]
mov dword [esp + edi + 0x80], eax
cmp dword [esp + edx + 0x80], eax
jge 0x4aaf2a
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], edi
inc ecx
cmp ecx, 4
jl 0x4aaef5
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x10]
xor edi, edi
mov edx, dword [esp + ecx*4 + 0x68]
mov di, word [esi + 0x6604]
sub eax, edx
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fmul qword [0x574bd0]
fadd qword [0x5565b8]
call sub.MSVCRT.dll__ftol
mov edx, ebp
mov ecx, edi
shr edx, cl
xor ecx, ecx
mov cx, word [esi + 0x6608]
imul edx, ecx
mov dword [esp + 0x20], edx
mov edx, ebx
mov ecx, edi
mov edi, dword [esp + 0x20]
shr edx, cl
mov ecx, dword [esp + 0x28]
add edi, edx
mov edx, dword [esi + 0x657c]
shr edx, cl
and edx, 3
lea ecx, [edx + edi*4]
jmp 0x4ab044
mov edi, 0x571e98
movsx eax, byte [edi + 1]
movsx ecx, byte [edi]
add eax, ebx
add ecx, ebp
push eax
push ecx
push esi
call fcn.004aa610
mov edx, dword [esp + 0x1c]
add edi, 2
add esp, 0xc
add edx, eax
cmp edi, 0x571ea0
mov dword [esp + 0x10], edx
jl 0x4aaf9e
lea edx, [ebx - 2]
xor eax, eax
mov ax, word [esi + 0x6604]
push edx
push ebp
push esi
mov dword [esp + 0x28], eax
call fcn.004aa610
mov edi, eax
lea eax, [ebx + 2]
push eax
push ebp
push esi
call fcn.004aa610
add edi, eax
add esp, 0x18
mov dword [esp + 0x20], edi
fild dword [esp + 0x20]
fmul qword [0x574bc8]
fild dword [esp + 0x10]
fmul qword [0x574bc0]
faddp st(1)
fadd qword [0x5565b8]
call sub.MSVCRT.dll__ftol
mov ecx, dword [esp + 0x1c]
mov edx, ebp
shr edx, cl
xor edi, edi
mov di, word [esi + 0x6608]
imul edx, edi
mov edi, ebx
shr edi, cl
mov ecx, dword [esp + 0x28]
add edx, edi
mov edi, dword [esi + 0x657c]
shr edi, cl
and edi, 3
lea ecx, [edi + edx*4]
mov edx, dword [esi + 0x6628]
inc ebp
mov word [edx + ecx*2], ax
xor eax, eax
mov ax, word [esi + 0x65fc]
cmp ebp, eax
jb 0x4aae76
jmp 0x4ab13a
cmp edi, 0x81
jne 0x4ab13a
xor ecx, ecx
mov cx, word [esi + 0x65fc]
cmp ebp, ecx
jae 0x4ab13a
mov edx, ebp
mov eax, ebx
and edx, 7
and eax, 1
mov dword [esp + 0x10], 0
lea edi, [eax + edx*2]
mov eax, dword [esi + 0x657c]
shl edi, 1
mov ecx, edi
mov dword [esp + 0x28], edi
shr eax, cl
and eax, 3
dec al
neg al
sbb eax, eax
neg eax
shl eax, 2
lea ecx, [eax + 8]
cmp eax, ecx
jge 0x4ab0fb
sub ecx, eax
lea edi, [eax*2 + 0x571e88]
mov dword [esp + 0x20], ecx
movsx ecx, byte [edi + 1]
movsx edx, byte [edi]
add ecx, ebx
add edx, ebp
push ecx
push edx
push esi
call fcn.004aa610
mov edx, dword [esp + 0x1c]
add esp, 0xc
add edx, eax
mov eax, dword [esp + 0x20]
add edi, 2
dec eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x20], eax
jne 0x4ab0c9
mov edi, dword [esp + 0x28]
xor ecx, ecx
xor edx, edx
mov cx, word [esi + 0x6604]
mov dx, word [esi + 0x6608]
shr ebp, cl
mov eax, dword [esp + 0x10]
shr ebx, cl
mov ecx, edi
add eax, 4
imul ebp, edx
mov edx, dword [esi + 0x657c]
add ebp, ebx
shr edx, cl
sar eax, 3
and edx, 3
lea ecx, [edx + ebp*4]
mov edx, dword [esi + 0x6628]
mov word [edx + ecx*2], ax
mov eax, dword [esp + 0x2c]
dec eax
mov dword [esp + 0x2c], eax
jne 0x4aadf5
jmp 0x4ab1d6
cmp ebp, 0x401
jne 0x4ab15c
push 2
push 1
jmp 0x4ab1cd
cmp ebp, 0x416
je 0x4ab1c9
cmp ebp, 0x410
je 0x4ab1c9
cmp ebp, 0x40b
jne 0x4ab178
push 4
jmp 0x4ab1cb
cmp ebp, 0x412
jne 0x4ab1d6
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push 1
push 0x24
push ecx
call dword [eax + 8]
push esi
call fcn.004a68b0
mov ebp, dword [esi + 0x623c]
and eax, 0xffff
mov ecx, dword [esp + 0x44]
sub eax, ebp
cdq
xor eax, edx
add esp, 0x10
sub eax, edx
cmp ecx, eax
jle 0x4ab1d6
mov edx, dword [esi]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 4]
push eax
call dword [edx + 0x18]
add esp, 4
sub eax, 0x26
mov dword [esp + 0x18], eax
jmp 0x4ab1d6
push 2
push 0
push esi
call fcn.004aa690
add esp, 0xc
mov edx, dword [esp + 0x14]
mov eax, dword [esi + 4]
mov ecx, dword [esi]
push 0
push edx
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x3c]
add esp, 0xc
dec eax
mov dword [esp + 0x30], eax
jne 0x4aab7f
mov eax, dword [esp + 0x18]
test eax, eax
je 0x4ab555
mov edx, dword [esi + 4]
mov ecx, dword [esi]
push 0
push eax
push edx
call dword [ecx + 8]
add esp, 0xc
lea edi, [esp + 0x44]
mov ebx, 9
push esi
call fcn.004a6950
and eax, 0x7fff
add esp, 4
mov dword [edi], eax
add edi, 4
dec ebx
jne 0x4ab21c
mov ebp, dword [esp + 0x54]
mov edi, dword [esp + 0x50]
mov ebx, dword [esp + 0x48]
imul ebp, dword [esp + 0x4c]
imul edi, ebx
push 6
lea eax, [edi + ebp]
push eax
call dword [sym.imp.MSVCRT.dll_calloc]
push str.phase_one_correct__
push eax
push esi
mov dword [esp + 0x34], eax
call fcn.004a6780
mov ecx, dword [esp + 0x34]
push esi
lea eax, [ecx + edi*4]
mov dword [esp + 0x3c], eax
lea ebp, [eax + ebp*4]
mov dword [esp + 0x54], ebp
lea edx, [ebp + edi*2]
mov dword [esp + 0x58], edx
call fcn.004a68b0
add esp, 0x18
xor ebp, ebp
mov eax, dword [esp + ebp + 0x50]
imul eax, dword [esp + ebp + 0x48]
test eax, eax
jle 0x4ab2b7
mov edi, dword [esp + ebp + 0x20]
mov dword [esp + 0x18], eax
push 0xb
push esi
call fcn.004a69d0
fstp dword [edi]
mov eax, dword [esp + 0x20]
add esp, 8
add edi, 4
dec eax
mov dword [esp + 0x18], eax
jne 0x4ab29c
add ebp, 4
cmp ebp, 8
jl 0x4ab287
xor ebp, ebp
mov eax, dword [esp + ebp + 0x50]
imul eax, dword [esp + ebp + 0x48]
test eax, eax
jle 0x4ab2f0
mov edi, dword [esp + ebp + 0x3c]
mov dword [esp + 0x18], eax
push esi
call fcn.004a68b0
mov word [edi], ax
mov eax, dword [esp + 0x1c]
add esp, 4
add edi, 2
dec eax
mov dword [esp + 0x18], eax
jne 0x4ab2d6
add ebp, 4
cmp ebp, 8
jl 0x4ab2c1
cmp word [esi + 0x65fc], 0
mov dword [esp + 0x10], 0
jbe 0x4ab547
cmp word [esi + 0x65fe], 0
mov dword [esp + 0x1c], 0
jbe 0x4ab52d
mov eax, dword [esp + 0x10]
fild dword [esp + 0x50]
and eax, 7
shl eax, 1
mov dword [esp + 0x38], eax
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x7c], 0
mov dword [esp + 0x78], edi
xor eax, eax
fild qword [esp + 0x78]
mov ax, word [esi + 0x65fa]
mov dword [esp + 0x14], eax
fmul st(1)
fidiv dword [esp + 0x14]
fld st(0)
call sub.MSVCRT.dll__ftol
mov edx, dword [esp + 0x10]
xor ecx, ecx
mov cx, word [esi + 0x6604]
xor ebp, ebp
mov bp, word [esi + 0x6608]
mov dword [esp + 0x14], eax
shr edx, cl
fisub dword [esp + 0x14]
imul edx, ebp
mov ebp, edi
shr ebp, cl
mov ecx, edi
mov edi, dword [esi + 0x657c]
and ecx, 1
add edx, ebp
mov ebp, dword [esp + 0x38]
add ecx, ebp
shl ecx, 1
shr edi, cl
and edi, 3
lea ecx, [edi + edx*4]
mov edx, dword [esi + 0x6628]
lea ecx, [edx + ecx*2]
xor edx, edx
mov dword [esp + 0x2c], ecx
mov dx, word [ecx]
mov dword [esp + 0x14], edx
lea edx, [eax + 2]
fild dword [esp + 0x14]
cmp eax, edx
fmul qword [0x5565b8]
jge 0x4ab4ac
mov ecx, eax
lea edi, [eax*4]
imul ecx, ebx
mov dword [esp + 0x34], edi
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x3c]
mov ebp, ecx
sub edx, eax
lea ecx, [edi + ecx*2]
mov dword [esp + 0x30], edx
mov dword [esp + 0x28], ecx
xor edx, edx
xor ecx, ecx
test ebx, ebx
jle 0x4ab457
mov edi, dword [esp + 0x28]
xor eax, eax
lea ecx, [edx + ebp]
mov ax, word [edi]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fld st(1)
fcompp
fnstsw ax
test ah, 1
jne 0x4ab428
inc edx
add edi, 2
cmp edx, ebx
jl 0x4ab405
test edx, edx
je 0x4ab457
cmp edx, ebx
je 0x4ab457
mov edx, dword [esp + 0x3c]
xor eax, eax
xor edi, edi
mov ax, word [edx + ecx*2]
mov di, word [edx + ecx*2 - 2]
mov dword [esp + 0x14], eax
sub eax, edi
fild dword [esp + 0x14]
mov dword [esp + 0x14], eax
fsub st(1)
fidiv dword [esp + 0x14]
jmp 0x4ab45d
fld dword [0x5565c4]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x34]
fld dword [0x5565d0]
mov eax, edx
add edx, 4
fsub st(1)
sub eax, edi
mov edi, dword [esp + 0x20]
add ebp, ebx
mov dword [esp + 0x18], edx
fmul dword [edi + ecx*4]
fxch st(1)
fmul dword [edi + ecx*4 - 4]
mov ecx, dword [esp + 0x28]
faddp st(1)
fstp dword [esp + eax + 0x80]
lea eax, [ebx + ebx]
add ecx, eax
mov eax, dword [esp + 0x30]
dec eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], eax
jne 0x4ab3f9
fld dword [0x5565d0]
fsub st(2)
mov edx, dword [esp + 0x10]
xor ecx, ecx
mov cx, word [esi + 0x6600]
mov dword [esp + 0x6c], 0
fmul dword [esp + 0x80]
fld dword [esp + 0x84]
fmul st(3)
add ecx, edx
mov dword [esp + 0x68], ecx
faddp st(1)
fimul dword [esp + 0x68]
fadd st(1)
fadd st(0), st(0)
call sub.MSVCRT.dll__ftol
fstp st(0)
cmp eax, 0xffff
fstp st(0)
jge 0x4ab505
xor edx, edx
test eax, eax
setl dl
dec edx
and eax, edx
jmp 0x4ab50a
mov eax, 0xffff
mov ecx, dword [esp + 0x2c]
xor edx, edx
mov word [ecx], ax
mov eax, dword [esp + 0x1c]
mov dx, word [esi + 0x65fe]
inc eax
cmp eax, edx
mov dword [esp + 0x1c], eax
jb 0x4ab335
fstp st(0)
mov eax, dword [esp + 0x10]
xor ecx, ecx
mov cx, word [esi + 0x65fc]
inc eax
cmp eax, ecx
mov dword [esp + 0x10], eax
jb 0x4ab30e
mov edx, dword [esp + 0x20]
push edx
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20080
ret