Function at 0x40a2a0
Capabilities:
Enumerate pe sections
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x164
mov eax, dword [0x6202d8]
push ebx
push esi
push edi
test eax, eax
jne 0x40a345
mov eax, dword [ebp + 0x20]
mov edx, dword [ebp + 0x18]
xor esi, esi
mov ecx, eax
test ax, ax
je 0x40a2f0
mov edi, eax
and edi, 0xffff
cmp byte [edi + edx + 1], 0x20
jne 0x40a2e3
test esi, esi
jne 0x40a2f0
mov esi, 1
add eax, 0xffff
test ax, ax
mov dword [ebp + 0x20], eax
jne 0x40a2cb
mov edi, dword [ebp + 0x24]
mov esi, eax
and esi, 0xffff
sub ecx, eax
add edx, esi
mov esi, dword [ebp + 0x1c]
sub esi, eax
sub edi, eax
mov dword [ebp + 0x20], ecx
mov eax, edi
mov ecx, esi
mov dword [ebp + 0x18], edx
and eax, 0xffff
and ecx, 0xffff
xor edx, edx
cmp ecx, eax
mov dword [ebp + 0x24], edi
jle 0x40a348
mov edi, dword [ebp + 0x18]
lea edi, [eax + edi + 1]
cmp byte [edi + edx], 0x20
je 0x40a33d
add eax, 2
add edx, 2
cmp ecx, eax
jg 0x40a32b
jmp 0x40a348
mov eax, dword [ebp + 0x24]
lea esi, [edx + eax]
jmp 0x40a348
mov esi, dword [ebp + 0x1c]
mov eax, dword [0x64a0a8]
test eax, eax
mov eax, dword [0x649830]
jne 0x40a35b
mov eax, 0x96
mov ebx, dword [ebp + 0x34]
mov ecx, dword [0x64ac60]
push ebx
push eax
push ecx
call fcn.004021e0
add esp, 8
push eax
call fcn.004021e0
mov dword [esp + 0xa0], eax
mov eax, dword [0x64a0a8]
add esp, 8
test eax, eax
je 0x40a39a
movsx eax, word [0x649832]
movsx edx, word [0x649830]
add eax, edx
jmp 0x40a39f
mov eax, 0x96
push ebx
push eax
mov eax, dword [0x64ac60]
push eax
call fcn.004021e0
add esp, 8
push eax
call fcn.004021e0
mov ecx, dword [ebp + 0x2c]
add esp, 8
test cx, cx
mov dword [esp + 0xb8], eax
je 0x40a3f3
mov eax, dword [ebp + 0x28]
and ecx, 0xffff
cdq
idiv ecx
mov edx, dword [esp + 0x98]
mov ecx, dword [esp + 0xb8]
add edx, eax
add ecx, eax
mov dword [esp + 0x98], edx
mov dword [esp + 0xb8], ecx
mov ecx, dword [ebp + 0x30]
imul ecx, dword [0x4e51a0]
add esi, ecx
and esi, 0xffff
lea eax, [esi + esi]
lea edi, [eax + eax]
push edi
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
push edi
mov dword [esp + 0x90], eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov edi, eax
mov ax, word [0x626a6c]
add esp, 8
cmp ax, 0x7f85
mov dword [esp + 0x4c], edi
je 0x40a461
cmp ax, 0x7f8b
je 0x40a461
cmp ax, 0x7f89
je 0x40a461
cmp ax, 0x7f8c
je 0x40a461
mov edx, dword [esp + 0x88]
lea eax, [esi + esi]
push edx
push edi
push eax
mov eax, dword [ebp + 0x18]
push esi
push eax
call fcn.00415880
add esp, 0x14
jmp 0x40a483
mov ecx, dword [esp + 0x88]
mov dx, word [0x6202dc]
push ecx
push edx
lea eax, [esi + esi]
push edi
push eax
mov eax, dword [ebp + 0x18]
push esi
push eax
call fcn.00413c50
add esp, 0x18
mov esi, eax
mov dword [esp + 0xa4], esi
lea ecx, [esi + esi]
push ecx
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov edx, dword [0x626a74]
mov dword [esp + 0x98], eax
push eax
mov eax, dword [edx + 0x12]
push eax
push esi
push edi
call fcn.0040a150
mov cx, word [0x64b0b0]
mov edi, dword [ebp + 8]
add esp, 0x14
push ebx
push ecx
push 1
push 0xb3
push 0xe4
push edi
call fcn.00409060
add esp, 0x10
push eax
call fcn.004017f0
add esp, 8
push eax
call fcn.004021e0
mov dx, word [0x64b0b0]
mov dword [esp + 0xcc], eax
mov eax, dword [0x64ac60]
push edx
push eax
mov dword [esp + 0x6c], 0
call fcn.004017f0
mov dword [esp + 0xb0], eax
mov eax, dword [ebp + 0x10]
fild dword [esp + 0xb0]
mov ecx, dword [0x64b074]
mov dword [esp + 0x9c], eax
add ecx, eax
mov dword [esp + 0xac], eax
fmul qword [0x4dc2d0]
fidiv dword [0x655b1c]
mov dword [0x64b074], ecx
mov edx, dword [edi + 0x10]
lea ecx, [esp + 0x5a]
push ecx
push 0
push 0
push 1
push edx
fstp qword [esp + 0xd4]
call fcn.00405870
mov eax, dword [0x64ac60]
mov byte [0x4e5177], 2
cdq
idiv dword [edi + 0x264]
mov cl, byte [0x6498a2]
add esp, 0x24
and cl, 1
mov dword [esp + 0x64], 0xffff
mov byte [0x4e5174], cl
mov dword [esp + 0xa0], 0
neg eax
mov dword [0x4e5160], eax
mov eax, dword [0x64a0ac]
and eax, 0xffff
mov dword [0x4e5170], eax
mov ecx, dword [edi + 0x240]
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp word [ebp + 0x20], 0
mov dword [0x4e5168], edx
je 0x40a5ff
mov eax, esi
lea ecx, [ebp + 0x20]
cdq
sub eax, edx
mov edx, dword [esp + 0x88]
push 1
push ecx
sar eax, 1
push 2
push eax
push edx
call fcn.004124a0
mov cx, ax
add esp, 0x14
and ecx, 0x7fff
shl ecx, 1
mov dword [esp + 0xc0], ecx
xor eax, eax
jmp 0x40a60a
xor eax, eax
xor ecx, ecx
mov dword [esp + 0xc0], ecx
cmp esi, eax
mov dword [esp + 0xbc], eax
mov word [0x651900], ax
mov word [0x651902], ax
mov dword [esp + 0x2c], eax
jle 0x40c2de
jmp 0x40a632
mov ecx, dword [esp + 0xc0]
mov esi, dword [esp + 0x2c]
mov eax, esi
cdq
sub eax, edx
mov edx, dword [esp + 0x88]
sar eax, 1
shl eax, 1
mov dword [esp + 0xc8], eax
mov ax, word [eax + edx]
cmp ax, word [ebp + 0x24]
ja 0x40c2de
cmp esi, ecx
jne 0x40a669
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0xa0], ecx
mov ecx, dword [esp + 0x4c]
mov dx, word [ecx + esi*2 + 2]
lea eax, [ecx + esi*2 + 2]
cmp dx, 0x20
mov dword [esp + 0x54], eax
jne 0x40a899
test esi, esi
mov dword [esp + 0x5c], 0
je 0x40a6a5
cmp word [ecx + esi*2 - 2], dx
jne 0x40a6a5
mov eax, dword [esp + 0xb8]
mov esi, 1
jmp 0x40a6ae
mov eax, dword [esp + 0x98]
xor esi, esi
mov dx, word [0x64b0b0]
push edx
push eax
call fcn.004017f0
add esp, 8
test esi, esi
je 0x40a6d4
mov ecx, 0xc0000001
mov dword [0x4e58c0], ecx
mov dword [0x4e58c4], ecx
mov ecx, dword [ebp + 0x10]
sub ecx, eax
test esi, esi
mov dword [ebp + 0x10], ecx
je 0x40a6e9
mov eax, ecx
mov dword [esp + 0x9c], eax
mov al, byte [ebp + 0xc]
test al, 1
je 0x40c2c4
test al, 8
je 0x40c2c4
mov esi, dword [ebp + 8]
push 0x1f
mov ecx, dword [esi + 0x10]
push ecx
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov edx, dword [esi + 0x10]
push 1
push edx
mov dword [esp + 0x20], eax
call dword [sym.imp.GDI32.dll_SetBkMode]
mov dword [esp + 0x10], eax
xor eax, eax
mov ecx, 8
lea edi, [esp + 0xf0]
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], eax
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], eax
mov byte [esp + 0xe8], al
mov byte [esp + 0xe9], al
mov byte [esp + 0xea], al
mov byte [esp + 0xec], al
mov byte [esp + 0xed], al
mov byte [esp + 0xee], al
mov byte [esp + 0xef], al
rep stosd dword es:[edi], eax
mov ecx, dword [0x64ac60]
mov eax, 0x55555555
imul ecx
sub edx, ecx
mov edi, 0x4e7024
sar edx, 1
mov ecx, edx
mov eax, edx
shr ecx, 0x1f
add eax, ecx
or ecx, 0xffffffff
cdq
idiv dword [esi + 0x264]
lea edx, [esp + 0xf0]
mov byte [esp + 0xeb], 2
mov dword [esp + 0xd4], eax
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0xd4]
push ecx
call dword [sym.imp.GDI32.dll_CreateFontIndirectA]
mov esi, dword [ebp + 8]
mov edi, dword [sym.imp.GDI32.dll_SelectObject]
push eax
mov edx, dword [esi + 0x10]
push edx
call edi
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x110]
push eax
push 1
push 0x4e7020
push ecx
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
mov ecx, dword [esi + 0x260]
mov edx, dword [ebp + 0x14]
imul ecx, dword [esp + 0x110]
mov ax, word [0x64b0b0]
push edx
mov edx, dword [esp + 0x9c]
push eax
add ecx, edx
push ecx
call fcn.004017f0
mov ecx, dword [ebp + 0x10]
add esp, 8
cdq
sub eax, edx
sar eax, 1
add eax, ecx
mov ecx, esi
push eax
call fcn.004ce760
mov edx, dword [esi + 0x10]
push 1
push 0x4e7020
push 0
push 0
push edx
call dword [sym.imp.GDI32.dll_TextOutA]
mov eax, dword [esp + 0x14]
mov ecx, dword [esi + 0x10]
push eax
push ecx
call edi
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov edx, dword [esp + 0x10]
mov eax, dword [esi + 0x10]
push edx
push eax
call dword [sym.imp.GDI32.dll_SetBkMode]
mov ecx, dword [esp + 0x18]
mov edx, dword [esi + 0x10]
push ecx
push edx
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov edi, esi
jmp 0x40c2c4
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x58], 0
mov si, word [ecx + eax*2]
mov eax, 0x4fef84
mov dword [esp + 0x14], esi
and esi, 0xffff
sub esi, 0x80
mov dword [esp + 0x7c], esi
mov ecx, dword [0x4fef8c]
cmp ecx, dword [eax]
je 0x40a8e3
mov ecx, dword [esp + 0x58]
add eax, 4
inc ecx
cmp eax, 0x4fef8c
mov dword [esp + 0x58], ecx
jl 0x40a8c6
mov ax, word [0x64b0b0]
mov ecx, dword [esp + 0x14]
push ebx
push eax
push 1
push edx
push ecx
push edi
call fcn.00409060
add esp, 0x10
push eax
call fcn.004017f0
add esp, 8
push eax
call fcn.004021e0
mov ecx, dword [esp + 0xd0]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x9c]
xor edx, edx
add esp, 8
mov dx, word [ecx + eax]
mov eax, dword [esp + 0x14]
imul edx, dword [esp + 0xc4]
add eax, edx
cmp esi, 0x6a
mov dword [esp + 0x3c], eax
jl 0x40bbc3
cmp esi, 0x70
jge 0x40bbc3
mov ecx, dword [esp + 0x54]
mov si, word [ecx]
mov ecx, dword [0x4fef8c]
sub si, 0x21
mov eax, esi
mov dword [esp + 0x14], esi
and eax, 0xffff
lea edx, [eax + eax*4]
lea eax, [eax + edx*2]
shl eax, 2
mov dword [esp + 0x28], eax
add eax, ecx
mov cx, word [eax + 2]
cmp cx, 3
je 0x40a988
test cx, cx
jne 0x40b257
xor edx, edx
mov ecx, 0xb
mov esi, eax
lea edi, [esp + 0x118]
mov word [0x651900], dx
mov word [0x651902], dx
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x11c]
mov esi, dword [esp + 0x58]
mov cx, word [0x64b0b0]
mov dword [esp + 0x5c], edx
mov edx, dword [0x64ac60]
lea eax, [edi + esi*2]
add esi, eax
mov eax, dword [esp + 0x11e]
shl esi, 8
push ecx
push edx
add esi, eax
call fcn.004017f0
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x12c]
add esp, 8
test eax, eax
mov eax, dword [esp + 0x3c]
jge 0x40a9f4
neg eax
mov ecx, dword [esp + 0x58]
and esi, 0xffff
fild dword [esp + 0x10]
shl esi, 4
mov dword [esp + 0x44], eax
lea ecx, [ecx + ecx*2]
fstp qword [esp + 0x30]
mov eax, esi
push ebx
shl ecx, 9
mov edx, dword [eax + 0x64b480]
mov dword [esp + 0x1c], eax
lea esi, [ecx + 0x631e78]
push edx
mov dword [esp + 0x8c], esi
call fcn.004021e0
mov dword [esp + 0x18], eax
xor eax, eax
fild dword [esp + 0x18]
mov ax, word [esi]
mov dword [esp + 0x18], eax
fmul qword [esp + 0x38]
fild dword [esp + 0x18]
fdivp st(1)
call fcn.004d7580
mov ecx, dword [esp + 0x4c]
push ebx
sub ecx, eax
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x24]
mov edx, dword [ecx + 0x64b478]
mov ecx, dword [0x4e5148]
sub edx, ecx
push edx
call fcn.004021e0
mov dword [esp + 0x20], eax
xor eax, eax
fild dword [esp + 0x20]
mov ax, word [esi]
mov dword [esp + 0x20], eax
fmul qword [esp + 0x40]
fild dword [esp + 0x20]
fdivp st(1)
call fcn.004d7580
mov ecx, dword [esp + 0x54]
and edi, 0xffff
sub ecx, eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x50], ecx
push ebx
lea eax, [eax + eax*2]
mov dword [esp + 0x64], eax
add edi, eax
mov eax, dword [esp + 0x132]
shl edi, 8
and eax, 0xffff
add edi, eax
shl edi, 2
movsx ecx, word [edi + 0x624c34]
push ecx
call fcn.004021e0
mov dword [esp + 0x28], eax
xor edx, edx
fild dword [esp + 0x28]
mov dx, word [esi]
mov dword [esp + 0x28], edx
fmul qword [esp + 0x48]
fild dword [esp + 0x28]
fdivp st(1)
call fcn.004d7580
mov ecx, dword [esp + 0x5c]
mov edx, dword [0x4e5148]
sub ecx, eax
push ebx
movsx eax, word [edi + 0x624c36]
sub eax, edx
mov dword [esp + 0x88], ecx
push eax
call fcn.004021e0
mov dword [esp + 0x30], eax
xor ecx, ecx
fild dword [esp + 0x30]
mov cx, word [esi]
add esp, 0x20
mov dword [esp + 0x10], ecx
fmul qword [esp + 0x30]
fild dword [esp + 0x10]
fdivp st(1)
call fcn.004d7580
neg eax
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x12e]
cmp ax, 0x3a
je 0x40ad02
and eax, 0xffff
mov edx, dword [esp + 0x50]
push ebx
lea ecx, [eax + eax*2]
xor eax, eax
shl ecx, 1
mov ax, word [ecx + 0x5012a8]
add eax, edx
xor edx, edx
mov dx, word [ecx + 0x5012aa]
shl eax, 8
add eax, edx
mov edi, eax
mov dword [esp + 0x24], eax
shl edi, 4
mov edx, dword [edi + 0x64b480]
push edx
call fcn.004021e0
add eax, dword [esp + 0x138]
mov dword [esp + 0x18], eax
xor eax, eax
fild dword [esp + 0x18]
mov ax, word [esi]
mov dword [esp + 0x18], eax
fmul qword [esp + 0x38]
fild dword [esp + 0x18]
fdivp st(1)
call fcn.004d7580
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x88]
sub ecx, eax
push ecx
push edx
call fcn.00412540
mov edx, dword [0x4e5148]
mov dword [esp + 0x90], eax
mov eax, dword [edi + 0x64b478]
push ebx
sub eax, edx
push eax
call fcn.004021e0
mov edi, dword [esp + 0x148]
xor ecx, ecx
mov cx, word [esi]
add eax, edi
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
mov dword [esp + 0x28], ecx
fmul qword [esp + 0x48]
fild dword [esp + 0x28]
fdivp st(1)
call fcn.004d7580
mov edx, dword [esp + 0x5c]
sub edx, eax
mov eax, dword [esp + 0x58]
push edx
push eax
call fcn.00412550
fild dword [esp + 0x154]
fld qword [0x4dc2c8]
fptan
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x60], eax
push ebx
movsx edx, word [ecx*4 + 0x624c34]
mov dword [esp + 0x34], edx
fstp st(0)
fdivp st(1)
fstp qword [esp + 0x3c]
fild dword [esp + 0x34]
fsub qword [esp + 0x3c]
call fcn.004d7580
push eax
call fcn.004021e0
add eax, edi
mov dword [esp + 0x38], eax
fild dword [esp + 0x38]
fmul qword [esp + 0x58]
xor eax, eax
mov ax, word [esi]
mov dword [esp + 0x38], eax
fild dword [esp + 0x38]
fdivp st(1)
call fcn.004d7580
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x94]
sub ecx, eax
push ecx
push edx
call fcn.00412540
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x50]
push ebx
movsx ecx, word [eax*4 + 0x624c36]
mov dword [esp + 0x44], ecx
fild dword [esp + 0x44]
fsub qword [esp + 0x4c]
fisub dword [0x4e5148]
call fcn.004d7580
push eax
call fcn.004021e0
add eax, edi
xor edx, edx
mov dx, word [esi]
mov dword [esp + 0x48], eax
fild dword [esp + 0x48]
mov dword [esp + 0x48], edx
fmul qword [esp + 0x68]
fild dword [esp + 0x48]
fdivp st(1)
call fcn.004d7580
neg eax
push eax
mov eax, dword [esp + 0xb0]
push eax
call fcn.00412550
add esp, 0x40
mov dword [esp + 0x74], eax
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x20], 0
lea eax, [ecx + 2]
mov ecx, dword [esp + 0xa4]
cmp eax, ecx
mov dword [esp + 0x24], eax
jge 0x40ae2f
mov edx, dword [esp + 0x4c]
mov ecx, dword [0x4fef8c]
lea edi, [edx + eax*2 + 2]
mov esi, dword [esp + 0x28]
mov dx, word [edi]
cmp word [esi + ecx + 2], 0
lea eax, [edx - 0x21]
je 0x40ae09
mov esi, dword [esp + 0x20]
test esi, esi
jne 0x40ae09
cmp dx, 0x20
je 0x40ae2f
and eax, 0xffff
lea edx, [eax + eax*4]
lea eax, [eax + edx*2]
shl eax, 2
cmp word [eax + ecx + 2], 3
je 0x40ae2f
lea esi, [eax + ecx]
mov ax, word [0x64b0b0]
mov ecx, dword [0x64ac60]
push eax
push ecx
call fcn.004017f0
mov ecx, dword [esp + 0x58]
xor edx, edx
mov dx, word [esi + 4]
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
add edx, ecx
xor eax, eax
shl edx, 9
fimul dword [esi + 8]
mov ax, word [edx + 0x631e78]
add esp, 8
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fdivp st(1)
call fcn.004d7580
mov ecx, dword [esp + 0x5c]
mov si, word [esi + 2]
add ecx, eax
cmp si, 1
mov dword [esp + 0x5c], ecx
je 0x40addc
test si, si
jne 0x40ade4
mov dword [esp + 0x20], 1
mov ecx, dword [0x4fef8c]
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0xa4]
add eax, 2
add edi, 4
cmp eax, edx
mov dword [esp + 0x24], eax
jl 0x40ad32
jmp 0x40ae2f
cmp dx, 0x20
je 0x40ae24
and eax, 0xffff
lea edx, [eax + eax*4]
lea eax, [eax + edx*2]
cmp word [ecx + eax*4 + 2], 4
jne 0x40ae24
jmp 0x40adea
mov ecx, dword [esp + 0x24]
add ecx, 0xfffffffe
mov dword [esp + 0x64], ecx
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x5c]
cmp eax, ecx
mov dword [esp + 0x68], edx
mov dword [esp + 0x60], 0
mov dword [esp + 0x28], eax
jge 0x40b209
mov eax, dword [esp + 0x54]
mov dword [esp + 0x20], eax
mov esi, dword [esp + 0x20]
mov cx, word [0x64b0b0]
push ebx
push ecx
mov dx, word [esi]
mov ax, word [esi - 2]
mov ecx, dword [ebp + 8]
push 1
push edx
push eax
push ecx
call fcn.00409060
add esp, 0x10
push eax
call fcn.004017f0
add esp, 8
push eax
call fcn.004021e0
mov dword [esp + 0x98], eax
mov ax, word [esi]
sub ax, 0x21
mov ecx, dword [0x4fef8c]
mov dword [esp + 0x18], eax
and eax, 0xffff
lea edx, [eax + eax*4]
lea eax, [eax + edx*2]
xor edx, edx
mov dx, word [ecx + eax*4 + 4]
lea esi, [ecx + eax*4]
mov eax, dword [esp + 0x58]
mov cx, word [0x64b0b0]
mov dword [esp + 0x20], esi
lea edi, [edx + eax]
mov edx, dword [0x64ac60]
push ecx
push edx
mov dword [esp + 0xb8], edi
call fcn.004017f0
mov dword [esp + 0x40], eax
xor eax, eax
fild dword [esp + 0x40]
shl edi, 9
add esp, 0x10
fimul dword [esi + 8]
mov ax, word [edi + 0x631e78]
mov dword [esp + 0x30], eax
fild dword [esp + 0x30]
fdivp st(1)
call fcn.004d7580
mov ecx, dword [esp + 0x68]
lea edi, [esp + 0x144]
sub ecx, eax
mov dword [esp + 0x68], ecx
mov ecx, 0xb
rep movsd dword es:[edi], dword [esi]
cmp word [esp + 0x15a], 0x3a
mov edi, dword [esp + 0x90]
je 0x40b177
cmp word [esp + 0x146], 4
jne 0x40b177
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
cmp ecx, eax
je 0x40b177
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0xa8]
xor ecx, ecx
mov cx, word [edx + 6]
shl eax, 8
add eax, ecx
mov ecx, dword [0x64ac60]
shl eax, 2
mov esi, eax
mov ax, word [0x64b0b0]
push eax
push ecx
call fcn.004017f0
movsx edx, word [esi + 0x624c34]
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
mov dword [esp + 0x20], edx
xor eax, eax
fild dword [esp + 0x20]
mov ax, word [ecx]
mov dword [esp + 0x20], eax
fmulp st(1)
fild dword [esp + 0x20]
fdivp st(1)
call fcn.004d7580
mov dx, word [0x64b0b0]
mov dword [esp + 0xb0], eax
mov eax, dword [0x64ac60]
push edx
push eax
call fcn.004017f0
movsx ecx, word [esi + 0x624c36]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x94]
fild dword [esp + 0x28]
mov dword [esp + 0x28], ecx
xor edx, edx
fild dword [esp + 0x28]
mov dx, word [eax]
add esp, 0x10
mov dword [esp + 0x18], edx
fmulp st(1)
fild dword [esp + 0x18]
fdivp st(1)
call fcn.004d7580
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x2c]
lea esi, [ecx - 2]
cmp esi, eax
jl 0x40b209
mov edx, dword [esp + 0x20]
lea ecx, [edx - 4]
xor eax, eax
mov ax, word [ecx]
lea edx, [eax + eax*4]
lea eax, [eax + edx*2]
mov edx, dword [0x4fef8c]
cmp word [edx + eax*4 - 0x5aa], 4
jne 0x40b058
mov eax, dword [esp + 0x2c]
sub esi, 2
sub ecx, 4
cmp esi, eax
jl 0x40b209
jmp 0x40b028
cmp esi, dword [esp + 0x2c]
jl 0x40b209
mov ax, word [0x64b0b0]
push eax
mov eax, dword [esp + 0x50]
push 1
mov cx, word [eax + esi*2 + 2]
mov dx, word [eax + esi*2]
mov eax, dword [ebp + 8]
push ecx
push edx
push eax
call fcn.00409060
add esp, 0x10
push eax
call fcn.004017f0
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x20], eax
xor eax, eax
add esp, 8
mov ax, word [ecx + esi*2 + 2]
lea edx, [eax + eax*4]
lea ecx, [eax + edx*2]
mov edx, dword [0x4fef8c]
xor eax, eax
mov ax, word [edx + ecx*4 - 0x582]
sub eax, 0
je 0x40b111
dec eax
je 0x40b0d9
dec eax
jne 0x40b126
mov eax, dword [esp + 0xa8]
mov edx, dword [esp + 0x30]
sub eax, edx
push ebx
push eax
call fcn.0040c350
add esp, 4
push eax
jmp 0x40b117
mov eax, dword [esp + 0xa8]
mov edx, dword [esp + 0x30]
sub eax, edx
push ebx
push eax
call fcn.0040c350
add esp, 4
push eax
call fcn.004021e0
cdq
sub eax, edx
push ebx
mov esi, eax
mov eax, dword [esp + 0x24]
push eax
sar esi, 1
call fcn.004021e0
mov edi, eax
add esp, 0x10
sub edi, esi
jmp 0x40b126
mov ecx, dword [esp + 0x18]
push ebx
push ecx
call fcn.004021e0
cdq
sub eax, edx
add esp, 8
mov edi, eax
sar edi, 1
mov edx, dword [esp + 0x60]
push ebx
lea eax, [edi + edx]
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
fdiv qword [esp + 0xb4]
fidiv dword [0x655b18]
call fcn.004d7580
push eax
call fcn.004017f0
fild dword [esp + 0x70]
mov esi, eax
fdiv qword [esp + 0xb8]
fidiv dword [0x655b1c]
call fcn.004d7580
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x68]
add edi, ecx
add edi, edx
jmp 0x40b1d2
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x90]
mov ecx, dword [eax + 0xc]
mov eax, dword [esp + 0x60]
test ecx, ecx
jge 0x40b191
add eax, edi
jmp 0x40b193
sub eax, edi
mov dword [esp + 0x60], eax
push ebx
fild dword [esp + 0x64]
fdiv qword [esp + 0xb4]
fidiv dword [0x655b18]
call fcn.004d7580
push eax
call fcn.004017f0
fild dword [esp + 0x70]
mov esi, eax
fdiv qword [esp + 0xb8]
fidiv dword [0x655b1c]
call fcn.004d7580
mov ecx, dword [esp + 0x68]
add edi, ecx
mov edx, dword [esp + 0x18]
neg edi
sbb edi, edi
inc edi
push edi
push eax
push esi
push edx
call fcn.00414b90
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
add eax, 2
add esp, 0x18
add edx, 4
cmp eax, ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], edx
jl 0x40ae5b
mov eax, dword [esp + 0x58]
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x54]
push eax
push esi
push edi
call fcn.00414da0
add esp, 0xc
test eax, eax
je 0x40b2b6
mov dx, word [edi]
lea eax, [edx - 0x21]
mov dword [esp + 0x14], eax
and eax, 0xffff
lea ecx, [eax + eax*4]
lea eax, [eax + ecx*2]
mov ecx, dword [0x4fef8c]
cmp word [ecx + eax*4 + 2], 3
jne 0x40ae2f
mov edi, dword [ebp + 8]
jmp 0x40a899
mov dx, word [0x64b0b0]
mov eax, dword [0x64ac60]
push edx
push eax
call fcn.004017f0
mov dword [esp + 0x1c], eax
mov eax, esi
fild dword [esp + 0x1c]
and eax, 0xffff
add esp, 8
lea ecx, [eax + eax*4]
lea edx, [eax + ecx*2]
mov ecx, dword [esp + 0x7c]
mov eax, dword [0x4fef8c]
add ecx, 0xffffff96
shl ecx, 9
fimul dword [eax + edx*4 + 8]
xor edx, edx
mov dx, word [ecx + 0x631e78]
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fdivp st(1)
call fcn.004d7580
sub dword [esp + 0x5c], eax
jmp 0x40b9b5
mov eax, dword [esp + 0x2c]
add eax, 2
cmp eax, esi
mov dword [esp + 0x24], eax
jge 0x40b634
mov ecx, dword [esp + 0x4c]
sub esi, eax
inc esi
shr esi, 1
lea edx, [ecx + eax*2 + 2]
mov ecx, dword [0x4fef8c]
lea eax, [eax + esi*2]
mov dword [esp + 0x20], edx
mov dword [esp + 0x10], esi
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x20]
mov ax, word [edx]
sub ax, 0x21
and eax, 0xffff
lea edx, [eax + eax*4]
lea esi, [eax + edx*2]
shl esi, 2
cmp word [esi + ecx + 0x16], 0x3a
je 0x40b318
cmp word [esi + ecx + 2], 4
je 0x40b61a
mov edi, dword [esp + 0x58]
mov edx, dword [0x64ac60]
lea eax, [esi + ecx]
mov cx, word [0x64b0b0]
push ecx
push edx
mov dword [esp + 0x38], eax
lea edi, [edi + edi*2]
call fcn.004017f0
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x38]
fild dword [esp + 0x20]
xor ecx, ecx
xor edx, edx
mov cx, word [eax + 4]
add esp, 8
fimul dword [eax + 8]
add ecx, edi
shl ecx, 9
mov dx, word [ecx + 0x631e78]
mov dword [esp + 0x18], edx
fild dword [esp + 0x18]
fdivp st(1)
call fcn.004d7580
mov dword [esp + 0x30], eax
mov ax, word [0x64b0b0]
push eax
mov eax, dword [esp + 0x24]
push ebx
push 1
mov cx, word [eax]
mov dx, word [eax - 2]
mov eax, dword [ebp + 8]
push ecx
push edx
push eax
call fcn.00409060
add esp, 0x10
push eax
call fcn.004021e0
add esp, 8
push eax
call fcn.004017f0
mov edx, dword [0x4fef8c]
add esp, 8
mov dword [esp + 0x64], eax
mov ecx, dword [esi + edx + 0xc]
test ecx, ecx
jge 0x40b3c0
neg eax
mov dword [esp + 0x64], eax
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x44]
add eax, ecx
xor ecx, ecx
mov cx, word [esi + edx + 6]
mov dword [esp + 0x44], eax
xor eax, eax
push ebx
mov ax, word [esi + edx + 4]
add eax, edi
mov esi, eax
shl eax, 8
shl esi, 8
add eax, ecx
add esi, ecx
mov ecx, dword [esp + 0x5c]
shl eax, 2
mov dword [esp + 0xac], eax
lea edx, [ecx + ecx*2]
movsx eax, word [eax + 0x624c34]
shl edx, 9
push eax
lea edi, [edx + 0x631e78]
call fcn.004021e0
mov cx, word [0x64b0b0]
mov edx, dword [0x64ac60]
mov dword [esp + 0x20], eax
push ecx
fild dword [esp + 0x24]
push edx
fstp qword [esp + 0xd8]
call fcn.004017f0
mov dword [esp + 0x28], eax
xor eax, eax
fild dword [esp + 0x28]
mov ax, word [edi]
mov dword [esp + 0x28], eax
fmul qword [esp + 0xd8]
fild dword [esp + 0x28]
fdivp st(1)
call fcn.004d7580
fild dword [esp + 0x40]
fld qword [0x4dc2c8]
fptan
mov ecx, dword [esp + 0x54]
sub ecx, eax
mov dword [esp + 0x38], ecx
fstp st(0)
fdivp st(1)
call fcn.004d7580
push ebx
push eax
mov dword [esp + 0x48], eax
call fcn.004021e0
mov ecx, dword [esp + 0x84]
add ecx, eax
push ecx
mov ecx, dword [esp + 0x44]
push ecx
call fcn.00412540
mov edx, dword [esp + 0xc8]
mov ecx, dword [0x4e5148]
mov dword [esp + 0x8c], eax
push ebx
movsx eax, word [edx + 0x624c36]
sub eax, ecx
push eax
call fcn.004021e0
mov cx, word [0x64b0b0]
mov edx, dword [0x64ac60]
mov dword [esp + 0x40], eax
push ecx
fild dword [esp + 0x44]
push edx
fstp qword [esp + 0xd8]
call fcn.004017f0
mov dword [esp + 0x48], eax
fild dword [esp + 0x48]
fmul qword [esp + 0xd8]
xor eax, eax
mov ax, word [edi]
mov dword [esp + 0x48], eax
fild dword [esp + 0x48]
fdivp st(1)
call fcn.004d7580
mov ecx, dword [esp + 0x60]
push ebx
neg eax
push ecx
mov dword [esp + 0x60], eax
call fcn.004021e0
mov edx, eax
mov eax, dword [esp + 0x9c]
sub edx, eax
mov eax, dword [esp + 0xac]
add eax, edx
push eax
mov eax, dword [esp + 0x64]
push eax
call fcn.00412550
and esi, 0xffff
add esp, 0x40
shl esi, 4
push ebx
mov dword [esp + 0x78], eax
mov ecx, dword [esi + 0x64b480]
push ecx
call fcn.004021e0
mov dx, word [0x64b0b0]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
mov eax, dword [0x64ac60]
push edx
push eax
fstp qword [esp + 0x40]
call fcn.004017f0
mov dword [esp + 0x28], eax
xor ecx, ecx
fild dword [esp + 0x28]
mov cx, word [edi]
mov dword [esp + 0x28], ecx
fmul qword [esp + 0x40]
fild dword [esp + 0x28]
fdivp st(1)
call fcn.004d7580
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x90]
sub ecx, eax
push edx
push ecx
call fcn.00412540
mov dword [esp + 0x98], eax
mov eax, dword [esi + 0x64b478]
mov esi, dword [0x4e5148]
push ebx
sub eax, esi
push eax
call fcn.004021e0
mov cx, word [0x64b0b0]
mov edx, dword [0x64ac60]
mov dword [esp + 0x38], eax
push ecx
fild dword [esp + 0x3c]
push edx
fstp qword [esp + 0x58]
call fcn.004017f0
mov dword [esp + 0x40], eax
xor eax, eax
fild dword [esp + 0x40]
mov ax, word [edi]
mov dword [esp + 0x40], eax
fmul qword [esp + 0x58]
fild dword [esp + 0x40]
fdivp st(1)
call fcn.004d7580
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x68]
sub ecx, eax
push edx
push ecx
call fcn.00412550
mov ecx, dword [0x4fef8c]
add esp, 0x30
mov dword [esp + 0x40], eax
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x10]
add edx, 4
dec eax
mov dword [esp + 0x20], edx
mov dword [esp + 0x10], eax
jne 0x40b2eb
mov eax, dword [esp + 0x24]
mov dword [esp + 0x24], 0
add eax, 0xfffffffe
cmp word [0x651900], 0
mov dword [esp + 0x64], eax
jbe 0x40b91a
fld qword [0x4dc2c8]
fptan
mov eax, dword [esp + 0x58]
mov dword [esp + 0x68], 0x651478
mov dword [esp + 0x28], 0x651674
lea edx, [eax + eax*2]
lea ecx, [eax + eax*2]
shl edx, 9
mov dword [esp + 0x50], ecx
lea eax, [edx + 0x631e78]
mov dword [esp + 0x84], eax
fstp st(0)
fstp qword [esp + 0x30]
mov esi, dword [esp + 0x28]
push ebx
mov ecx, dword [esi - 4]
imul ecx, dword [0x655b18]
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fmul qword [esp + 0xb4]
call fcn.004d7580
push eax
call fcn.004021e0
mov edx, dword [0x655b1c]
mov dword [esp + 0x28], eax
imul edx, dword [esi]
mov dword [esp + 0x18], edx
fild dword [esp + 0x18]
fmul qword [esp + 0xb8]
call fcn.004d7580
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x20], eax
xor eax, eax
mov edx, dword [esp + 0x58]
mov ax, word [ecx]
lea ecx, [eax + eax*2]
xor eax, eax
shl ecx, 1
mov ax, word [ecx + 0x5012a8]
add eax, edx
xor edx, edx
mov dx, word [ecx + 0x5012aa]
shl eax, 8
lea edi, [eax + edx]
mov dx, word [0x64b0b0]
mov eax, dword [0x64ac60]
push edx
push eax
call fcn.004017f0
movsx ecx, word [edi*4 + 0x624c34]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x94]
fild dword [esp + 0x20]
mov dword [esp + 0x20], ecx
xor edx, edx
fild dword [esp + 0x20]
mov dx, word [eax]
mov dword [esp + 0x20], edx
fmulp st(1)
fild dword [esp + 0x20]
fdivp st(1)
call fcn.004d7580
fild dword [esp + 0x28]
mov ecx, dword [esp + 0x30]
mov esi, eax
add esi, ecx
fdiv qword [esp + 0x40]
neg esi
call fcn.004d7580
push ebx
push eax
mov dword [esp + 0x30], eax
call fcn.004021e0
mov ecx, dword [esp + 0x84]
add esi, eax
push ecx
push esi
call fcn.00412540
mov dx, word [0x64b0b0]
mov dword [esp + 0x8c], eax
mov eax, dword [0x64ac60]
push edx
push eax
call fcn.004017f0
movsx ecx, word [edi*4 + 0x624c36]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xac]
fild dword [esp + 0x38]
mov dword [esp + 0x38], ecx
xor edx, edx
fild dword [esp + 0x38]
fmulp st(1)
mov dx, word [eax]
mov dword [esp + 0x38], edx
fild dword [esp + 0x38]
fdivp st(1)
call fcn.004d7580
mov ecx, dword [esp + 0x48]
mov esi, eax
mov eax, dword [esp + 0x6c]
add esi, ecx
mov ecx, dword [esp + 0x40]
add esi, eax
push ebx
push ecx
neg esi
call fcn.004021e0
mov edx, dword [esp + 0xa4]
add esi, eax
push edx
push esi
call fcn.00412550
shl edi, 4
mov dword [esp + 0xac], eax
push ebx
mov eax, dword [edi + 0x64b480]
push eax
call fcn.004021e0
mov cx, word [0x64b0b0]
mov edx, dword [0x64ac60]
mov dword [esp + 0x50], eax
add esp, 0x40
fild dword [esp + 0x10]
push ecx
push edx
fstp qword [esp + 0x20]
call fcn.004017f0
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
xor eax, eax
mov ax, word [ecx]
fmul qword [esp + 0x20]
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
fdivp st(1)
call fcn.004d7580
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x88]
add eax, esi
push edx
neg eax
push eax
call fcn.00412540
mov dword [esp + 0x90], eax
mov eax, dword [edi + 0x64b478]
push ebx
push eax
call fcn.004021e0
mov cx, word [0x64b0b0]
mov edx, dword [0x64ac60]
mov dword [esp + 0x28], eax
push ecx
fild dword [esp + 0x2c]
push edx
fstp qword [esp + 0x38]
call fcn.004017f0
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x30], eax
fild dword [esp + 0x30]
xor eax, eax
mov ax, word [ecx]
fmul qword [esp + 0x38]
mov dword [esp + 0x30], eax
fild dword [esp + 0x30]
fdivp st(1)
call fcn.004d7580
mov edx, dword [esp + 0x60]
add eax, esi
neg eax
push edx
push eax
call fcn.00412550
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x90]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x4c]
xor ecx, ecx
add esp, 0x28
mov cx, word [0x651900]
inc eax
add edi, 8
add esi, 2
cmp eax, ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], edi
mov dword [esp + 0x68], esi
jl 0x40b691
mov eax, dword [0x649838]
mov esi, dword [ebp + 0x10]
test eax, eax
je 0x40b95b
mov edx, dword [esp + 0x80]
mov ecx, dword [0x4e58c4]
add esi, edx
cmp ecx, 0xc0000001
je 0x40b94b
mov eax, dword [esp + 0x6c]
sub eax, edx
cmp eax, ecx
jle 0x40b94b
sub eax, ecx
add esi, eax
mov eax, dword [0x64b074]
mov ecx, esi
sub ecx, edx
cmp ecx, eax
jle 0x40b95b
lea esi, [edx + eax]
mov dx, word [0x64b0b0]
mov eax, dword [0x64b0a4]
push edx
push eax
call fcn.004017f0
mov ecx, dword [esp + 0x7c]
mov edx, dword [0x4e58c4]
push ecx
mov ecx, dword [esp + 0xa8]
sub esi, eax
sub edx, ecx
add edx, esi
mov dword [ebp + 0x10], esi
push edx
mov dword [esp + 0x9c], esi
call fcn.00412550
mov edi, dword [ebp + 8]
mov dword [0x4e58c4], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0xac], esi
mov esi, dword [esp + 0x24]
add esp, 0x10
mov dword [0x4e58c0], eax
and esi, 0xffff
mov eax, dword [0x4fef8c]
lea ecx, [esi + esi*4]
lea esi, [esi + ecx*2]
shl esi, 2
mov dword [esp + 0x28], esi
mov ecx, dword [esi + eax + 0xc]
test ecx, ecx
jl 0x40b9e1
mov edx, dword [esp + 0x3c]
mov ecx, dword [ebp + 0x10]
sub ecx, edx
mov dword [ebp + 0x10], ecx
cmp word [esi + eax + 2], 4
je 0x40ba35
test byte [ebp + 0xc], 8
je 0x40ba35
mov ecx, dword [esp + 0x7c]
mov edx, dword [edi + 0x10]
lea eax, [esp + 0x4a]
push eax
push ebx
push 0x4e5160
push ecx
push edx
call fcn.00405870
mov eax, dword [0x4fef8c]
mov edx, dword [ebp + 0x14]
push 0
push 0xffffffffffffffff
lea ecx, [esi + eax + 6]
mov eax, dword [ebp + 0x10]
push 1
push ecx
sub edx, dword [esp + 0x80]
push edx
push eax
push edi
call fcn.00401b10
mov eax, dword [0x4fef8c]
add esp, 0x30
mov ecx, dword [esi + eax + 0xc]
test ecx, ecx
jge 0x40ba49
mov ecx, dword [esp + 0x3c]
mov eax, dword [ebp + 0x10]
add eax, ecx
mov dword [ebp + 0x10], eax
mov eax, dword [esp + 0x64]
cmp ax, 0xffff
je 0x40ba64
mov ecx, dword [esp + 0x2c]
and eax, 0xffff
cmp ecx, eax
jne 0x40c2c4
mov al, byte [ebp + 0xc]
mov dword [esp + 0x64], 0xffff
test al, 8
je 0x40bb7f
cmp word [0x651900], 0
mov dword [esp + 0x14], 0
jbe 0x40bb7f
mov eax, dword [esp + 0x58]
mov dword [esp + 0x20], 0x651670
fild dword [ebp + 0x14]
lea edx, [eax + eax*2]
mov esi, 0x651478
mov dword [esp + 0x10], edx
fstp qword [esp + 0x30]
lea eax, [esp + 0x4a]
push eax
xor eax, eax
mov ax, word [esi]
push ebx
push 0x4e5160
lea ecx, [eax + eax*2]
mov eax, dword [edi + 0x10]
mov dx, word [ecx*2 + 0x5012a8]
add dx, word [esp + 0x1c]
add edx, 0x6a
push edx
push eax
call fcn.00405870
xor eax, eax
add esp, 0x14
mov ax, word [esi]
push 0
push 0xffffffffffffffff
lea ecx, [eax + eax*2]
mov eax, dword [esp + 0x28]
push 1
lea edx, [ecx*2 + 0x5012aa]
mov ecx, dword [eax + 4]
imul ecx, dword [0x655b1c]
mov dword [esp + 0x24], ecx
push edx
fild dword [esp + 0x28]
fmul qword [esp + 0xc0]
fsubr qword [esp + 0x40]
call fcn.004d7580
mov edx, dword [0x655b18]
push eax
mov eax, dword [esp + 0x34]
push ebx
imul edx, dword [eax]
mov dword [esp + 0x30], edx
fild dword [esp + 0x30]
fmul qword [esp + 0xc8]
call fcn.004d7580
push eax
call fcn.004021e0
mov edx, dword [esp + 0xa8]
add esp, 8
add eax, edx
push eax
push edi
call fcn.00401b10
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
add ecx, 8
add esp, 0x1c
mov dword [esp + 0x20], ecx
xor ecx, ecx
mov cx, word [0x651900]
inc eax
add esi, 2
cmp eax, ecx
mov dword [esp + 0x14], eax
jl 0x40baac
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x40bbac
cmp word [0x651900], 0
jne 0x40bbac
mov edx, dword [esp + 0x28]
mov eax, dword [0x4fef8c]
cmp word [edx + eax + 2], 4
jne 0x40bbac
mov dword [0x4e58c0], 0
mov eax, dword [esp + 0x8c]
mov ecx, dword [0x4e58c0]
sub eax, ecx
mov dword [ebp + 0x10], eax
jmp 0x40c2bd
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x40bda1
cmp esi, 0x59
jg 0x40bd80
mov eax, dword [0x649838]
test eax, eax
je 0x40bd80
mov ecx, dword [esp + 0x2c]
cmp ecx, 2
jl 0x40bc69
cmp esi, 0x52
jne 0x40bc69
mov edx, dword [esp + 0x54]
mov ax, word [edx]
cmp ax, 0x71
je 0x40bc06
cmp ax, 0x72
jne 0x40bc69
mov eax, dword [esp + 0x4c]
cmp word [eax + ecx*2 - 2], 0x5a
jne 0x40bc69
cmp word [eax + ecx*2 - 4], 0x81
jne 0x40bc69
mov edx, dword [0x64ab3c]
xor ecx, ecx
fild dword [0x64ac60]
mov cx, word [edx + 0xa400]
mov ax, word [0x64b0b0]
mov dword [esp + 0x14], ecx
push ebx
fmul qword [0x4dc2c0]
fild dword [esp + 0x18]
push eax
fdivp st(1)
call fcn.004d7580
push eax
call fcn.004017f0
add esp, 8
push eax
call fcn.004021e0
mov ecx, dword [esp + 0x44]
add esp, 8
sub ecx, eax
mov dword [esp + 0x3c], ecx
mov ecx, esi
mov eax, esi
shl ecx, 9
shl eax, 8
lea edx, [ecx + 0x626a78]
xor ecx, ecx
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x54]
mov dword [esp + 0x18], eax
push ebx
mov cx, word [edx]
add ecx, eax
movsx eax, word [ecx*4 + 0x633000]
push eax
call fcn.004021e0
mov cx, word [0x64b0b0]
mov edx, dword [0x64ac60]
mov dword [esp + 0x18], eax
push ecx
fild dword [esp + 0x1c]
push edx
fstp qword [esp + 0x40]
call fcn.004017f0
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
xor eax, eax
add esp, 0x10
mov ax, word [ecx]
fmul qword [esp + 0x30]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fdivp st(1)
call fcn.004d7580
mov ecx, dword [esp + 0x3c]
sub ecx, eax
mov eax, dword [0x4e58c4]
cmp eax, 0xc0000001
je 0x40bd04
cmp ecx, eax
jle 0x40bd04
sub eax, ecx
mov ecx, dword [esp + 0x3c]
add ecx, eax
mov dword [esp + 0x3c], ecx
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x18]
xor edx, edx
push ebx
mov dx, word [eax]
mov eax, dword [0x4e5148]
add edx, ecx
movsx ecx, word [edx*4 + 0x633002]
sub ecx, eax
push ecx
call fcn.004021e0
mov dx, word [0x64b0b0]
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
mov eax, dword [0x64ac60]
push edx
push eax
fstp qword [esp + 0x28]
call fcn.004017f0
mov edx, dword [esp + 0x24]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
xor ecx, ecx
add esp, 0x10
mov cx, word [edx]
fmul qword [esp + 0x18]
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fdivp st(1)
call fcn.004d7580
neg eax
mov dword [0x4e58c4], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x9c], eax
mov cx, word [0x64b0b0]
mov edx, dword [0x64b0a4]
push ecx
push edx
call fcn.004017f0
mov ecx, dword [esp + 0x44]
add esp, 8
add ecx, eax
mov dword [esp + 0x3c], ecx
cmp word [0x626a6c], 0x7f89
je 0x40bdb8
mov eax, dword [esp + 0x3c]
mov ecx, dword [ebp + 0x10]
sub ecx, eax
mov dword [ebp + 0x10], ecx
test byte [ebp + 0xc], 8
je 0x40c2a3
xor eax, eax
cmp esi, 0x64
mov dword [esp + 0x24], eax
mov dword [esp + 0x40], eax
jl 0x40c1cf
cmp dword [esp + 0x7c], 0x66
jge 0x40c1cf
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0x94]
xor esi, esi
cmp word [ecx + edx], si
jbe 0x40be65
test esi, esi
jne 0x40be13
mov ecx, dword [edi + 0x10]
lea eax, [esp + 0x4a]
push eax
push ebx
push 0x4e5160
push 0x64
push ecx
call fcn.00405870
add esp, 0x14
inc esi
mov eax, dword [ebp + 0x14]
mov ecx, esi
push 0
imul ecx, dword [esp + 0xc8]
push 0xffffffffffffffff
lea edx, [esp + 0x82]
push 1
push edx
mov edx, dword [esp + 0x4c]
push eax
mov eax, dword [ebp + 0x10]
sub edx, ecx
add edx, eax
mov byte [esp + 0x8e], 0xb3
push edx
push edi
call fcn.00401b10
mov ecx, dword [esp + 0xe4]
mov edx, dword [esp + 0xb0]
xor eax, eax
add esp, 0x1c
mov ax, word [ecx + edx]
cmp esi, eax
jl 0x40bdf6
mov edx, dword [esp + 0x54]
mov ax, word [edx]
mov cx, ax
shr cx, 8
test cl, cl
je 0x40be90
movzx ax, al
and ecx, 0xff
mov word [edx], ax
mov dword [esp + 0xbc], ecx
jmp 0x40c1cf
mov ecx, dword [esp + 0x7c]
and eax, 0xffff
shl ecx, 8
add ecx, eax
mov al, byte [ecx*2 + 0x4d9428]
mov cl, al
mov byte [esp + 0x7b], al
and cl, 1
mov byte [esp + 0x73], cl
jne 0x40bebc
test al, 2
je 0x40c1cf
mov eax, dword [esp + 0x2c]
test eax, eax
jle 0x40c1cf
mov edx, dword [esp + 0x4c]
lea ecx, [edx + eax*2 - 2]
mov dword [esp + 0x14], ecx
mov cx, word [ecx]
cmp cx, 0x20
je 0x40c1cf
xor esi, esi
and ecx, 0xffff
mov si, word [edx + eax*2 - 4]
mov dword [esp + 0x50], eax
shl esi, 8
add esi, ecx
mov cl, byte [esi*2 + 0x4c9428]
test cl, 3
je 0x40bf46
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x50]
test edx, edx
jle 0x40bf3d
cmp word [eax], 0x20
je 0x40bf3d
mov esi, edx
sub eax, 4
xor edx, edx
xor ecx, ecx
mov dx, word [eax - 2]
mov cx, word [eax]
shl edx, 8
add edx, ecx
sub esi, 2
mov dword [esp + 0x50], esi
mov cl, byte [edx*2 + 0x4c9428]
test cl, 3
jne 0x40bf07
test cl, 3
jne 0x40c1cf
mov dl, cl
and dl, 4
jne 0x40bf56
test cl, 0x18
jne 0x40bf56
xor eax, eax
jmp 0x40bf5b
mov eax, 1
mov esi, dword [edi + 0x10]
mov dword [esp + 0x10], esi
mov esi, dword [0x64b064]
test eax, eax
mov dword [edi + 0x10], esi
je 0x40c0ac
mov al, byte [esp + 0x73]
test al, al
je 0x40bfdb
test dl, dl
je 0x40bfdb
mov dx, word [0x64b0b0]
mov eax, dword [0x64ac60]
push edx
push eax
call fcn.004017f0
cdq
idiv dword [edi + 0x264]
mov ecx, dword [0x6202c8]
add esp, 8
push ecx
mov ecx, edi
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
fstp qword [esp + 0x1c]
call fcn.0040c330
mov edx, dword [0x64a0b8]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
and edx, 0xffff
mov dword [esp + 0x14], edx
fmul qword [esp + 0x18]
fild dword [esp + 0x14]
jmp 0x40c09f
mov al, byte [esp + 0x7b]
and al, 2
je 0x40c03f
test cl, 8
je 0x40c03f
mov ax, word [0x64b0b0]
mov ecx, dword [0x64ac60]
push eax
push ecx
call fcn.004017f0
cdq
idiv dword [edi + 0x264]
mov edx, dword [0x64ab38]
add esp, 8
mov ecx, edi
push edx
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
fstp qword [esp + 0x1c]
call fcn.0040c340
mov dword [esp + 0x14], eax
mov eax, dword [0x64a0b8]
fild dword [esp + 0x14]
and eax, 0xffff
mov dword [esp + 0x14], eax
fmul qword [esp + 0x18]
fild dword [esp + 0x14]
jmp 0x40c09f
test al, al
je 0x40c0ac
test cl, 0x10
je 0x40c0ac
mov cx, word [0x64b0b0]
mov edx, dword [0x64ac60]
push ecx
push edx
call fcn.004017f0
cdq
idiv dword [edi + 0x264]
add esp, 8
mov ecx, edi
mov dword [esp + 0x14], eax
mov eax, dword [0x620954]
fild dword [esp + 0x14]
push eax
fstp qword [esp + 0x1c]
call fcn.0040c340
mov ecx, dword [0x64a0b8]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
and ecx, 0xffff
mov dword [esp + 0x14], ecx
fmul qword [esp + 0x18]
fild dword [esp + 0x14]
fdivp st(1)
call fcn.004d7580
neg eax
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x54]
add edx, 0xffffff9c
xor eax, eax
mov ax, word [ecx]
mov ecx, edi
shl edx, 8
add edx, eax
xor eax, eax
mov ax, word [edx*2 + 0x64ac64]
push eax
call fcn.0040c330
mov dword [esp + 0x14], eax
mov eax, dword [0x64ac60]
cdq
fild dword [esp + 0x14]
idiv dword [edi + 0x260]
mov ecx, dword [0x64a0b8]
and ecx, 0xffff
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
mov dword [esp + 0x14], ecx
fmulp st(1)
fild dword [esp + 0x14]
fdivp st(1)
call fcn.004d7580
mov dx, word [0x64b0b0]
push edx
push eax
call fcn.004017f0
mov esi, eax
mov eax, dword [esp + 0xc4]
add esp, 8
sub eax, 0
je 0x40c17b
dec eax
je 0x40c16f
dec eax
jne 0x40c1bd
mov ax, word [0x64b0b0]
mov ecx, dword [esp + 0x4c]
push eax
mov eax, dword [esp + 0x54]
push 1
mov dx, word [ecx + eax*2 - 2]
mov ax, word [ecx + eax*2 - 4]
push edx
push eax
push edi
call fcn.00409060
add esp, 0x10
push eax
call fcn.004017f0
sub eax, esi
push ebx
push eax
call fcn.004021e0
add esp, 0x10
jmp 0x40c1b9
push ebx
push esi
call fcn.004021e0
add esp, 8
jmp 0x40c1b9
mov cx, word [0x64b0b0]
mov eax, dword [esp + 0x50]
push ecx
mov ecx, dword [esp + 0x50]
push 1
mov dx, word [ecx + eax*2 - 2]
mov ax, word [ecx + eax*2 - 4]
push edx
push eax
push edi
call fcn.00409060
add esp, 0x10
push eax
call fcn.004017f0
sub eax, esi
push ebx
push eax
call fcn.004021e0
cdq
sub eax, edx
add esp, 0x10
sar eax, 1
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0x10]
mov dword [esp + 0xbc], 0
mov dword [edi + 0x10], ecx
mov eax, dword [edi + 0x128]
test eax, eax
mov eax, 0x3e8
jne 0x40c1e0
mov eax, ebx
mov ecx, dword [edi + 0x10]
lea edx, [esp + 0x4a]
push edx
push eax
mov eax, dword [esp + 0x84]
push 0x4e5160
push eax
push ecx
call fcn.00405870
mov edx, dword [esp + 0x68]
add esp, 0x14
mov al, byte [edx]
mov byte [esp + 0xd0], al
mov eax, dword [edi + 0x128]
test eax, eax
je 0x40c27b
xor ecx, ecx
mov edx, 0x4e51b4
mov eax, dword [0x655e8c]
cmp ax, 0x384
jbe 0x40c22f
mov eax, 0x384
jmp 0x40c234
and eax, 0xffff
cmp ecx, eax
jae 0x40c27b
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0xd0]
shl eax, 8
and esi, 0xff
add eax, esi
movsx esi, word [edx]
cmp esi, eax
je 0x40c25b
inc ecx
add edx, 2
jmp 0x40c21d
mov edx, dword [esp + 0x24]
mov eax, dword [ebp + 0x14]
push 0
push ecx
mov ecx, dword [esp + 0x5c]
push 1
add edx, eax
push ecx
mov ecx, dword [esp + 0x50]
push edx
mov edx, dword [ebp + 0x10]
add ecx, edx
push ecx
jmp 0x40c29a
mov ecx, dword [esp + 0x24]
mov edx, dword [ebp + 0x14]
mov eax, dword [esp + 0x54]
push 0
push 0xffffffffffffffff
push 1
add ecx, edx
push eax
mov eax, dword [esp + 0x50]
push ecx
mov ecx, dword [ebp + 0x10]
add eax, ecx
push eax
push edi
call fcn.00401b10
add esp, 0x1c
cmp word [0x626a6c], 0x7f89
jne 0x40c2ba
mov edx, dword [esp + 0x3c]
mov eax, dword [ebp + 0x10]
add eax, edx
mov dword [ebp + 0x10], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0xa4]
add eax, 2
cmp eax, ecx
mov dword [esp + 0x2c], eax
jl 0x40a62b
mov edx, dword [edi + 0x10]
lea ecx, [esp + 0x4a]
push ecx
push 0
push 0
push 0
push edx
call fcn.00405870
mov eax, dword [esp + 0x9c]
push eax
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
mov ecx, dword [esp + 0x64]
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
mov edx, dword [esp + 0xb0]
push edx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
mov eax, dword [ebp + 0x10]
mov ecx, dword [esp + 0xc0]
add esp, 0x20
sub eax, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret